Struts 2 ----Action获取servlet对象及后续重定向操作
2015-09-07 10:45
666 查看
Why?
Action作为MVC框架中的Control层,一个类似于Servlet的java对象,通过继承Action接口,在execute方法中处理数据和一些相关的业务逻辑,然后把最终处理结果和需要返回的对象放在Servlet对象中【如request或者session】,最后根据配置返回到对应result跳转到指定页面。How?
Action通过actionContext获取Servlet对象:publicString execute() throws Exception { if("admin".equals(user.getUserName())&&"admin".equals(user.getPassword())) { //将登陆信息设置到sesseion中,判断 session不为空,方可对某界面显示 ActionContext.getContext().getSession().put("user",username); //获得application对象 ActionContext.getContext().getApplication().put("user",username); //获得request对象 ActionContext.getContext().put("user",username); //获得request 参数 ActionContext.getContext().getParameters().get(username); return SUCCESS; }else { return ERROR; } }
Then?
获取Servlet对象后,以Session为例:当Action获得Session对象后,用户访问其他界面时,先判断session中是否存在用户,或用户是否具有访问该页面的权限,判断后进行转发或重定向到指定页面
loginAction中获取Session对象
public String execute()throws Exception { if("admin".equals(user.getUserName())&&"admin".equals(user.getPassword())) { //将登陆信息设置到sesseion中,判断 session不为空,方可对某界面显示 ActionContext.getContext().getSession().put("user",username); } }
新建Session_RedirectAction,判断session中是否存在该用户
public classSession_Redirect implements Action{ public String execute() throws Exception { //session中不含有user对象 if(ActionContext.getContext().getSession().get("user")==null) { //重定向到登录界面 return LOGIN; } return SUCCESS; } }
3、在Struts.xml中配置Session_RedirectAction,进行页面跳转
<actionname="Session_Redirect"class="com.struts2.Session_Redirect"> <result name="login" type="redirect">/login.jsp</result> <result>/session_redirect.jsp</result> </action>
注意:result标签 type值类型
Type | 描述 | 访问方式 |
Dispatcher | 默认转发到指定页面 | |
redirect | 可定向到任何web资源 如jsp或action | 加上后缀即可。如 Session_Redirect.action Login.jsp |
redirectAction | 直接重定向到action | 无需后缀,更灵活 |
自定义 | 可在struts_default.xml中自定义type 值 | Type=“abc” |
<packagename="struts-default" abstract="true"> <result-types> <result-typename="chain"class="com.opensymphony.xwork2.ActionChainResult"/> <result-typename="dispatcher"class="org.apache.struts2.dispatcher.ServletDispatcherResult"default="true"/> <result-typename="freemarker"class="org.apache.struts2.views.freemarker.FreemarkerResult"/> <result-typename="httpheader"class="org.apache.struts2.dispatcher.HttpHeaderResult"/> <result-typename="redirect"class="org.apache.struts2.dispatcher.ServletRedirectResult"/> <result-typename="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <result-typename="stream"class="org.apache.struts2.dispatcher.StreamResult"/> <result-typename="velocity"class="org.apache.struts2.dispatcher.VelocityResult"/> <result-type name="xslt"class="org.apache.struts2.views.xslt.XSLTResult"/> <result-typename="plainText"class="org.apache.struts2.dispatcher.PlainTextResult" /> </result-types> </package>
相关文章推荐
- Struts(23)校验器
- Struts(20)拦截器(Interceptor)
- 电量统计之一:PowerProfile.java与power_profile.xml
- Java中的for循环
- 理解 Spring AOP的含义
- Eclipse+maven+JUnit
- Java获取某个月的天数
- java 线程的几种状态
- [Java Concurrency in Practice]第十二章 并发程序的测试
- MyEclipse2015 javaweb项目从svn检出后变成java项目,clean之后不能编译,解决办法是
- Spring4+Hibernate4整合经验:事务配置导致的java.lang.NoSuchMethodError异常
- 你的Java代码对JIT编译友好么?
- 工作区的文件状态错误导致eclipse无响应
- springmvc中执行异步任务
- 快速排序的递归非递归实习java
- 【springmvc+mybatis项目实战】杰信商贸-7.生产厂家新增
- Java中面向对象思想分析
- 【Java】J2SE
- MyBatis学习笔记(十二)spring与Mybatis整合事务
- java unicode与汉字中文互转