拦截器(自定义)

来源:互联网 发布:中国域名注册商排名 编辑:程序博客网 时间:2024/05/23 15:40

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><constant name="struts.devMode" value="true"></constant><constant name="struts.i18n.encoding" value="utf-8"></constant>    <!-- 引入默认文件(可能就是以前这里没有引入,所以错误啦) -->    <include file="struts-default.xml"></include>    <package name="login" namespace="/login" extends="struts-default"><interceptors><interceptor name="loginInterceptor" class="com.LoginInterceptor"><param name="name">登录拦截器</param></interceptor></interceptors><!-- 拦截器一般配置在result文件后边 --><action name="login" class="com.LoginAction"><result name="main">/main.jsp</result><result name="input">/login.jsp</result><interceptor-ref name="loginInterceptor"><param name="name">改名后的拦截器</param></interceptor-ref></action></package></struts>


web.xml

 

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <display-name>StrutsTutorial</display-name>  <filter>    <filter-name>struts2</filter-name>    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  </filter>  <filter-mapping>    <filter-name>struts2</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>      <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>


LoginAction.java

package com;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {private String username;private String password;@Overridepublic String execute(){return "main";}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

 

package com;import java.sql.ResultSet;import javax.interceptor.InvocationContext;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class LoginInterceptor extends AbstractInterceptor{private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String intercept(ActionInvocation invocation) throws Exception {// TODO Auto-generated method stub//因为拦截器不能直接获得jsp文件的输入内容。所以只能实例化一个request。//让后实例一个action,因为在action当中设置了变量。所以来设置用户的账号和密码。HttpServletRequest request=ServletActionContext.getRequest();LoginAction action=(LoginAction)invocation.getAction();action.setUsername(request.getParameter("username"));action.setPassword(request.getParameter("password"));if(!action.getUsername().equals("admin")){return "input";}return "main";}}