zoukankan      html  css  js  c++  java
  • spring与struts2的整合

    工程文件结构图:

    1,创建名为loginSpringStruts2的web工程,具体机构如上图,在该工程的/WebRoot/WEB-INF/lib路径下添加struts2常用的JAR包(参见“struts2配置”),同时添加名为spring.jar,  commons-loggin.jar(已经添加),cglib-nodep-2.1_3.jar(AOP用到),struts2-spring-plugin-2.0.11.jar等4个Spring运行库文件。

    2,创建前台视图login.jsp  success.jsp  error.jsp,  具体参见(“struts2配置”

    3,在src下创建applicationContext.xml,配置如下:

    View Code
    <?xml version="1.0" encoding="UTF-8"?>
    <beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
        
        <!-- 配置Struts2里的Action对象 -->
        <bean id="login" class="action.LoginAction"></bean>
    </beans>

    4,在src下创建struts.properties消息文件,添加“struts.objectFactory=spring"语句,使得Struts2类的生成交给spring完成,具体代码:

    View Code
    struts.objectFactory=spring
    struts.action.extension=action
    struts.locale=en_GB

    5,在src下创建struts.xml, 具体配置如下:

    View Code
    <?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>
        
    
    <package name="main" extends="struts-default">
        <action name="login" class="action.LoginAction">
            <result name="error">/error.jsp</result>
            <result name="success">/success.jsp</result>
        </action>
    </package>
    
    </struts>

      相应的action.LoginAction代码如下:

    View Code
    package action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class LoginAction extends ActionSupport {
        private String userName;
        private String userPsw;
        
    
        public String getUserName() {
            return userName;
        }
    
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
    
        public String getUserPsw() {
            return userPsw;
        }
    
    
        public void setUserPsw(String userPsw) {
            this.userPsw = userPsw;
        }
    
    
        /**
         * @return
         */
        public String execute() {
            if(getUserName().equals("123")&& getUserPsw().equals("123")){
                return SUCCESS;
            }
    
            
            else return ERROR;
        }
    }

      相应的filter.CharacterEncodingFilter.java的代码如下:

    View Code
    package filter;
    
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class CharacterEncodingFilter implements Filter {
        private String characterEncoding;//编码方式在web.xml中
        private boolean enabled;//是否启动filter,初始值在web.xml中
        
        @Override
        public void init(FilterConfig config) throws ServletException {
            // TODO Auto-generated method stub
            //初始化时加载参数
            //从配置文件中读取设置到编码方式
            characterEncoding=config.getInitParameter("characterEncoding");
            //启动该过滤器完成编码方式到修改
            enabled="true".equalsIgnoreCase(characterEncoding.trim())
                ||"1".equalsIgnoreCase(characterEncoding.trim());
            
        }
        
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {
            // TODO Auto-generated method stub
            if(enabled||characterEncoding!=null){
                request.setCharacterEncoding(characterEncoding);//设置request编码方式
                response.setCharacterEncoding(characterEncoding);//设置response编码方式
            }
            chain.doFilter(request, response);//doFilter将修改好的request和response参数向下传递;
            
        }
    
        @Override
        public void destroy() {
            // TODO Auto-generated method stub
            characterEncoding=null;
            
        }
    
        
    
    
    
    }

    6,配置web.xml,包括struts2监听,字符集过滤,spring的web监听,并通过<context-param>标签来配置applicationContext.xml文件的位置

    View Code
    <?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">
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      
      <!-- struts2过滤器 -->
        <filter>
          <filter-name>struts</filter-name>
          <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
          <init-param>
              <param-name>struts.action.extension</param-name>
              <param-value>action</param-value>
          </init-param>
      </filter>
      <filter-mapping>
          <filter-name>struts</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
      
      <!-- 字符集过滤器 -->
      <filter>
          <filter-name>characterEncodingFilter</filter-name>
          <filter-class>filter.CharacterEncodingFilter</filter-class>
          <init-param>
              <param-name>characterEncoding</param-name>
              <param-value>UTF-8</param-value>
          </init-param>
          <init-param>
              <param-name>enable</param-name>
              <param-value>true</param-value>
          </init-param>
      </filter>
      <filter-mapping>
          <filter-name>characterEncodingFilter</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
      
      <!-- spring的监听 -->
      <listener>
          <listener-class>
              org.springframework.web.context.ContextLoaderListener
          </listener-class>
      </listener>
      <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/classes/applicationContext.xml</param-value> 
      </context-param>
      
      
    </web-app>
  • 相关阅读:
    Binary Tree Maximum Path Sum
    ZigZag Conversion
    Longest Common Prefix
    Reverse Linked List II
    Populating Next Right Pointers in Each Node
    Populating Next Right Pointers in Each Node II
    Rotate List
    Path Sum II
    [Leetcode]-- Gray Code
    Subsets II
  • 原文地址:https://www.cnblogs.com/lpshou/p/2792168.html
Copyright © 2011-2022 走看看