Struts2学习-拦截器
1.新建项目user4,建立好和user3一样的目录,与之相比只是添加几个类,主要是struts.xml和action类的改变,其结果没有太大的变化
struts,xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd"> <struts>
<package name="myPack" extends="struts-default" namespace="/">
<!--定义一个拦截器-->
<interceptors>
<interceptor name="loginInterceptor" class="com.nf.action.LoginInterceptor"></interceptor>
</interceptors> <global-results>
<result name="login" type="redirectAction">userAction_loginView</result>
</global-results> <action name="userAction_*" class="com.nf.action.UserAction" method="{1}">
<result name="loginViewSuccess">/WEB-INF/jsp/loginView.jsp</result>
<result name="success">/WEB-INF/jsp/index.jsp</result>
<result name="error">/WEB-INF/jsp/error.jsp</result>
<!--使用通配符后,新版本需要加上allowed-methods-->
<allowed-methods>login,loginView</allowed-methods>
</action> <action name="testAction" class="com.nf.action.TestAction">
<!-- name="success"是result的默认值-->
<result>/WEB-INF/jsp/test.jsp</result>
<!--引用拦截器-->
<interceptor-ref name="loginInterceptor"></interceptor-ref>
<!--系统自带的拦截器也要运行,因为还有其他赋值、转换、校验、国际化等功能-->
<interceptor-ref name="defaultStack"></interceptor-ref>
</action> <action name="newTestAction" class="com.nf.action.NewTestAction">
<result>/WEB-INF/jsp/new.jsp</result>
<!--引用拦截器-->
<interceptor-ref name="loginInterceptor"></interceptor-ref>
<!--系统自带的拦截器也要运行,因为还有其他赋值、转换、校验、国际化等功能-->
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>
action类UserAction不变,新增
package com.nf.action; import com.nf.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor; import java.util.Map; /*
定义拦截器有2种办法:
1.实现Interceptor接口
2.集成AbstractInterceptor抽象类
*/
public class LoginInterceptor implements Interceptor { public void destroy() {
System.out.println("最后销毁");
} public void init() {
System.out.println("初始化");
} public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("有请求到了");
System.out.println("进行校验,判断session是否为null");
ActionContext context = ActionContext.getContext();
Map<String, Object> session = context.getSession();
User user = (User) session.get("user");
if (user!=null){
System.out.println("我是保安,检查过,此客户已经登录过");
return actionInvocation.invoke();
}else {
System.out.println("我是保安,此客户没有登录过");
return "login";
} }
}
package com.nf.action; import com.nf.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; import java.util.Map; public class TestAction extends ActionSupport {
@Override
public String execute() throws Exception {
System.out.println("保安说,已经检查过,直接进入test.jsp");
return "success"; }
}
package com.nf.action;
import com.opensymphony.xwork2.ActionSupport;
public class NewTestAction extends ActionSupport {
@Override
public String execute() throws Exception {
return "success";
}
}
地址:https://gitee.com/MuNianShi/user4.git
Struts2学习-拦截器的更多相关文章
- Struts2学习---拦截器+struts的工作流程+struts声明式异常处理
这一节我们来看看拦截器,在讲这个之前我是准备先看struts的声明式异常处理的,但是我发现这个声明式异常处理就是由拦截器实现的,所以就将拦截器的内容放到了前面. 这一节的内容是这样的: 拦截器的介绍 ...
- Struts2学习-拦截器2
1.做一个登陆页面(loginView.jsp,才用Action来访问),2.登陆成功后,可以跳转到系统的首页(index.jsp),3.首页有一个链接(testOtherAction访问其它的功能模 ...
- Struts2学习-拦截器2续
定义拦截器有2种办法:1.实现Interceptor接口2.集成AbstractInterceptor抽象类 一.方法1 ..... <struts> <package name=& ...
- Struts2【拦截器】就是这么简单
什么是拦截器 拦截器Interceptor.....拦截器是Struts的概念,它与过滤器是类似的...可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Str ...
- JavaWeb框架_Struts2_(三)---->Struts2的拦截器
2. Struts2的拦截器(使用拦截器实现权限控制) 2.1 拦截器的概述 拦截器是Struts2的核心组成部分,它可以动态的拦截Action调用的对象,类似与Servlet中的过滤器.Struts ...
- (六)Struts2的拦截器
一.简介 拦截器体系是struts2重要的组成部分.正是大量的内建拦截器完成了该框架的大部分操作. 比如params拦截器将请求参数解析出来,设置Action的属性.servletConfig拦截器负 ...
- 简单理解Struts2中拦截器与过滤器的区别及执行顺序
简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...
- struts2总结六: Struts2的拦截器
一.Struts2的系统结构图
- Struts2使用拦截器完成权限控制示例
http://aumy2008.iteye.com/blog/146952 Struts2使用拦截器完成权限控制示例 示例需求: 要求用户登录,且必须为指定用户名才可以查看系统中某个视图资源:否 ...
随机推荐
- Collectors.groupingBy分组后的排序问题
默认groupingBy代码里会生成一个HashMap(hashMap是无序的,put的顺序与get的顺序不一致) HashMap是无序的,HashMap在put的时候是根据key的hashcode进 ...
- UML类图关系(继承、泛化、实现、依赖、关联、聚合、组合)
继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者 ...
- 简单的html渲染模板引擎
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- for( in ) IE下兼容问题
在JS 中 for in 常用于遍历对象的可枚举属性,包括原型链上的属性.然而for_in在IE < 9下可能会出现问题. for_in要出现问题必须满足两个条件: 1:IE < 9; ...
- PIE SDK图像裁剪
1.算法功能简介 图像裁剪的目的是获取选定的影像范围区域.图像裁切工具提供像素范围裁切.矢量裁切.栅格图像裁切和几何图元裁切四种方式. 像素范围裁切是基于像素坐标获取矩形裁切区域的裁切方式:矢量裁切是 ...
- 字符型图片验证码,使用tensorflow实现卷积神经网络,进行验证码识别CNN
本项目使用卷积神经网络识别字符型图片验证码,其基于 TensorFlow 框架.它封装了非常通用的校验.训练.验证.识别和调用 API,极大地减低了识别字符型验证码花费的时间和精力. 项目地址: ht ...
- HTML盒子尺寸的计算
参考链接http://edu.51cto.com/lesson/id-54739.html
- (转)Linux基础------Shell数值计算的几种方法
Linux基础------Shell数值计算的几种方法 原文:http://blog.csdn.net/fu_wayne/article/details/21620639 在Linux下总会遇到数值计 ...
- git使用方法记录
git是一个分布式的代码版本管理系统,使用起来的确很方便,已签只会star别人的项目,今天刚好有空抽点时间学了一下,简单的几个命令的用法. 首先在giuhub上可以托管代码,然后可以将远程仓库拖到本地 ...
- spring 依赖注入总结--为什么官方推荐构造器注入
一 公司小伙伴使用了构造器注入,说是spring的官方推荐.但是,我问了三个问题,他都答不出来,感觉能写篇博文. 官方为什么推荐构造器注入? 构造器注入和属性注入的区别是啥? 你知道有几种注入方式吗? ...