servlet获取后台数据乱码处理

 Servlet(Server Applet)是Java Servlet的简称,称为小办事程序或办事毗连器,用Java编写的办事器端程序,具有自力于平台和和谈的特征,本家儿要功能在于交互式地浏览和生当作数据,生当作动态Web内容。

      狭义的Servlet是指Java说话实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般环境下,人们将Servlet理解为后者。Servlet运行于撑持Java的应用办事器中。从道理上讲,Servlet可以响应任何类型的请求,但绝大大都环境下Servlet只用来扩展基于HTTP和谈的Web办事器。

      最早撑持Servlet尺度的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web办事器起头撑持尺度的Servlet。

方式/步调

  1. 1

    第一步:新建一个javaweb项目。

    打开myeclipse file --》new--》web project 

    具体操作如下图所示:

  2. 2

    第二步:搭建servlet开辟情况。

    新建一个servlet UserServlet.java,index.jsp在web.xml中设置装备摆设servlet

    代码如下:

    package com.test.servlet;

    import java.io.IOException;

    import javax.servlet.ServletException;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    public class UserServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    this.doPost(request, response);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    String sex = request.getParameter("sex");

    String[] bobby = request.getParameterValues("bobby");

    System.out.println("性别 :"+sex);

    for (int i = 1; i <= bobby.length; i++) {

    System.out.println("快乐喜爱"+i+" :"+bobby[i-1]);

    }

    }

    }

  3. 3

    第三步:问题阐发,解决思绪。

    1、乱码发生原因是get请求在前端处置时将中利用ISO-8859-1进行编码而java文件和jsp文件一般都是利用UTF-8编码,如下图1所示

    2、确认了问题解决起来也就简单,只要利用对应的编码对其解码就可以解决此问题。

  4. 4

    第四步:解决方案1在后台利用ISO-8859-1解码。

    具体实现代码如下所示:

    package com.test.servlet;

    import java.io.IOException;

    import javax.servlet.ServletException;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    public class UserServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    this.doPost(request, response);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    String sex = request.getParameter("sex");

    String[] bobby = request.getParameterValues("bobby");

    System.out.println("性别 :"+new String(sex.getBytes("ISO-8859-1"),"utf-8"));

    for (int i = 1; i <= bobby.length; i++) {

    System.out.println("快乐喜爱"+i+" :"+new String(bobby[i-1].getBytes("ISO-8859-1"),"utf-8"));

    }

    }

    }

  5. 5

    第五步:利用post体例提交表单。

    <form action="/servlet/userServlet.do" method="post">

        快乐喜爱1:<input type="text" name="bobby"><br/>

        快乐喜爱2:<input type="text" name="bobby"><br/>

        快乐喜爱3:<input type="text" name="bobby"><br/>

        快乐喜爱4:<input type="text" name="bobby"><br/>

        性别:<input type="text" name="sex"><br/>

        <input type="submit" value="提交">

        </form>

  6. 6

    第六部:传输之前利用编码。

    1、js前端编码

    encodeURI 方式  编码

    decodeURI 方式 解码

    2、java后台编码

    import java.net.URLDecoder;

    import java.net.URLEncoder;

    //URLEncoder.encode("乱码","UTF8");编码

    //URLDecoder.decode("乱码","UTF-8")解码

  • 发表于 2019-03-14 20:01
  • 阅读 ( 754 )
  • 分类:其他类型

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
联系我们:uytrv@hotmail.com 问答工具