一、Struts2 是java的一个框架技术,
1、新建一个web项目
2、导入开发环境包
3、配置web.xml 配置过滤器加入struts2的拦截器
4、Src下建struts.xml文件
5、新建一个类Action 定义要获取的变量名称,生成set get 方法 ,新建一个String execute()方法;
6、在struts.xml中配置进行关联
>
如果配置文件过多,可以这样分开写
<struts>
<include file="">include>
struts>
二、Struts2工作组件
Servlet过滤器(响应和处理用户请求)
ActionMapper action映射解析器 定义http请求与action调用之间的映射机制
根据用户请求生成向actionProxy请求action的uri
Actionproxy action代理对象,servlet过滤器将请求的控制权交给actionproxy
Actionproxy会根据uri找到action对象,创建actioninvocation对象执行相应的action处理方法
actioninvocation对象 实现对action处理方法和拦截器的调用
Result对象
三、Struts2处理流程
1、加载类(StrutsPrepareAndExecuteFilter)
2、读取配置(struts配置文件中的action)
3、派发请求(客户端发送请求)
4、调用action(filterDispatcher从struts配置文件中读取与之相对应的action)
5、启用拦截器(WebWork拦截器链自动对请求应用通用功能)
6、处理业务(回调Actoin的execute方法)
7、返回响应(通过execute方法将信息返回到FilterDispatcher)
8、查找相应(根据配置查找响应是success还是error决定跳转到什么jsp)
9、响应用户(jsp页面)
四、Struts2中常用的方法
implements ServletRequestAware
Private HttpServletRequest request;
Public void setServletRequest(HttpServletRequest arg){
This.request=arg;
}//声明一个HttpServletRequest 必须重写一个方法
接下来可以直接用request.setAttribute();
或者另一种写法:
ActionContext ac =ActionContext.getContext();
// 如果是session那么必须用ac.getSession()
// ac.getSession().put("error"," 用户名或密码错误");
// ac.put("error", " 用户名或密码错误");//这个相当于request。setAttribute();
或者:
ServletActionContext.getRequest().getSession().setAttribute();
Jsp页面中获取参数可以${error}或者${sessionScope/requestScopeS.error}
在Action类中定义表单的属性,两者属性名称必须一致,提供get set 方法 即可接受传来的参数
可以这样写
先写一个javaBean 将传递参数封装成一个类
如:class user{
Private string name;
Private string pass;
Public void setname(string name){
This.name=name;
}
Public void setpass(string pass){
This.pass=pass;
}
Public String getname(){}
Public String getpass(){}
}
然后在Action的类中 定义该类的对象就好了
Private user user;
Public user getuser(){
Return user;
}
Public void setuser(user user){
This.user=user;
}
但是在jsp中命名textfiled中name属性就为“user.name”
关于struts2页面取值方式
<%@taglib prefix="s" uri="/struts-tags"%>
1.Action中以request.setAttribute("xs0101",xs0101);方式传给页面
struts2标签方式:
注意“#request” 这是从request中取值,不加这个你发现你取不到值。
EL表达式方式:${xs0101.xsxm}
可以直接取
2.Action中以setXs0101(Xs0101 xs0101);方法 方式传给页面
struts2标签方式:
可以直接取
EL表达式方式:${xs0101.xsxm}
可以直接取
这是路径的重定向配置:
<actionname="*"class="com.struts2.action.LoginAction" ethod="{1}">
<result name="error" type="redirect" >/index.jspresult>
action>
如果不用type="redirect"那么地址栏显示的是一个action结尾
重定向到一个action:
<result name="error" type="redirectAction" >
<param name="namespace">param>
<param name="actionName">sinaparam>
result>