tomcat下的jsp和servlet的字符编码问题

js|servlet|编码|问题

使用filter来改变request的编码
在前面的文章里面,我们讨论了在tomcat下的jsp和servlet的字符编码问题!

知道当没有指定request的编码的时候,从客户端得到的数据是iso-8859-1编码的(request.getParameter()得到传递的参数值);

但是我们怎么来改变request的编码呢?

方法有很多种!

 比如:在getRequestDispatcher("/jsp/jsptoserv/hello.jsp").forward(request, response);之前修改

request的编码,那么在jsp/jsptoserv/hello.jsp中得到的参数值就是制定的编码的字符。

本文我们使用Filter来修改request的编码!

 

1)首先编写filter类:

package myFilter;

import java.io.IOException;
import javax.servlet.*;

public class ChangeCharsetFilter implements Filter {

    protected String encoding = null;/////要制定的编码,在web.xml中配置

    protected FilterConfig filterConfig = null;

        public void destroy() {

        this.encoding = null;
        this.filterConfig = null;

    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
 throws IOException, ServletException {

            if (request.getCharacterEncoding() == null){
            String encoding = getEncoding();////得到指定的编码名字
            if (encoding != null)
                request.setCharacterEncoding(encoding);////设置request的编码
        }

         chain.doFilter(request, response);///有机会执行下一个filter

    }

    public void init(FilterConfig filterConfig) throws ServletException {

          this.filterConfig = filterConfig;
        this.encoding = filterConfig.getInitParameter("encoding");///得到在web.xml中配置的编码
      }

    protected String getEncoding() {

        return (this.encoding);///得到指定的编码

    }

}

2。编辑web.xml文件

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<filter>
        <filter-name>SetCharacterEncoding</filter-name>
        <filter-class>myFilter.ChangeCharsetFilter </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GB2312</param-value>//////指定编码为GB2312
        </init-param>
     </filter>
    <filter-mapping>
        <filter-name>SetCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>////////对于所有的request改变其编码
    </filter-mapping>

</web-app>
///

3。

写一个a.jsp

<%@ page contentType="text/html; charset=GB2312" %>
<html>
<head></head>
<body>
<%
String name=request.getParameter("name");///本来这里得到字符是iso-8859-1编码的,不能直接

在Console中输出的,但是现在改变了request的编码方式,此时的name的编码是GB2312,所以能正确在Console中显示的。

System.out.println(name);

%>
<form action="a.jsp" method="post">
<input type="text" name="name">
<input type="submit">
</form>
<%=name%>
</body>
</html>

完!

关于中文处理的问题就写这些了!

时间: 2024-08-17 14:49:54

tomcat下的jsp和servlet的字符编码问题的相关文章

404-关于Myeclipse中在webroot下建立jsp访问servlet跳转失败的问题

问题描述 关于Myeclipse中在webroot下建立jsp访问servlet跳转失败的问题 正在学习servlet,看的是张龙老师的教程,其中讲到在webroot下创建一个文件夹,然后再文件夹里建立jsp页面访问servlet的例子,我使用的是myeclipse10,只能在webroot根目录下面创建jsp页面并访问servlet成功,如果将jsp页面建在文件夹下进行访问的话就会报404错误,提示找不到对应的servlet文件,想问一下这个问题应该如何解决,环境已经重新安装了一次 解决方案

tomcat下的jsp文件里 嵌入JAVA代码 如今想要修改JAVA代码 该如何编译?

问题描述 tomcat下的jsp文件里嵌入JAVA代码如今想要修改jsp上面的一个list里的东西JAVA代码该如何编译?源代码已丢失只有服务器tomcat下的JSP和.class文件. 解决方案 解决方案二:该回复于2011-04-28 08:39:06被版主删除解决方案三:list里存的估计也就是javabean吧,要是这样的话反编译下class类,自己模仿着再重写下吧.编译,替换原来的文件,试试呗先解决方案四:不是很清楚

在eclipse+tomcat下开发 jsp+javabean jsp无法转换成servlet文件

问题描述 我用的是tomcat插件,和eclipse集成开发,为什么不显示错误但是浏览器下显示404错误,jsp也没有转换为servlet文件.是不是javabean要在web.xml下配置?另外,先知道企业里边如何开发javaweb,不是用插件的方式? 解决方案 解决方案二:那就是证明你的开发的东西没被编译呗...解决方案三:重新编译......解决方案四:问题是运行完不显示错误,jsp文件也没被编译但是javabean被编译了解决方案五:是不是eclipse设置的是手动编译,Project-

在Tomcat下JSP、Servlet和JavaBean环境的配置

js|servlet 经常看到jsp的初学者问tomcat下如何配置jsp.servlet和bean的问题,于是总结了一下如何tomcat下配置jsp.servlet和ben,希望对那些初学者有所帮助. 第一步:下载j2sdk和tomcat:到sun官方站点(http://java.sun.com/j2se/1.4.2/download.html)下载j2sdk,注意下载版本为Windows Offline Installation的SDK,同时最好下载J2SE 1.4.2 Documentat

Tomcat下JSP、Servlet和JavaBean环境的配置

js|servlet 经常看到jsp的初学者问tomcat下如何配置jsp.servlet和bean的问题,于是总结了一下如何tomcat下配置jsp.servlet和ben,希望对那些初学者有所帮助.  第一步:下载j2sdk和tomcat:到sun官方站点(http://java.sun.com/j2se/1.4.2/download.html)下载j2sdk,注意下载版本为Windows Offline Installation的SDK,同时最好下载J2SE 1.4.2 Documenta

Tomcat下JSP、Servlet和JavaBean环境配置

经常看到Jsp的初学者问tomcat下如何配置jsp.servlet和bean的问题,于是总结了一下如何tomcat下配置jsp.servlet和ben,希望对那些初学者有所帮助. 第一步:下载j2sdk和tomcat:到sun官方站点([url]http://java.sun.com/j2se/1.4.2/download.html[/url])下载j2sdk,注意下载版本为Windows Offline Installation的SDK,同时最好下载J2SE 1.4.2 Documentat

Tomcat配置JSP、Servlet和JavaBean环境

经常看到jsp的初学者问tomcat下如何配置jsp.servlet和bean的问题,于是总结了一下如何tomcat下配置jsp.servlet和ben,希望对那些初学者有所帮助. 第一步:下载j2sdk和tomcat:到sun官方站点(http://java.sun.com/j2se/1.4.2/download.html)下载j2sdk,注意下载版本为Windows Offline Installation的SDK,同时最好下载J2SE 1.4.2 Documentation,然后到tomc

Tomcat将JSP转换为Servlet.java和编译.class文件的所在位置

一.提出问题 Tomcat作为容器,先将JSP转换为Servlet类源文件(.java),再将该源文件编译为Servlet类(.class). 那么这两个文件在容器的生命位置呢? 二.解决办法 以Test项目为例 在H:\tomcat\work\Catalina\localhost\test\org\apache\jsp文件夹中会发现上述两个文件.

jsp连接SQL server在tomcat下如何配置数据连接

问题描述 <%@pageimport="java.lang.*,java.io.*,java.sql.*,java.util.*"contentType="text/html;charset=gb2312"%><html><body><%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();Stringurl