Struts1.3入门及配置过滤器控制中文乱码

关于Struts的相关介绍,在此就不做详细介绍。由于很多架构上的缺陷,现在很多企业都选择了Struts2,但是很多企业很多老项目需要维护,所以还是很有必要对struts1做些必要的了解,而且对学习struts2有很多好处。

 

我这里用的是Struts1.3.8。

 

一、准备工作

   1.下载Struts1.3.8

   2.安装myEclipse6.0或以上版本

   3.在myEclipse下创建web project,我这里定义名称为struts1.3

   4.将Struts1.3.8解压,将lib目录下的jar包拷到工程WebRoot--WEB-INF--lib目录下

 

二、安步骤开始 Struts1

 1.配置WEB-INF目录下的web.xml文件

插入如下XML文件

<servlet>
		<servlet-name>ActionServlet</servlet-name>
		<servlet-class>
			org.apache.struts.action.ActionServlet
		</servlet-class>
		<init-param>
			<param-name>config</param-name>
			<param-value>/WEB-INF/struts-config.xml</param-value>
		</init-param>
		<!--服务启动时就启用-->
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>ActionServlet</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

 以上配置的意思是:用户访问任何以 .do 结尾的文件,都请求ActionServlet做处理,详细配置访问>/WEB-INF/struts-config.xml配置文件。

 

2 。  我这里要处理一个用户注册的页面,页面比较简短,只有三个字段username,password,email

 所以得创建一个RegisterFormBean,而注册请求交给RegisterAction来处理

    2.1创建RegisterFormBean 继承ActionForm

import org.apache.struts.action.ActionForm;

public class RegisterFormBean extends ActionForm {

	private String username;
	private String password;
	private String email;
//getters&setters
}

 

2.2 创建RegisterAction类,继承Action

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.fly31.formbean.*;
public class RegisterAction extends Action {
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		RegisterFormBean registerForm = (RegisterFormBean) form;
		String username = registerForm.getUsername();
		String password = registerForm.getPassword();
		String email = registerForm.getEmail();
		try {
			System.out.println("用户名:" + username + "密码:" + password + "邮箱"
					+ email);
			request.setAttribute("message", "注册成功!!");
		} catch (Exception e) {
			request.setAttribute("message", "注册失败!!");
		}
		return mapping.findForward("message");
	}
}

 

3.配置>/WEB-INF/struts-config.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
	<form-beans>
		<form-bean name="registerForm"
			type="com.fly31.formbean.RegisterFormBean">
		</form-bean>
	</form-beans>
	<action-mappings>
		<action path="/register" name="registerForm"
			type="com.fly31.action.RegisterAction">
			<forward name="message" path="/message.jsp" />
		</action>
	</action-mappings>
</struts-config>

 

 

4.创建JSP页面,我这里就在index.jsp上编写

插入如下代码到body内

 

    <form action="${pageContext.request.contextPath }/register.do" method="post">
    	用户名:<input type="text" name="username"><br/>
    	密码:<input type="password" name="password"><br/>
    	电子邮箱:<input type="text" name="email"><br/>
    	<input type="submit" value="注册">
    </form>

 

 5.由于要显示一些信息,所以创建message.jsp页面

   在body标签内出入如下标签

  <body>
    ${message }
  </body>

 

三、在注册过程中如果输入中文会出现乱码问题。这里在配置一个中文乱码过滤器

 1、创建类com.fly31.filter.WebFilter.java

 

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 WebFilter implements Filter {
	// 字符编码
	String encoding = null;
	public void destroy() {
		encoding = null;
	}
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// 判断字符编码是否为空
		if (encoding != null) {
			// 设置request编码格式
			request.setCharacterEncoding(encoding);
			// 设置response编码格式
			response.setContentType("text/html;charset=" + encoding);
		}
		// 传递给下一个过滤器
		chain.doFilter(request, response);
	}
	/**
	 * 初始化的时候设置编码方式
	 */
	public void init(FilterConfig filterConfig) throws ServletException {
		// 获取初始化参数
		encoding = filterConfig.getInitParameter("encoding");
	}
}

 

 2.修改web.xml文件

   在根目web-app下添加如下xml代码

	<filter>
		<!-- 过滤器的名 -->
		<filter-name>WebFilter</filter-name>
		<!-- 过滤器所在完整包路径 -->
		<filter-class>com.fly31.filter.WebFilter</filter-class>
		<init-param>
			<!-- 变量名 -->
			<param-name>encoding</param-name>
			<!-- 变量值 -->
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<!-- 过滤器映射 -->
	<filter-mapping>
		<!-- 映射过滤器的名字 -->
		<filter-name>WebFilter</filter-name>
		<!-- 过滤器范围,/*表示在这个工程目录下对所有的文件都有效 -->
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值