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的方法之前,之后或者两 ...
随机推荐
- Linux学习笔记—文件与文件系统的压缩与打包(转载)
压缩文件的用途与技术 例如,计算机都是以byte单位来计量的,1byte占8bit.如果存储数字1,那么1byte就会空出7bit.采用一定的计算方式,压缩这些空间可以大大降低文件存储. Linux系 ...
- Java基础—内部类(转载)
转载自:java中的匿名内部类总结 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部 ...
- CentOS 6.5 QtCreator启动时 dbus-1的错误解决方法
启动QtCreator提示:dbus_connection_can_send_type的错误, QString::arg: Argument missing: 无法解析dbus_connection_ ...
- ansible判定文件或者文件夹是否存在
ansible 的常用模块中没有判定当文件存在或者不存在时,执行某个执行 使用下面方法能简单判定某个文件是否存在 --- - name: judge a file or dir is exits sh ...
- Django框架之单表操作
一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...
- 第一课Linux系统安装知识(1)
在做linux下C\C++开发,首先得安装个Linux系统,这节课记录相关系统安装的知识,本文记录虚拟机安装部分. 在linux系统中,现在一般生手都用桌面版,比如比较多人使用的是 ...
- cdojR - Japan
地址:http://acm.uestc.edu.cn/#/contest/show/95 题目: R - Japan Time Limit: 3000/1000MS (Java/Others) ...
- shell文件安全与权限 笔记
主要学习: 文件盒目录的权限 Setuid Chown和chgrp Umask 连接符号 一个文件已经创建,就具有三种访问方式 读,可以显示该文件的内容 写,可以编辑或删除它 执行,如果该文件时一个s ...
- html5 canvas js(数字时钟)
<!doctype html> <html> <head> <title>canvas dClock</title> </head ...
- Linux 上下左右键变成^A,^B,^C,^D解决方法
用gedit打开 /etc/vim/vimrc.tiny,将里面的 set compatible 改成 set nocompatible 对于退格键backspace的问题,只需在刚才那句话下面加上一 ...