1、新建Deployment Web Project,结构目录如下
 
 

2、导入struts2需要的包到WEB-INF目录的lib下面,右键包,选择build path,新增jbean:


 
3、配置web.xml引入struts2,配置过滤器filter,加载struts2核心类;
      
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
<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>
 
</web-app>
 
4、struts.xml配置文件,放到classes根目录下,核心类会到classes根目录下自动扫描
 
<?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.i18n.encoding" value="UTF-8" />
<package name="/" extends="struts-default">  
 
        <action name="user" class="com.iobs.manager.user.IobsUser">
         <result name="success">page/user/users.jsp</result>
         <result name="error">page/user/usere.jsp</result>
        </action>
     </package>
</struts>
 
5、Action类
package com.iobs.manager.user;
import java.io.UnsupportedEncodingException;
 
public class IobsUser {
private String userName;
public String execute() throws UnsupportedEncodingException{
return "success";
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
 
6、JSP页面
     首先来个登陆页面:
     代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="path" value="${pageContext.request.contextPath }"></c:set>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<h1>csp-iobs-manager</h1>
${path }
<form action="${path}/user" method="get">
<input name="userName" type="text" width="200" />
<input type="submit" value="submit">
</form> 
</body>
</html> 
     注意:
     1、红色部分如果要引用<c:>标签,需要导入jstl.jar包
     2、form的请求为get请求,也可以改成post请求,使用表单提交,参数不会再uri中显现
 
     再写个成功后调整页面
<body>
<h1>${userName}</h1>
</body>
 
     最后输入“张三”点击提交
 
7、乱码问题
    1)发送get请求为乱码,只需修改,web容器配置,tomcat修改server.xml,新增URIEncoding为UTF-8
    <Connector URIEncoding="UTF-8"  port="8080" protocol="HTTP/1.1" 
   connectionTimeout="20000" redirectPort="8443" />
 
     2)发送post请求为乱码,需要统一编码,spring体统相关的包,但是我这里自己写了一个filter来过滤字符集
 
struts统一编码,在struts.xml中新增配置
 
<constant name="struts.i18n.encoding" value="UTF-8" />
 
 
新增拦截类
package com.iobs.manager.util;
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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class UrlFilter implements Filter {
    public final static String DEFAULT_URI_ENCODE = "UTF-8";    
    private String encode = null;  
    @Override
    public void init(FilterConfig config) throws ServletException {
        this.encode = config.getInitParameter("DEFAULT_URI_ENCODE");
        this.encode = DEFAULT_URI_ENCODE;
        if(this.encode == null) {
            this.encode = DEFAULT_URI_ENCODE;
        }
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
     HttpServletRequest req = (HttpServletRequest) request;  
        HttpServletResponse resp = (HttpServletResponse) response; 
        req.setCharacterEncoding("UTF-8");  
        resp.setContentType("text/html; charset=UTF-8");  
        resp.setCharacterEncoding("UTF-8");  
        chain.doFilter(req, resp);  
    }    
    @Override
    public void destroy() {
    }
}
 
web.xml新增过滤
 
<filter>
<filter-name>urlFilter</filter-name>
<filter-class>com.iobs.manager.util.UrlFilter</filter-class>
<init-param>
<param-name>DEFAULT_URI_ENCODE</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>urlFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
 
特别注意,这个过滤器一定要放在struts的filter前面,
放在后面会无效,具体可查servlet的web.xml加载优先级
 
 
posted on 2016-11-11 16:20  直到没朋友  阅读(104)  评论(0)    收藏  举报