JavaWeb -- Struts 自定义拦截器, 登录权限拦截
1. 自定义拦截器, 登录权限拦截
login.jsp 登录JSP
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>login.jsp</title>
</head>
<body>
<s:form action="LoginAction_reg" name="login">
<s:textfield name="name" label="UserName" />
<s:submit />
</s:form>
</body>
</html>
LoginAction.java 登录处理action
/**
* 登录action
*/
public class LoginAction extends ActionSupport implements SessionAware{
private static final long serialVersionUID = -6933309304624396640L; public String name; /* 接受session中的map */
private Map<String, Object> sessionMap; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String reg() {
if("tom".equals(name)){
//存放登录信息
sessionMap.put("username", name);
}
else{
//回到登录页面
return LOGIN ;
}
return "success";
} public String toLoginView() {
System.out.println("toRegView");
return "loginView";
} /**
* 注入session map
*/
public void setSession(Map<String, Object> session) {
this.sessionMap = session ;
}
}
LoginInterceptor.java 拦截器
/**
* 登录拦截器
*/
public class LoginInterceptor implements Interceptor {
private static final long serialVersionUID = 286019271181543787L; public void destroy() {
} public void init() {
} public String intercept(ActionInvocation invocation) throws Exception {
Object action = invocation.getAction();
//如果是达到登录或者注册的action,则直接放行
if(action instanceof LoginAction || action instanceof RegAction){
return invocation.invoke();
} Map<String, Object> sessionMap = invocation.getInvocationContext().getSession();
//如果没有登录
if(sessionMap.get("username") == null){
return "login" ;
}
//放行
else{
return invocation.invoke();
}
}
}
login.xml ,action interceptor 注册配置, 需要加到struts.xml (include)
<?xml version="1.0"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="LoginPkg" namespace="/login" extends="struts-default">
<interceptors>
<!-- 注册拦截器 -->
<interceptor name="loginInterceptor" class="cn.itcast.struts2.interceptor.LoginInterceptor" /> <!-- 自定义拦截器栈 -->
<interceptor-stack name="loginStack">
<interceptor-ref name="loginInterceptor" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<!-- 定义默认栈 -->
<default-interceptor-ref name="loginStack" /> <!-- 定义全局结果 -->
<global-results>
<result name="login">/login.jsp</result>
</global-results> <!-- 注册登录action -->
<action name="LoginAction_*" class="cn.itcast.struts2.interceptor.LoginAction" method="{1}">
<result name="success">/success.jsp</result>
<result name="loginView">/login.jsp</result>
</action>
</package>
</struts>
JavaWeb -- Struts 自定义拦截器, 登录权限拦截的更多相关文章
- struts自己定义拦截器--登录权限控制
说明:该自己定义的拦截器实现用户登录的权限控制. login.jsp--->LoginAction--重定向-->MainAction--->main.jsp 一.1.整体的步骤: ...
- struts2学习(6)自定义拦截器-登录验证拦截器
需求:对登录进行验证,用户名cy 密码123456才能登录进去: 登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.mod ...
- 基于Springmvc的登录权限拦截器
1.什么是拦截器 拦截器是指通过统一拦截从浏览器发往服务端的请求来完成功能的增强. 使用场景:解决请求的共性问题(如:乱码问题,权限验证问题等) 2.拦截器的基本工作原理 springmvc可以通过配 ...
- Struts2(十四)拦截器实现权限管理
一.认识拦截器 拦截器也是一个类 拦截器可以在Action被调用之前和之后执行代码 框架很多核心功能是拦截器实现的 拦截器的特点: 拦截器自由组合,增强了灵活性.扩展性.有利于系统解耦 拦截器可以拦截 ...
- Struts2使用拦截器完成权限控制示例
http://aumy2008.iteye.com/blog/146952 Struts2使用拦截器完成权限控制示例 示例需求: 要求用户登录,且必须为指定用户名才可以查看系统中某个视图资源:否 ...
- Struts2拦截器登录验证
Struts2拦截器 Struts2拦截器的概念和Spring Mvc拦截器一样. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截 ...
- 附:Struts2-CRM,拦截器实现权限访问
拦截器代码: package mycrm.interceptor; import org.apache.struts2.ServletActionContext; import com.opensym ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Struts2之类范围拦截器和方法拦截器
1.Struts2拦截器的体系结构 Struts2拦截器最大的特点是其透明性,即用户感觉不到它的存在,但我们在使用Struts2框架时,拦截器时时刻刻都在帮助我们处理很多事情. 包括: 文件上传 表单 ...
随机推荐
- 初识yeoman
最近开始新项目,在项目构建上面寻找合适的东西,grunt,bower到发现yeoman;学习了下,把一些东西记录下来然留着以后用. 1.什么是Yeoman Yeoman是Google的团队和外部贡献者 ...
- cannot be cast to javax.servletFilter
java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast ...
- GetDesktopWindow和GetWindow区别
GetWindow The GetWindow function retrieves a handle to a window that has the specified relationship ...
- 170214、mybatis一级和二级缓存
mybatis一级缓存是指在内存中开辟一块区域,用来保存用户对数据库的操作信息(sql)和数据库返回的数据,如果下一次用户再执行相同的请求, 那么直接从内存中读数数据而不是从数据库读取. 其中数据的生 ...
- CodeForces 156B Suspects(枚举)
B. Suspects time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...
- Spring 框架的事务管理
1. Spring 框架的事务管理相关的类和API PlateformTransactionManager 接口: 平台事务管理器(真正管理事务的类); TransactionDefinition 接 ...
- Web 资源介绍
软件体系结构 C/S, client/server 特点: 该结构的软件, 客户端和服务端都需要编写 开发成本较高,维护较为麻烦 好处: 客户端在本地可以分担一部分运算 B/S, browser/se ...
- 解决:IDEA unable to import maven project see logs for details问题+java http请求报java.net.SocketException: Permission denied:connect 问题
背景:用IDEA写了一个java发送http请求的maven项目. 运行时,项目报java.net.SocketException: Permission denied:connect问题: 修改po ...
- LAMP兄弟连 视频教程集
电驴的资源:http://www.verycd.com/topics/2843130/?ref=msg
- Django - ModelForm组件
一.ModelForm组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库中有这样一张学生表, ...