<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0"> <!-- 配置struts2 的拦截路径 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- END 配置struts2 的拦截路径 --> </web-app>
<?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.action.extension" value=",action,do" /> -->
<constant name="struts.devMode" value="true" />
<!-- http://localhost:8080/lf/dev_thing --> <package name="myPackage" namespace="/lf" extends="struts-default">
<!-- 配置拦截器 -->
<interceptors>
<!-- 拦截器有三种 -->
<interceptor name="loginInterceptor" class="cn.zr.struts2.interceptor.LoginInterceptor"/>
<interceptor name="twoInterceptor" class="cn.zr.struts2.interceptor.TwoInterceptor"/>
<interceptor name="threeInterceptor" class="cn.zr.struts2.interceptor.ThreeInterceptor"/>
<interceptor-stack name="testStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="loginInterceptor"/>
<interceptor-ref name="threeInterceptor"/>
<interceptor-ref name="twoInterceptor">
<param name="excludeMethods">thing</param>
<param name="includeMethods">update</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 换掉默认拦截器 -->
<default-interceptor-ref name="testStack"/> <action name="dev_*" class="cn.zr.struts2.action.LoginAction" method="{1}" >
<!-- 视图 -->
<result name="page" type="dispatcher">
/WEB-INF/jsp/login.jsp
</result>
</action> <action name="test_*" class="cn.zr.struts2.action.Register" method="{1}" >
<result name="lf" type="dispatcher">
/WEB-INF/jsp/register.jsp
</result>
</action> <action name="inf_*" class="cn.zr.struts2.action.InfoAction" method="{1}" >
<result name="info" type="dispatcher">
/WEB-INF/jsp/info.jsp
</result>
</action> </package> </struts>
<?xml version="1.0" encoding="UTF-8"?>
<!-- log4j2.xml文件配置-->
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="com.opensymphony.xwork2" level="debug"/>
<Logger name="org.apache.struts2" level="debug"/>
<Root level="warn">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
package cn.zr.struts2.action;

import cn.zr.struts2.pojo.User;

public class InfoAction extends SuperAction{

    private User user;
private String email; //根据Set的方法注入
public void setUser(User user) {
this.user = user;
} public User getUser() {
return user;
} public void setEmail(String email) {
this.email = email;
} public String getInfo(){
System.out.println("email:"+email);
System.out.println("user:"+user);
return "info";
} }
package cn.zr.struts2.action;

public class LoginAction extends SuperAction{

    public String thing(){
System.out.println("进入thing的方法.......");
return "page";
} public String add() {
System.out.println("welcome to here======");
System.err.println("request:"+request+",response:"+response+",session:"+session);
return "page";
} public String update() {
System.out.println("**** * update * ****");
return "page";
}
}
package cn.zr.struts2.action;

public class Register extends SuperAction{

    public String testSome(){
System.out.println("测试+++"); return "lf"; } }
package cn.zr.struts2.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware; public class SuperAction implements ServletRequestAware,ServletResponseAware{ public HttpServletRequest request;
public HttpServletResponse response;
public HttpSession session;
@Override
public void setServletResponse(HttpServletResponse response) {
this.response = response; }
@Override
public void setServletRequest(HttpServletRequest request) { this.request = request;
this.session = request.getSession();
} }
package cn.zr.struts2.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor; public class LoginInterceptor implements Interceptor{ @Override
public void destroy() {
// TODO Auto-generated method stub } @Override
public void init() {
// TODO Auto-generated method stub } @Override
public String intercept(ActionInvocation action) throws Exception { System.out.println("拦截前.......");
String result = action.invoke();
System.out.println("=========拦截后.......");
return result;
} }
package cn.zr.struts2.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor; public class ThreeInterceptor extends AbstractInterceptor { @Override
public String intercept(ActionInvocation action) throws Exception { System.out.println("tell me what do you want to do..."); String result = action.invoke(); System.out.println("OK, i let you go..."); return result;
} }
package cn.zr.struts2.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; public class TwoInterceptor extends MethodFilterInterceptor{ @Override
protected String doIntercept(ActionInvocation action) throws Exception {
System.out.println("开始拦截,哈哈哈。。。");
String result = action.invoke();
System.out.println("放你走,哈哈哈。。。");
return result;
} }
package cn.zr.struts2.pojo;

public class User {

    private String username;
private String password;
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;
}
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
} }
<%@ 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>info starting page</title> </head> <body>
<h1>OK</h1>
</body>
</html>
<%@ 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>login 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>
<h1>欢迎进入登录页面</h1>
</body>
</html>
<%@ 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>register page</title> </head> <body>
<h1> welcome </h1> <form action="/lf/inf_getInfo.action" method="post">
<label>用户</label><input name="user.username"><br>
<label>密码</label><input name="user.password"><br>
<label>邮箱</label><input name="email"><br>
<input type="submit" value="提交">
</form> </body>
</html>

最新文章

  1. 期待许久的事情终于发生-微软收购Xamarin
  2. vagrant初始登录失败的一般性解决方案
  3. 为什么要设置getter和setter?
  4. 反射认识_04_反射调用类方法Method
  5. Linux环境变量的修改(永久,暂时)以及修改ls显示的时间格式
  6. Redis 配置文件 redis.conf 项目详解
  7. Android之开源项目工具库篇
  8. 应用型GIS 地理信息系统设计内容和方法
  9. 关于CSS中的PX值(像素)
  10. 2463: [中山市选2009]谁能赢呢?- BZOJ
  11. 【BZOJ】【1412】【ZJOI2009】狼和羊的故事
  12. [转载]MongoDB优化的几点原则
  13. 10 Best Responsive HTML5 Frameworks and Tools
  14. css杂项,清除浮动
  15. windows下使用批处理调用exe和服务
  16. 杭电oj 3361
  17. Android数字签名解析(三)
  18. 《JS权威指南学习总结--第九章 类和模板》
  19. [POJ 2115} C Looooops 题解(扩展欧几里德)
  20. [Swift]LeetCode1027. 最长等差数列 | Longest Arithmetic Sequence

热门文章

  1. 剑指Offer面试题:1.实现单例模式
  2. 【java规则引擎】一个基于drools规则引擎实现的数学计算例子
  3. 1.1对java web开发的一点理解
  4. Delphi 连接 Paradox
  5. 创建工程常量 (OC中的宏定义)
  6. SERDES高速系统(一)
  7. css控制div字数出现点点点
  8. FTP,FTPS,FTPS与防火墙
  9. laravel安装初体验
  10. python学习(六) 抽象