代码改变世界

struts2 框架的基本使用

2017-02-23 20:14  甘雨路  阅读(178)  评论(0编辑  收藏  举报
<?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>