Struts10---拦截器



01.创建一个登录界面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="user/login" method="post">
<input type="text" name="user.name"/>
<input type="submit" value="登录"/>
</form>
</body>
</html>
02.创建对应的struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts> <!--设置开发模式 -->
<constant name="struts.devMode" value="true"/> <package name="default" namespace="/user" extends="struts-default">
<action name="login" class="cn.bdqn.action.UserAction" method="login">
<!-- 重定向到一个指定命名空间下面的 action-->
<result type="redirectAction">
<param name="namespace">/interceptor</param>
<param name="actionName">login</param>
</result>
</action>
</package>
<include file="user.xml"/>
</struts>
03.创建对应的UserAction
public class UserAction extends ActionSupport{
private User user; //验证的对象
//登录的方法
public String login(){
System.out.println("进入UserAction的login()");
//把前台登录的用户信息保存到session
Map<String, Object> session = ActionContext.getContext().getSession();
if (user.getName()!=null&&!user.getName().equals("")) {
session.put("user", user.getName());
}else {
session.put("user", "");
}
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
04.创建对应的user.xml文件
应该是先创建loginAction,之后创建对应的拦截器! 最后把拦截器配置在xml文件中!
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts> <package name="interceptor" namespace="/interceptor" extends="default">
<!-- 配置自定义的拦截器 -->
<interceptors>
<interceptor name="myInterceptor" class="cn.bdqn.interceptor.LoginInterceptor"/>
<!--自定义拦截器栈 -->
<interceptor-stack name="myStack">
<!-- 必须先引用struts2默认的拦截器栈 -->
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="myInterceptor"/>
</interceptor-stack>
</interceptors>
<!-- 让程序 执行我们自定义的拦截器栈 -->
<default-interceptor-ref name="myStack"/> <action name="login" class="cn.bdqn.action.LoginAction" method="login">
<result name="error">/error.jsp</result>
<result>/success.jsp</result>
</action>
</package>
</struts>
05.创建对应的LoginAction
public class LoginAction extends ActionSupport {
public String login(){
System.out.println("这是LoginAction中的login()");
return SUCCESS;
}
}
06.创建对应的拦截器
public class LoginInterceptor implements Interceptor {
/**
* 在整个拦截器的生命周期中!
* 服务器启动的时候执行一次!
*/
@Override
public void init() {
System.out.println("拦截器的init()....................");
}
/**
* intercept相当于我们filter中的doFilter()
* 拦截一次请求,就会执行一次!
*/
@Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("拦截器的intercept()....................");
System.out.println("当期的执行Action====:"+invocation.getAction());
Map<String, Object> session = ActionContext.getContext().getSession();
//从session中获取用户的姓名
String name=(String) session.get("user");
if (name!=null&&!name.equals("")) { //说明前台用户有输入
//放行
return invocation.invoke();
}else {
return "error";
}
}
/**
* 在整个拦截器的生命周期中!
* 服务器关闭的时候执行一次!
*/
@Override
public void destroy() {
System.out.println("拦截器的destroy().................");
}
}
07.错误界面 ! 省略!

Struts10---拦截器的更多相关文章
- 6. ModelDriven拦截器、Preparable 拦截器
1. 问题 Struts2 的 Action 我们将它定义为一个控制器,但是由于在 Action 中也可以来编写一些业务逻辑,也有人会在 Action 输入业务逻辑层. 但是在企业开发中,我们一般会将 ...
- springmvc的拦截器
什么是拦截器 java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...
- Struts的拦截器
Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...
- Struts2拦截器的执行过程浅析
在学习Struts2的过程中对拦截器和动作类的执行过程一度陷入误区,特别读了一下Struts2的源码,将自己的收获分享给正在困惑的童鞋... 开始先上图: 从Struts2的图可以看出当浏览器发出请求 ...
- 学习SpringMVC——拦截器
拦截器,顾名思义就是用来拦截的. 那什么是拦截,又为什么要拦截.对于Spring MVC来说,拦截器主要的工作对象就是用户的请求,拦截下来之后,我们可以在拦截的各个阶段悉心呵护[为所欲为].常见的比如 ...
- alias拦截器的使用
在SSH项目中,有时需要由一个Action跳转到另一个Action.有两种方式可以实现Action之间的跳转,一种是chain,另一种是redirectAction,这两种方式之间的区别是chain是 ...
- Struts2入门(二)——配置拦截器
一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...
- 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录
java web工程项目使用了Spring+Spring MVC+Hibernate的结构,在Controller中的方法都是用于处理前端的访问信息,Controller通过调用Service进行业务 ...
- spring 拦截器
1.mvc.xml <!-- 自定义拦截链配置 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping p ...
- Struts2 拦截器配置以及实现
@(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...
随机推荐
- (转)基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
- 学习笔记のsendRedirect &forward
尽管HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很 ...
- linux c编程:互斥锁
们常说互斥锁保护临界区,实际上是说保护临界区中被多个线程或进程共享的数据.互斥锁保证任何时刻只有一个线程在执行其中的代码. 互斥锁具有以下特点: ·原子性:把一个互斥锁定义为一个原子操作,这意味着操作 ...
- input和raw_input的区别
input会假设用户输入的是合法的Python表达式raw_input会把所有的输入当作原始数据,然后将其放入字符串中. 在最新的版本之中,input可以直接使用,替代了raw_input. 在2.7 ...
- html基本标签介绍及应用
<!-- html标签 特征: 1.空白折叠现象 2.对空格和换行不敏感 3.标签要严格封闭 p标签的嵌套 多注意!!!!!! html中: 1.行内标签(不换行) (1)在一行内显示 span ...
- python之路 线程、进程、协程、队列、python-memcache、python-redis
一.线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. #!/usr/bin/env python # -*- coding:utf-8 -*- import threa ...
- 单例模式及getInstance()的用法
一般在单例模式下使用.getInstance()创建对象:但并不是所有有私有构造方法,对外通过getInstance方法提供 实例的情况就是单例模式. 注:单例模式:一个类有且只有一个实例.1,一个私 ...
- oracle 任务使用
文章访问地址:http://www.cnblogs.com/hoojo/p/oracle_procedure_job_interval.html
- Number使用笔记
Numbe函数用于将对象转换为数字 0 0 null 0 空 0 "" 0 true 1 false 0 date ...
- 14.python模块之subprocess
我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell.那么我们如何通过Python来完成这些命令行指令的执行呢?另外,我们应该知道的是命令行指令的执行通常有两 ...