一.struts2工作原理
二.struts2核心文件
web.xml文件:
任何MVC都要与web应用整合,借助于web.xml。只有配置在web.xml文件中的servlet才会被应用加载。
struts.xml文件:
Action映射,以及Action包含的Result定义,包含:
1.全局属性
2.用户请求和响应Action之间的对应关系
3.Action可能用到的参数和返回结果
4.各种拦截器的配置
struts.properties文件,
struts2全局属性文件,自动加载,包含很多key-value对,但该文件完全可以用constant元素配置于struts.xml文件中。
三.访问Servlet API
3种办法:
1.Action Context
2.实现XXXAware接口
3.ServletActionContext
例如第二种实现:
public class SuperAction extends ActionSupport implements ServletContextAware,ServletRequestAware,ServletResponseAware{
/**
*
*/
private static final long serialVersionUID = 1L;//什么用?????
protected HttpServletResponse response;//响应对象
protected HttpServletRequest request;//请求对象
protected ServletContext application;//全局对象
protected HttpSession session;//会话对象
@Override
public void setServletResponse(HttpServletResponse response) {
this.response=response;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request=request;
this.session=this.request.getSession();
}
@Override
public void setServletContext(ServletContext application) {
this.application=application;
}
}
四.动态方法调用(解决一个Action对应多个请求的处理)
3种方法:
1.指定method属性
2.感叹号方式(不推荐)
3.通配符方式
这里以第三种为实例:
<package name="users" namespace="/users" extends="default">
<action name="*_*" class="action.{1}Action" method="{2}">
<result name="login_success">/users/Users_login_success.jsp</result>
<result name="login_false">/users/Users_login.jsp</result>
<result name="logout_success">/users/Users_login.jsp</result>
<result name="input">/users/Users_login.jsp</result><!-- validate返回的结果 -->
</action>
</package>
*_*有2个通配符,例如请求的是Students_login.Action,那么对应的类(class)为:action.StudentsAction,对应的方法为login。
五.接收参数
3种方法:
1.使用Action的属性接收。 类似于:name
2.使用Domain.model接收. 类似于:user.name
3.实现modelDriven接收
以3为例:
接收数据的java文件:
public class StudentsAction extends SuperAction implements ModelDriven<students> {
private students student=new students();//一定要初始化
private static final long serialVersionUID = 7524786985348374469L;
@Override
public students getModel() {
return this.student;
}
}
发送数据的JSP文件:
<form name="addForm" action="<%=path%>/students/Students_add.action" method="post">
<table width="500" >
<tr>
<td width="30%">姓名:</td>
<td><input type="text" name="sname" /></td>
</tr><table>
JSP中,name对应Action中的student的sname,符合就接收。
六.拦截器
留白...