### structs乱码问题详解 #### 一、页面显示中文乱码 在开发基于Struts框架的应用时,可能会遇到页面上中文显示为乱码的问题。这主要是由于编码设置不一致所导致的。 1. **确定统一编码**:确保整个项目使用的字符编码是一致的,最常见的是使用UTF-8编码。对于MyEclipse 6及以上版本,在开发Struts 1.3及更高版本应用时,推荐将项目和文件的默认编码设为UTF-8。 - 在MyEclipse中设置项目编码: - 打开项目属性 -> Resource -> File encoding -> 设置为UTF-8。 - 设置JSP文件的编码格式: ```jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> ``` 2. **检查Tomcat配置**:修改Tomcat的server.xml文件中的Connector元素,添加URIEncoding属性并设置为UTF-8。 ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> ``` 3. **添加过滤器**:创建一个过滤器类(如`utf_8_filter`),用于强制设置请求的编码为UTF-8。 ```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 utf_8_filter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; protected boolean ignore = true; @Override public void destroy() { this.encoding = null; this.filterConfig = null; } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (ignore || (request.getCharacterEncoding() == null)) { String encoding = selectEncoding(request); if (encoding != null) request.setCharacterEncoding(encoding); } chain.doFilter(request, response); } @Override public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); String value = filterConfig.getInitParameter( ``` 4. **配置Web.xml**:在项目的web.xml文件中配置过滤器。 ```xml <filter> <filter-name>utf_8_filter</filter-name> <filter-class>com.example.utf_8_filter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>utf_8_filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` #### 二、传递参数中文乱码 当通过URL或表单提交数据时,中文字符可能会变成乱码。为了解决这个问题: 1. **在Action处理请求前设置编码**:在Action方法执行之前,可以通过过滤器或在Struts配置文件中设置请求的字符编码。 - 使用过滤器设置请求编码:参考前面提到的`utf_8_filter`过滤器。 2. **在Action类中处理编码**:如果仍然存在问题,可以在Action类中手动设置请求的编码。 ```java HttpServletRequest request = ...; request.setCharacterEncoding("UTF-8"); ``` 3. **在Struts配置文件中设置编码**:在struts-config.xml文件中,可以为每个Action设置输入编码。 ```xml <input name="input" value="/login.jsp" encoding="UTF-8" /> ``` #### 三、国际化资源文件乱码 当使用Struts的国际化特性时,可能会遇到资源文件中的中文字符显示为乱码的情况。 1. **确保资源文件的编码正确**:确认资源文件(如.properties文件)的编码与项目设置的一致。 2. **配置Struts的资源文件编码**:在struts-config.xml文件中,可以指定资源文件的编码。 ```xml <constant name="struts.locale" value="zh_CN" /> <constant name="struts.i18n.encoding" value="UTF-8" /> ``` 通过以上步骤可以有效地解决Struts项目中出现的各种乱码问题。关键在于保持编码一致性,并在各个层面(如服务器、过滤器、配置文件等)正确地设置字符编码。






















- 粉丝: 42
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 公司管理系统信息化建设规划.doc
- 项目管理组织结构图与管理任务.doc
- 基于51单片机的碎纸机控制系统本科设计说明.doc
- 网络系统建设与运维(初级)电子讲义全书教案完整版.doc
- 基于PLC五层电梯楼层控制系统的设计.doc
- 国家开放大学电大专科《网络系统管理与维护》多项选择判断题题库及答案.docx
- 汇编语言程序设计方法ppt课件.ppt
- 信息系统安全方案.doc
- 通用版网络安全技术解读PPT课件.pptx
- 系统集成项目管理.doc
- 双代号网络计划时间参数计算精.doc
- 建设项目管理培训课件.ppt
- 图书馆网络设计方案.doc
- 区块链技术合作发展机遇讲解.pptx
- 项目管理阶段考核评分自查表.doc
- 软件工程及项目管理基础知识.doc


