Jsp前台提交中文乱码问题解决方案(Tomcat项目运行时,加载jar包或类文件的顺序)

众所周知,在我们javaWeb下项目中常常会实现前后台交互,而前后台交互最常见的问题就是中文乱码问题,下面我总结出四种中文乱码解决方案:


前提:前台页面必须以post方式提交中文 —因为post会设置http协议头“Content-Type = application/x-www-form-urlencoded”,这样Tomcat才知道这是编码的字符数据

  1. tomcat是欧洲人的公司是,默认的编码是iso8859-1,我们的第一种方法就是修改tomcat的默认编码:在Tomcat的server.xml中的中添加一个属性:URIEncoding=”utf-8”
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="utf-8"/>

缺陷:因为Tomcat是公共平台,你只是其中的一个项目,不能把平台看成私有的即最好不要去修改,否则其它项目可能会出问题。


2**.把Tomcat解错的码还原回来**

        String name=request.getParameter("name");
        name=new String(name.getBytes("iso8859-1"),"utf-8");

缺陷:但如果前台传输的很多参数都是中文,那么我们对每个参数都要这样还原,显然比较麻烦!


3.请求和回应都设置编码

request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");

缺陷:如果以后要改编码,就得改源代码,对客户来说比较麻烦。对程序员也一样。


4.其实是在WEB-INF/web.xml中把编码设置成参数,然后在这里读取出来,利用“法3”进行设置。以后如果要更改编码,只要更改web.xml中的相应参数设置就OK了
cn.hncu.services.LoginServlet是你的Servlet

  • 在web.xml对应的servlet加入这么一条
<servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>cn.hncu.services.LoginServlet</servlet-class>
    <init-param>
        <param-name>name</param-name>
        <param-value>utf-8</param-value>
    </init-param>
  </servlet>
  • 在 @Override public void init(ServletConfig config) throws
    ServletException { charset=config.getInitParameter(“name”);

    }设置charset

  • 最后在@Override public void service(ServletRequest req, ServletResponse
    res) throws ServletException, IOException { }方法中设置编码
request.setCharacterEncoding(charset);
response.setContentType("text/html;charset=utf-8");

Tomcat项目运行时,加载jar包或类文件的顺序:TOMCAT_HOME\lib –> webapps\项目名\WEB-INF\lib –> webapps\项目名\WEB-INF\classes目录下面的类
//后加载的会覆盖前面的—即后加载有效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值