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加载优先级
浙公网安备 33010602011771号