Struts 中文乱码问题 以及 URL暴露表单数据和SessionID问题,急~~~
1.用Struts开发JSP,各JSP文件都用UTF-8编码,同时设置EncodingFilter编码过滤器,编码同样采用UTF-8,可是运行时只有HTML里面的静态文本是中文,表单里的数据一经提交就成了乱码,请问要怎么解决呢?
2.用Struts-Form提交数据时,会在URL里面看到表单数据,有时也会现出SessionId,请问有没有什么办法让它们不可见呢?
谢谢了!!
问题点数:20、回复次数:17Top
1 楼randb(从大二下学期开始不再迷茫!!狂学编程!!)回复于 2005-12-11 13:46:46 得分 0
问题三:用Struts开发JSP时,不太想用Struts自带的标签库,因为感觉它的功能没有JSTL强大,我用JSTL可不可以啊,这样会不会不像Strtus的开发模式?Top
2 楼mingr6370(丑男)回复于 2005-12-11 19:45:15 得分 0
1.可以设成gb2312,如果对存取数据,需要转码
2.form中method="post"
3.用JSTL应该可以吧,没用过!我一般都用struts标签Top
3 楼rnwoxn(初行者)回复于 2005-12-11 20:27:26 得分 0
把JSTL的lib和tld文件放在WEB-INF里,Top
4 楼randb(从大二下学期开始不再迷茫!!狂学编程!!)回复于 2005-12-11 21:55:25 得分 0
我的编码GB2312和UTF-8我都试过了,可还是不行啊,表单提交总是乱码
还有,我感觉STRUTS自带的标签库功能好像没有JSTL强大啊,各位怎么看的。。。Top
5 楼Dantee(奋斗中。。。)回复于 2005-12-12 00:29:18 得分 5
是不是html和jsp混用的啊,统一成jsp用struts的html:form标签提交试试
还有您的第二个问题,就像在问,我觉得笔记本硬盘没有台式机的强大啊,可以给我的移动硬盘换成台式机硬盘吗?当然可以,只要您不嫌用得不方便和把一个好好的东西弄得四不像了,struts标签的确有不好,但是真的需要所谓的“强大”吗?Top
6 楼randb(从大二下学期开始不再迷茫!!狂学编程!!)回复于 2005-12-12 13:10:53 得分 0
TO 楼上,
呵呵,我主要是想用纯粹的STRUTS标签来处理页面的显示逻辑,
但是感觉有时办不到,
所以会觉得STRUTS的标签库不够强大。。。Top
7 楼AreamArgentateOfWing(梦幻银翼)回复于 2005-12-12 13:22:34 得分 0
我的编码GB2312和UTF-8我都试过了,可还是不行啊,表单提交总是乱码
还有,我感觉STRUTS自带的标签库功能好像没有JSTL强大啊,各位怎么看的。。。
转多了Top
8 楼hw_betty(hw_betty)回复于 2005-12-12 15:17:45 得分 5
页面上用GB2312,web.xml中配置的filter重用UTF-8.你是用了支持国际化的properties文件,显示页面中文信息吧?那把这个文件转码成ascii就行了。用jdk中的native2ascii.exe转Top
9 楼randb(从大二下学期开始不再迷茫!!狂学编程!!)回复于 2005-12-12 22:39:00 得分 0
TO 楼上,
我没有用属性文件来显示页面上的中文,呵呵
改成GB2312吗,好的,我试一下Top
10 楼mingr6370(丑男)回复于 2005-12-13 21:27:55 得分 5
如果没有用到国际化文件,在web.xml去掉,EncodingFilter也去掉
JSP页面设为gb2312,formbean取值不可能是乱码!我天天用的,再不行把源码贴上了Top
11 楼qczl1224(倾情一世『qczl.ys168.com』)回复于 2005-12-14 11:22:49 得分 5
我的编码GB2312和UTF-8我都试过了,可还是不行啊,表单提交总是乱码
还有,我感觉STRUTS自带的标签库功能好像没有JSTL强大啊,各位怎么看的。。。
无语。。。转码都不会会懂那个标签强大与否????????不会用就不要乱发评论。。。。。。。。。。。
做一个类继承ActionServlet,重写process方法。
public class Test
ActionServlet extends ActionServlet {
protected void process(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
try
{
request.setCharacterEncoding("GB2312");
System.out.println("COPActionServlet+GB2312");
} catch(Exception e)
{
e.printStackTrace();
System.out.println("error in setCharacterEncoding! COPActionServlet+GB2312");
}
super.process(request, response);
}
}
wel.xml
... ...
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>TestActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>WEB-INF/struts-config.xml</param-value>
</init-param>
... ....
Top
12 楼cdjjh(Jerry)回复于 2005-12-14 11:26:01 得分 0
我们全部同一使用iso8859-1字符集,解决了中文的问题,包括生僻汉字都没有问题Top
13 楼qczl1224(倾情一世『qczl.ys168.com』)回复于 2005-12-14 11:26:56 得分 0
上面注意页面的编码全换成 GB2312,,,
如果页面国际话仍然乱码。。。用JAVA下的native2ascii.exe把资源文件处理一下!!!!!!!!Top
14 楼qczl1224(倾情一世『qczl.ys168.com』)回复于 2005-12-14 11:38:43 得分 0
2.用Struts-Form提交数据时,会在URL里面看到表单数据,有时也会现出SessionId,请问有没有什么办法让它们不可见呢?
你的Form连接ACTION设置怎么设置的?? 看样子一定是连基本的Struts框架都不是很了解!!汗。。。 。。。
还有HTML和JSP标签混用完全没有问题,,出了问题是因为你们对Struts框架不懂原因!!!!!!!!Top
15 楼randb(从大二下学期开始不再迷茫!!狂学编程!!)回复于 2005-12-14 13:44:02 得分 0
谢谢各位的帮助
1.关于编码:
为了既然在页面上显示中文,又能在提交表单后显示中文,我尝试了各位编码类型(主要是ISO8859-1,UTF-8,GB2312)和编码策略,
最后用EncodingFilter字符编码过滤器彻底解决了中文乱码的问题,并发现以下规律(至少在我机上是这样的情况,我试了很多次,如果大家觉得不对可以批我)
(1)为了在浏览器中运行时能看到正常的中文,并能以中文正常提交表单,编码只能用UTF-8,
<%@ page contentType="text/html;charset=UTF-8" %>
ISO-8859-1,GB2312均出现乱码
(2)为了在JBUILDER 2006 里面预览时能看到正常的中文,须在<HEAD>标记里面写上:
<meta content="text/html;charset=UTF-8" http-equiv="content-Type">
ISO-8859-1,GB2312均出现乱码.不知道其它的编辑器是怎样的
(3)用EncodingFilter字符编码过滤器对各个页面请求进行字符统一编码时,只能用GB2312,
ISO-8859-1,GB2312均出现乱码
以上是我的结论,已经过多次试验。。。
2.关于URL暴露参数值:
这个我承认是我把POST写成了GET,很抱歉
3.关地JSTL和STRUTS标签混用:
其实我的意思是在STRUTS里面用JSTL标签会不会让页面风格不像STRUTS,
不过那句话还是要说,JSTL的确比STRUTS的标签更强大,JSTL有的功能STRUTS标签没有。。。。
各位继续发表看法吧。。。Top
16 楼randb(从大二下学期开始不再迷茫!!狂学编程!!)回复于 2005-12-15 07:22:31 得分 0
另外说明一下我的测试环境:
WinXP SP2 CHS
TOMCAT 5.5.9
JDK 1.5
JBUILDER 2006
STRUTS 1.2Top
17 楼randb(从大二下学期开始不再迷茫!!狂学编程!!)回复于 2005-12-15 07:24:49 得分 0
写错了一点。。
(3)用EncodingFilter字符编码过滤器对各个页面请求进行字符统一编码时,只能用GB2312,
ISO-8859-1,UTF-8均出现乱码Top




