<?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>

struts2 框架的基本使用的更多相关文章

  1. Struts2框架基础

    Struts2框架基础 1.Java的框架 1.1.框架简介 在大型项目开发过程中,经常会使用到一些框架,这样做好的好处是能够提高工作效率,在java中最常用的的框架就是SSH,这其实是三个框架的简称 ...

  2. Struts2框架简介和示例

    struts2框架 Struts2是java web的框架,在Java Web开发中,表示层框架,其核心是通过扩展Servlet来帮助处理http请求. Struct2的基本流程 Struct2的框架 ...

  3. struts2 框架处理流程

    struts2 框架处理流程 流程图如下: 注意:StrutsPrepareAndExecuteFilter替代了2.1.3以前的FilterDispatcher过滤器,使得在执行Action之前可以 ...

  4. 搭建一个简单struts2框架的登陆

    第一步:下载struts2对应的jar包,可以到struts官网下载:http://struts.apache.org/download.cgi#struts252 出于学习的目的,可以把整个完整的压 ...

  5. Struts2框架之-注解开发

    Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置: <span style=" ...

  6. Struts2 框架的快速搭建

    方便myEclipse 手动配置Struts2框架,写下此文,需要的朋友拿走不谢~ 一.引入JAR包 WEB工程->WebRoot->WEB-INF->lib引入Struts2对应版 ...

  7. struts2框架 初始别

    struts2 是webwork和struts合并而来. 1.下载struts2 说明: Full Distribution: 为完整版下载,建议下载它 Example Applications:st ...

  8. struts2框架快速入门小案例

    struts2快速入门: index.jsp------>HelloAction--------->hello.jsp struts2流程 1.导入jar包 struts2的目录结构: a ...

  9. 搭建struts2框架

    struts是一个经典的MVC模式拦截器比过滤器拦截的力度更大 搭建struts2框架1.引入lib包 9个(2.3版本的)common-fileupload;common-io;common-lan ...

  10. Struts2学习笔记-jsp中引用struts2框架

    如果在jsp中需要引用struts2 框架,需在前面加上以下内容 <%@taglib prefix="s" uri="/struts-tags" %> ...

随机推荐

  1. BZOJ - 3622:已经没有什么好害怕的了 (广义容斥)

    [BZOJ3622]已经没有什么好害怕的了 Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output ...

  2. 分布式使用Redis

    为什么我们做分布式使用Redis? https://www.cnblogs.com/yaodengyan/p/9717080.html 绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只 ...

  3. Robot Framework接口测试(2)--http请求之get

    本来打算把http发送请求的get和post方法都介绍一下的,结果发现篇幅有点长,文本编辑也变得混乱,所以这里先介绍一下get方法,下一次再post.其实这些方法大家可以看一下源码里面的介绍只需要在代 ...

  4. 读论文系列:Object Detection ICCV2015 Fast RCNN

    Fast RCNN是对RCNN的性能优化版本,在VGG16上,Fast R-CNN训练速度是RCNN的9倍, 测试速度是RCNN213倍:训练速度是SPP-net的3倍,测试速度是SPP-net的3倍 ...

  5. WPF 自定义BarChartControl(可左右滑动的柱状图)(转)

    自定义可左右滑动.拖拽滑动的平面柱状图 在做这种样式控件之前,可先浏览我之前预研的控件: A.自定义左右滑动ScrollViewer(可拖动滑动) B.自定义Bar柱状图 OK,现在说下控件具体设计过 ...

  6. devops 几个方便的工具

    1. fake API      [canned](https://github.com/sideshowcoder/canned  )    fake API.      [wiremock](ht ...

  7. 调试VBA程序常用方法

    在中断模式下(ctrl+Break键),可以做: 1.执行    工具----选项----编辑器----勾选“自动显示数据提示” 则当用鼠标悬停在变量或表达式上时,会出现提示窗口,显示其名称和值! 2 ...

  8. 避免Android内存泄露

    摘自:http://blog.csdn.net/xyz_lmn/article/details/7108011 Android的应用被限制为最多占用16m的内存,至少在T-Mobile G1上是这样的 ...

  9. his移植问题

    报错信息 权限不够未截图 注意修改uploads文件权限chmod 777 uploads 修改域名 参照dxtzy项目,sourcetree备注

  10. 五 搭建kafka集群

    1 下载    wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.0.0/kafka_2.12-2.0.0.tgz 2 tar  -zxv ...