今天突然同事问到Struts提交乱码,从思路我首先说form提交的method要设置post,后来发现他用的是struts的html:form标签,这个标签默认就是post提交方式;再就想到jsp页面要设置page指令
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page language="java" pageEncoding="UTF-8"%>;还是不行,怎么办呢,难道非要写个filter(filter具体实现我就不写了),重写org.apache.struts.action.ActionServlet?!
重写其实很简单:
public class MyActionServlet extends ActionServlet {
protected void process(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
super.process(request, response);
}
}
想这些对全局都有作用,是比较好的解决方法,当然也不排除个别的需要解决乱码问题,只需要在相关地方做如下转换
new String(form.getUserName().getBytes("iso-8859-1"),"UTF-8")
经典的老问题记载分享一下,希望对大家有帮助!