JSP/Struts中文乱码问题

本文介绍了一个Struts框架中JSP页面出现中文乱码的问题,并提供了详细的解决方案。通过对Form对象的处理,确保了请求参数正确解析。

问题描述:

JSP页面:
<html:form method="GET" action="Search.do">
    
<html:text property="name" />
    
<html:submit />
</html:form>

Form类:
    ...
    
public String getName() {
        
return name;
    }


    
public void setName(String name) {
        
this.name = name;
    }

    ...

Action类:
    ActionForward 函数里: 
    strName 
= new String(request.getParameter("name").getBytes("ISO-8859-1"), "GB2312");
    
// 这样就可以用strName去使用name参数了!
    
    
// 但是现在要使得JSP页面显示name参数值
    
// 因为第一次进入JSP的时候name是null的
    
// 于是使用下面的方法设置,但是JSP页面会出现中文乱码!why?
    strName = new String(form.getName().getBytes("ISO-8859-1"),"GB2312");
    
// 另:如果上面这条语句隐去,直接执行下面的也会乱码!
    request.setAttribute("name", strName == null ? "" : strName);

 
原因出在JSP页面中的<html:text property="name" />语句:
property
并不会解释name对象,因此在action页面采用request.setAttribute方法是会产生乱码的!

解决方案:
在最后一行加上form.setName(form.getName.getBytes("ISO-8859-1"),"GB2312");语句即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值