1.Struts2是什么:
Struts2是基于MVC的WEB应用框架
Struts2=Struts1的知名度和市场+WebWork的技术
2.Struts2的优势是什么
实现MVC模式,结构清晰,Struts2替代了原先的servlet的控制层C的位置
丰富的标签(tag)(S标签库)
通过配置文件页面导航,便于后期维护,resource下的Struts.xml文件,通过进行导航跳转
与servlet API 松耦合,便于测试(把原先的HTTPDSession和HttpServletRequest从servlet API中剥离,转换成Map键值对)
3.Struts2流程分析
步骤包括:
浏览器通过URL发送请求到服务器
web.xml拦截器拦截到请求,由StrutsPrepareAndExcuteFilter核心控制器分发给Struts.xml文件
Action业务控制器进行业务逻辑操作后,return返回一个字符串对应的Struts.xml文件中resultde name
浏览器 - 服务器 - web.xml - struts.xml - Action - Struts.xml - 浏览器
4.创建业务控制器的Action方式'
共有三种:普通的Java类,实现Action借口,继承ActionSupport类,调用方法一致
5.Struts2与MVC
Struts2是基于MVC的web应用框架,他将请求和展现分开实现
M:模型层
用于处理业务逻辑关系和数据的封装传递: 例如:业务逻辑层Service实现类(数据对象模型)
v:视图层
用于显示数据和接受用户请求
例如Html,jsp
C:控制层 用于协调模型和试图
例如:servlet,Struts2(核心控制器和业务控制器)
6.Action的作用
控制业务逻辑
如果业务逻辑很复杂,可以把业务楼基层建成为业务类,在Action中调用业务类返回结果字符串(例如:Success|error\自定义字符串)
方便处理数据
例如:Action中一属性方式接受用户数据
7.Action接收数据
属性方式:
控制业务逻辑
表单参数名称必须在Action中有对应的setter以及getter
解决乱码
修修改Struts2.xml,添加代码<constant name="Struts2.i18n." value="编码格式">
页面显示
<%taglib url="/struts.tags" prefix="s"%><s:property value="属性名"/>或者
应用场景
接受的参数字段个数少的时候使用,比如对于搜索应用,接受用户输入的搜索条件
JAVAbean方式(Action接收参数)
讲模型数据从ACtion中分离出来
定义实体类com.entity,User,为实体添加属性以及set特如何getter
为Action添加实体属性以及setter和getter
User user
修改表单参数name为实体对象名.属性名
<input type="text" name="user.username"/>
取值通过<s:property value="对象名.属性名"/>的形式
<s:property value="user.userName"/>
8.使用method属性(静态调用方法)
访问Action时,默认调用的是execute()方法
可以在Action中定义多个业务方法(例如:publicStringadd(){} public String update(){})
方法签名要与二色cute()方法相同
配置多个<action>标签
method属性制定调用的方法
(例如:<action name="toAdd" class="..xxAction" method="Action中的方法名">..</action>)
9.使用动态方法调用Action业务方法
(1)DMI (dynamic method invocation)动态方法调用
所需配置:
strtus.xml中必须有所需配置
<!--配置参数:动态方法调用开关--> <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
(2)一个Action勒种可以有多个业务方法
(例如:publicStringadd(){} public String update(){})
(3)只需要配置一个<action>标签
<action name="toAdd" class="..xxAction" method="Action中的方法名">..</action>
(4)不需要使用method属性
(5)调用时指出Action名和业务方法
例如:http://localhost:8080/Struts2_01/XXX!add
10.<result>的name属性
根据Action业务方法的返回值跳转不同的结果视图
例如:
当登录成功时,Action返回字符串Sucess,则调用result的name属性值为Success的分支跳转成功页面
当登录失败时,Action返回字符串error,则调用result的name属性为error的分支跳回登录页
if("admin".equals(user.getUserName())&&"123456".equals(user.getPassword())){
本文为头条号作者发布,不代表今日头条立场。