博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5、struct2使用登陆的时候重定向功能,如果没有登陆,重定向到登陆页面
阅读量:7117 次
发布时间:2019-06-28

本文共 2972 字,大约阅读时间需要 9 分钟。

1、实现这样一份功能,列如用户在进行某些操作的时候,如果没有登陆重定向到登陆页面

首先:我们创建一个功能操作页面,用户准备在该页面执行某些操作

在index.jsp中

<%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%>
Insert title here 登录
访问受保护的页面

然后点击之后访问mustLogin.action这个action

代码如下

package com.bjpowernode.struts2;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionContext;public class MustLoginAction implements Action {    public String execute() throws Exception {        if (ActionContext.getContext().getSession().get("user") == null) {            //重定向到登录页面            return LOGIN;        }        return SUCCESS;    }}

 

在该操作中:获得请求的session中存在的user用户名,如果用户名为空,就重定向到登陆页面

ActionContext.getContext().getSession().get("user")

我们来看下struct.xml的配置

/login.jsp

 

这里可以进行配置 result的type类型配置成redirect类型,表示重定向到/login.jsp

type的默认值为dispatcher,就是type="dispatcher,表示转发"

-->
<!--
<result name="login" type="dispatcher">/login.jsp</result>
-->
<!--
type="redirect",可以重定向到任何一个web资源,如:jsp或Action
如果要重定向到Action,需要写上后缀:xxxx.action
type="redirectAction",可以重定向到Action,不需要写后缀,此种方式更通用些
不会因为后缀的改变影响配置

上面重定向只是针对mustaction有效,我们要针对所有的action都有效,我们可以配置一个全局的重定向

/login.jsp

总结:

Struts2的Action访问Servlet API

1、可以通过ActionContext访问Servlet API,此种方式没有侵入性

2、在Struts2中默认为转发,也就是<result>标签中的type="dispatcher",type的属性可以修改为重定向

Struts的重定向有两种:
type="redirect",可以重定向到任何一个web资源,如:jsp或Action
如果要重定向到Action,需要写上后缀:xxxx.action
type="redirectAction",可以重定向到Action,不需要写后缀,此种方式更通用些
不会因为后缀的改变影响配置
3、关于Struts2的type类型,也就是Result类型,他们都实现了共同的接口Result,都实现了execute方法
他们体现了策略模式,具体Result类型参见:struts-default.xml文件:
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>
我们完全可以自己根据需求扩展Result类型
4、全局Result和局部Result

转载于:https://www.cnblogs.com/kebibuluan/p/8056308.html

你可能感兴趣的文章
06 redis中set结构及命令详解
查看>>
跟我一起数据挖掘(19)——什么是数据挖掘(2)
查看>>
10、ASP.NET MVC入门到精通——Model(模型)和验证
查看>>
vscode打造最佳的markdown编辑器
查看>>
weblogic mime-type
查看>>
探讨.net Socket支持在线连接数量
查看>>
GSAP 官方文档(结贴)
查看>>
VC++中遇到的各种数据类型BSTR、LPSTR、LPWSTR、CString、VARIANT、COleVariant 、_variant_t、CComBSTR...
查看>>
background-size background-positon合并的写法
查看>>
android ContentObserver
查看>>
ip_vs实现分析(6)
查看>>
linux创建进程和等待进程退出
查看>>
Flutter和原生应用性能对比
查看>>
微信公众号H5页面--JqueryWeui组件使用
查看>>
Angular2+,路由预加载--预先加载延迟模块
查看>>
Spring Boot In Practice (0):基础
查看>>
MyEclipse使用Git进行Push to Upstream报错 学习笔记
查看>>
CSS奇淫技巧
查看>>
MyBatis传入多个参数笔记(一)
查看>>
Redis的数据类型——探究竟
查看>>