在tomcat5中发现了以前处理tomcat4的方法不能适用于处理直接通过url提交的请求,上网找资料终于发现了最完美的解决办法,不用每个地方都转换了,而且无论get,和post都正常。写了个文档,贴出来希望跟我有同样问题的人不再像我一样痛苦一次:-)
上传文件有问题,只好直接贴了,难看点:-)
-------------------
Tomcat 5中文问题
author:kiss__sky@163.com
-------------------
问题描述:
1 表单提交的数据,用request.getParameter(“xxx”)返回的字符串为乱码或者??
2 直接通过url如http://localhost/a.jsp?name=中国,这样的get请求在服务端用request. getParameter(“name”)时返回的是乱码;按tomcat4的做法设置Filter也没有用或者用request.setCharacterEncoding("GBK");也不管用
原因:
1 tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理
2 tomcat对get方式提交的请求对query-string 处理时采用了和post方法不一样的处理方式。(与tomcat4不一样,所以设置setCharacterEncoding(“gbk”))不起作用。
解决办法:
首先所有的jsp文件都加上:
<%@ page contentType="text/html;charset=gb2312"%>
1 实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.xml和SetCharacterEncodingFilter的配置。)
1)只要把%TOMCAT安装目录%/ webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的webapp目录/filters下,如果没有filters目录,就创建一个。
2)在你的web.xml里加入如下几行:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3)完成.
2 get方式的解决办法
1) 打开tomcat的server.xml文件,找到<connector>区块,加入如下一行:
URIEncoding=”GBK”
完整的应如下:
</connector>
<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="GBK"
/>
2)重启tomcat,一切OK。
执行如下jsp页页测试是否成功
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*"%>
<%
String q=request.getParameter("q");
q = q == null? "没有值" : q;
%>
<HTML>
<HEAD><TITLE>新闻列表显示</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=pragma content=no-cache>
<body>
你提交了:
<%=q%>
<br>
<form action="tcnchar.jsp" method="post">
输入中文:<input type="text" name="q"><input type="submit" value="确定">
<br>
<a href="tcnchar.jsp?q=中国">通过get方式提交</a>
</form>
</BODY></HTML>
测试结果如果你输入文本框或者点超链都会显示:你提交了”中国”,说明成功!!!!!
特别感谢下面这篇帖子,帮我解决了中文问题.最后祝大家好运!!!
参考网址:
http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042&sty=1&tpg=1&age=0
Java 中文问题一直困扰许多学习者。总结了下面的一些情况的解决方法。
希望对大家有帮助。
连接 Mysql Database Server:
-------------------------------------------------------------------------------
mysql 不支持 unicode,所以比较麻烦。
将 connectionString 设置成 encoding 为 gb2312
String connectionString
= "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=gb2312";
测试代码:
String str = "汉字";
PreparedStatement pStmt = conn.prepareStatement("INSERT INTO test VALUES (?)");
pStmt.setString(1,str);
pStmt.executeUpdate();
数据库表格:
create table test (
name char(10)
)
连接 Oracle Database Server
-------------------------------------------------------------------------------
在把汉字字符串插入数据库前做如下转换操作:
String(str.getBytes("ISO8859_1"),"gb2312")
测试代码:
String str = "汉字";
PreparedStatement pStmt = conn.prepareStatement("INSERT INTO test VALUES (?)");
pStmt.setString(1,new String(str.getBytes("ISO8859_1"),"gb2312");
pStmt.executeUpdate();
Servlet
-------------------------------------------------------------------------------
在 Servlet 开头加上两句话:
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
JSP
-------------------------------------------------------------------------------
在 JSP 开头加上:
<%@ page contentType="text/html; charset=gb2312" %>
分享到:
相关推荐
本项目聚焦于使用JSP、JavaBean和Servlet技术,结合Oracle与MySQL两种主流关系型数据库实现分页功能。以下将详细介绍这些技术及其在分页中的应用。 1. JSP(JavaServer Pages):JSP是一种动态网页技术,允许开发...
综合以上信息,我们可以得出这个项目是一个用JSP开发的多用户博客平台,它支持MySQL和Oracle两种数据库,提供了用户注册、登录、发布博客文章等基本功能,并附带了一个系统说明文档来指导用户和开发者进行操作和维护...
3. **数据库连接**:使用Java的JDBC(Java Database Connectivity) API建立与数据库的连接,通常是一个关系型数据库如MySQL或Oracle。 4. **查询用户信息**:在数据库中执行SQL查询,查找匹配的用户名和密码。 5. *...
【飞机订票系统(jsp+servlet)】是一个典型的Web应用程序,它使用了Java技术栈中的JSP(JavaServer Pages)和Servlet,以及Oracle数据库来构建一个完整的线上订票平台。这个系统旨在为用户提供便捷的机票预订服务,...
【Java JSP Servlet 通讯录】是一个典型的Web应用程序示例,特别适合初学者用来学习Java Web开发技术。在这个项目中,我们主要会涉及到三个核心技术:Java、JSP(JavaServer Pages)和Servlet。 1. **Java**: Java...
【标题】"jsp+oracle/mysql源码"涉及的是在Web开发中使用Java Server Pages(JSP)技术结合Oracle或MySQL数据库进行数据管理的应用实例。这是一个常见的组合,因为JSP是用于构建动态网页的Java技术,而Oracle和MySQL...
【Java项目音乐(JSP+Servlet)】是一种基于Java技术的Web应用,主要使用JSP(JavaServer Pages)和Servlet来实现动态网页功能。这个项目可能是为了构建一个在线音乐平台,让用户能够浏览、搜索、播放和可能下载音乐。...
【基于jsp+servlet的博客系统】是一个典型的Web应用程序,它结合了JavaServer Pages(JSP)和Servlet技术,用于构建动态、交互式的博客平台。在这个系统中,JSP主要用于展示用户界面,而Servlet则承担了业务逻辑处理...
在Java Web开发中,"基于jsp+servlet+javabean"的模式是一种常见的架构,用于构建动态、数据驱动的Web应用程序。这个小练习可能是一个汽车店系统的车辆预约管理应用,让我们详细了解一下这些技术及其在Web开发中的...
Java语言程序设计是软件开发领域中的重要组成部分,特别是在Web应用程序的开发中,Servlet和JSP(JavaServer Pages)是两个核心的技术。本项目是基于Java的毕业设计,它结合了Servlet和JSP来构建一个购物车系统,...
本项目是一个基于Java Web技术的影视管理系统,采用Servlet和JSP技术进行后端处理与前端展示,同时结合MySQL数据库来存储和管理数据。这个系统设计适用于毕业设计、课程设计以及编程爱好者的学习实践。 1. **Java ...
本项目是基于Java技术栈构建的一个音乐网站,主要利用了JSP(JavaServer Pages)和Servlet技术,旨在提供一个在线音乐播放和管理的平台。这个项目对于初学者和有一定经验的开发者来说,都是一个很好的实践案例,可以...
本教程将讲解如何使用JSP来连接三种常见的关系型数据库:MySQL、Oracle和SQL Server。 首先,我们需要了解JDBC(Java Database Connectivity),它是Java语言连接数据库的标准接口。在JSP中,我们通常通过编写...
JSP(JavaServer Pages)和Servlet是Java Web开发中的两个核心技术,它们在构建动态网站和Web应用程序中起着关键作用。本项目“JSP,Servlet简易淘宝网JAVA”旨在通过这两种技术实现一个简单的淘宝网模拟系统,让...
在Java企业级开发中,Servlet和JSP是两种核心的技术,它们被广泛应用于构建Web应用程序,尤其是用户管理系统。本主题将深入探讨如何使用Servlet和JSP实现系统用户注册功能,并介绍相关的jar包及其作用。 首先,...
本系统以JSP、Servlet和MySQL为核心技术,旨在为初学者提供一个直观易懂的学习平台,尤其适合正在学习Java Web开发的学生。下面,我们将深入探讨这个系统的架构、实现原理以及其关键技术。 首先,J2EE(Java 2 ...
【标题】"BBS.rar_bbs jsp_java BBS_java+web+servlet_javaweb论坛项目_jsp/serv" 提供的信息显示,这是一个基于Java Web技术开发的BBS(Bulletin Board System,即电子公告板)项目。该论坛项目采用JSP(JavaServer...
本资源“JSP_JDBCconn_oracle_java_MYSQL_”聚焦于如何使用JSP和JDBC来连接并操作MsSQL、MYSQL和Oracle这三种不同的数据库系统。下面将详细介绍这些知识点。 1. **JSP基础**: - JSP是基于Java Servlet技术的,它...
### Java JSP MySQL Tomcat:构建数据驱动的Web应用程序 ...通过学习本书,读者不仅能够掌握 JSP、JDBC、MySQL 和 Tomcat 的基本概念和操作技巧,还能够了解如何结合这些技术来解决实际问题,从而提升自己的开发技能。
javaweb课程设计学生信息选课管理系统; 老师学生双重用户; 额外实现了成绩单页面转pdf与打印下载接口; jsp servlet数据库连接 有助于初学者学习深入; 数据库使用oracle/mysql 都可以