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学习-拦截器的更多相关文章

  1. Struts2学习---拦截器+struts的工作流程+struts声明式异常处理

    这一节我们来看看拦截器,在讲这个之前我是准备先看struts的声明式异常处理的,但是我发现这个声明式异常处理就是由拦截器实现的,所以就将拦截器的内容放到了前面. 这一节的内容是这样的: 拦截器的介绍 ...

  2. Struts2学习-拦截器2

    1.做一个登陆页面(loginView.jsp,才用Action来访问),2.登陆成功后,可以跳转到系统的首页(index.jsp),3.首页有一个链接(testOtherAction访问其它的功能模 ...

  3. Struts2学习-拦截器2续

    定义拦截器有2种办法:1.实现Interceptor接口2.集成AbstractInterceptor抽象类 一.方法1 ..... <struts> <package name=& ...

  4. Struts2【拦截器】就是这么简单

    什么是拦截器 拦截器Interceptor.....拦截器是Struts的概念,它与过滤器是类似的...可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Str ...

  5. JavaWeb框架_Struts2_(三)---->Struts2的拦截器

    2. Struts2的拦截器(使用拦截器实现权限控制) 2.1 拦截器的概述 拦截器是Struts2的核心组成部分,它可以动态的拦截Action调用的对象,类似与Servlet中的过滤器.Struts ...

  6. (六)Struts2的拦截器

    一.简介 拦截器体系是struts2重要的组成部分.正是大量的内建拦截器完成了该框架的大部分操作. 比如params拦截器将请求参数解析出来,设置Action的属性.servletConfig拦截器负 ...

  7. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  8. struts2总结六: Struts2的拦截器

    一.Struts2的系统结构图

  9. Struts2使用拦截器完成权限控制示例

    http://aumy2008.iteye.com/blog/146952 Struts2使用拦截器完成权限控制示例 示例需求:    要求用户登录,且必须为指定用户名才可以查看系统中某个视图资源:否 ...

随机推荐

  1. P2762 太空飞行计划问题

    传送门 经典的最大权闭合子图问题 实验有正的价值,仪器的价值为负 为了实验我们必须选择相应的仪器 所以从 S 连向实验,边权为实验的价值 实验与相应仪器之间连边,边权为 INF 仪器连向 T 边权为仪 ...

  2. vue控制父子组件渲染顺序

    在父组件中,如下图渲染子组件,那如何在父组件中加入一些数据获取逻辑且能控制子组件渲染呢. 就是像在上图中红框圈起来的那样,挂个 ok(其他你自己定义的也可以) 参数,同时在父组件的任何生命周期中去改变 ...

  3. Ibatis批量处理

    1.插入 <insert id="insTable" resultClass="int"> INSERT INTO [dbo].[table] ([ ...

  4. requests模块的一些总结

    一.cookie模拟登录的三种方式 #!/usr/bin/env python # -*- coding: utf-8 -*- #author tom import requests post_url ...

  5. 什么是RFID? 射频识别技术的特点及工作原理!

    RFID即Radio Frequency Identifcation,就是射频识别技术,这篇给大家讲述的就是这个射频识别技术.这里就涉及到射频,电磁学等等知识.看完这篇,你应该会对这些知识有些了解,大 ...

  6. linux运维基础之跟我一起学正则表达式(一)

    正则表达式 ### 二, 1) 什么是正则表达式 正则表达式又称为规则表达式 正则表达式是一个计算机的一个概念 正则表达式为了处理大量的文本|字符串而定义的一套规则和方法,通常被用来检索,替换那些符合 ...

  7. MySQL关联left join 条件on与where不同

    以下的文章主要讲述的是MySQL关联left join 条件on与where 条件的不同之处,我们现在有两个表,即商品表(products)与sales_detail(销售记录表).我们主要是通过这两 ...

  8. 【linux】dpkg 命令使用说明

    dpkg是一个debian包管理工具.能够对包进行安装.卸载.获取信息等操作.用法:    安装(解包并配置):       dpkg -i package_file       dpkg --ins ...

  9. [转]Load ASP.NET MVC Partial Views Dynamically Using jQuery

    本文转自:http://www.binaryintellect.net/articles/218ca630-ba50-48fe-af6e-6f754b5894aa.aspx Most of the t ...

  10. Apache同一个IP上配置多域名

    NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@yourdomain.com DocumentRoot &quo ...