站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题struts提交后,中文显示乱码

struts提交后,中文显示乱码

摘要: struts提交后,中文显示乱码


我做的是简单的login测试,点提交后,输入的中文变成了乱码,用validation验证的中文能正常显示,page也<%@ page language="java" contentType="text/html; charset=UTF-8" %>这样设定了,还有哪里会出问题呢?


如果是tomcat的话可以尝试重新编码
new String(q.getBytes("ISO-8859-1"),"UTF-8");


兄弟,这个问题我刚接触的时候也遇到过,如果是request获得的话
要通过
request.request.setCharacterEncoding("gb2312");来解决,
要是页面显示问题 通过 <%page contentType="text/html; charset=gb2312" "%>
来稿定!


上面多了个request 不好意思


楼上2位的应该可以解决基本的乱码问题了。。。


这是我的Login.jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>


<head>
JSP for loginForm form
</head>
<body>

username :

password :



</body>



这是我LoginAction的代码:

package com.test.struts.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 org.apache.struts.validator.DynaValidatorForm;

public class LoginAction extends Action {

public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
DynaValidatorForm loginForm = (DynaValidatorForm) form;

String username=loginForm.getString("username");
String password=loginForm.getString("password");
if(username.equals("test")||password.equals("test")){
return mapping.findForward("indexGo");
}else{
return mapping.getInputForward();
}

}

}


你们说的办法,在这里好像不管用呐。。。


写一个myActionServlet来并覆盖ActionServlet中的process()方法。

protected void process(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException {
/**@todo Override this org.apache.struts.action.ActionServlet method*/ request.setCharacterEncoding("GB2312");//就加着一行一切都解决了
super.process(request, response);
}

当然别忘了改一下web.xml里面的配置

action
strutsdemo.myActionServlet

debug
2


config
/WEB-INF/struts-config.xml

2


改一下servlet-class标签中的内容就可以!
应该可以的,你试一下!



tianming2002()

我在LoginAction里加了
try{
request.setCharacterEncoding("UTF-8");
}catch(Exception e){}

但是还是没管用。。


自己写一个转换的类
import java.io.*;

public class ToGBK {
public static String toGBK(String instr){
String outstr=null;
if(instr!=null){
byte[] bytes = null;
try {
bytes = instr.getBytes("ISO8859-1");
outstr=new String(bytes,"GBK");
} catch (UnsupportedEncodingException ex) {
System.out.println("ToGBK_Error");
}
return outstr;
}else{
return null;
}
}

}


然后String username=ToGBK.toGBK(loginForm.getString("username"));


to tianzhijie11(抓青蛙)

你的方法我刚才试了,也不行啊。。。


问题还没解决,大家多帮忙


用过滤器处理所有的POST提交,设置TOMCAT的ENCODING处理所有GET的提交
这样才完美啊


编码方式指定一下,一般的话用UTF-8(国际化),还有就是设置一下你的应用服务器连接池的characterEncoding和8080端口的URIEncoding,最好是自己再加一个Filter


zhangj0571(笨鸟飞飞)

应用服务器连接池的characterEncoding
8080端口的URIEncoding

这两个在哪里设定?我是用eclipse的myeclipse插件做的。


chq32(无情)

怎么设置能说具体点吗


要看看你数据库的编码是不是也是utf-8


我根本都没连数据库啊
就是一个简单的测试传参数


filter也试了,没用!!!

继续无奈ING!!!


tomcat中解决提交中文乱码问题,针对post 和 get是不同的
post方式提交需要设置一个Filter,在里面设置request.setCharacterEncoding("gb2312")就可以了。
get方式提交需要在server.xml中connector后面加入URLEncoding="GBK"


我重写了actionservlet的process方法

在我的MyActionServlet的名字下提示:
The serializable class EncodeActionServlet does not declare a static final serialVersionUID field of
type long
这个错误

不知道怎么解决 。。


ok了!!!

乱码已经解决!!!


还是用了重写process方法,设定字符集!!


写个自己的EncodeActionServlet,设定Process()方法:

package com.test.struts;

import org.apache.struts.action.*;
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;

public class EncodeActionServlet extends ActionServlet
{
protected void process(
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
HttpSession session = request.getSession(true);
if (session.isNew())//session超时
{
response.sendRedirect("/login.jsp");
return;
}
request.setCharacterEncoding("utf-8"); //进行统一的中文转码
super.process(request, response);
}
}


然后在web.xml里加入如下配置:


↑返回目录
前一篇: 很急 大家帮帮忙
后一篇: 关于下拉框的问题