一.struts.xml的基本配置
第一步:在web.xml中配置struts2过滤器
<filter>
<filter-name>struts2Filter</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
第二步:struts.xml文件配置
2.1 package配置
1.name属性:定义一个包的名称,它必须是唯一的
2.namespace属性:主要是与action标签的name属性联合使用来确定一个action的访问路径
3.extends属性:指定继承自那个包.一般值是 struts-default 另外json-default也比较常用
4.abstruct属性:它代表当前包是一个抽象的,主要用于被继承
<package name="default" namespace="/" extends="struts-default">
</package>
2.2 action配置
1.name属性:主要是用于package的namespace联合使用来确定一个action的访问路径
2.class属性:用于指示当前的action类
3.method属性:用来指示当前action类中的那个方法执行
<action name="struts2" class="cn.itheima.web.action.Struts2Action"></action>
2.3 result配置
他主要用于指示视图结果
1.name属性:作用与action类的method方法的分返回值进行匹配,来确定跳转路径
2.type属性:作用是用于指定跳转方式
<action name="login" class="cn.itheima.web.action.LoginAction" method="login">
<result name="success" type="redirect">/success.jsp</result>
<result name="failer">/failer.jsp</result>
</action>
二. Action类的创建(共有三种方式,只谈两种)
1. 创建一个类实现一个Action接口(com.opensymphony.xwork2.Action)
在Action接口中,定义了五个常量,一个execute方法
五个常量:它们默认的五个结果视图<result name="">
ERROR:错误视图
INPUT:它是strust2框架中intercept中发现问题后会访问的一个视图
LOGIN:它是一个登陆视图,可以在权限操作中使用
NONE:它代表的是一个null,什么都不做(也不会做跳转操作)
SUCCESS:这是一个成功视图
优点:耦合度低 缺点:还需自己来完成功能
2. 创建一个类继承ActionSupport类(com.opensymphony.xwork2.ActionSupport)
ActionSupport类也实现了Action接口,一般在开发中会使用这种方案
优点:具有丰富的功能,例如 表单校验 错误信息设置 国际化
缺点:耦合度高
三. Struts 2框架封装数据
主要解决的问题:是在action中如何获取请求参数
主要有两种方式:
1.属性驱动
a.直接在action类中提供与请求参数匹配的属性,并且提供get/set方法.
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
b.在action类中创建一个javaBean,对其提供get/set方法.
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
<form action="${pageContext.request.contextPath}/login1" method="post">
username:<input type="text" name="user.username"><br>
password:<input type="password" name="user.password"><br>
<input type="submit" value="LOGIN">
</form>
以上两种方式的优缺点:
第一种比较简单,在实际操作我们需要将action的属性在赋值给模型(javaBean) 去操作第二种:不需要在直接将值给javaBean过程,因为直接将数据封装到了javaBean中。