您的位置:首页 > 编程语言 > Java开发

Java Web------Servlet以及常见乱码问题

2019-01-13 11:41 183 查看

Servlet以及常见乱码问题

servlet

  • servlet是一个普通的类,继承HttpServlet类
  • servlet交给服务器运行,它没有main()方法
    如果只创建一个普通的类的话,无法继承Httpservlet类 ,因为没有相应的包(我们要在Tomcat的lib目录下找到servlet-api.jar包,将其复制到名为lib的文件夹下,如果没有lib文件夹可以自己创建。)

servlet生命周期:构造httpservlet的对象(调用构造方法),调用init初始化方法,调用service方法(doget或dopost),最后是销毁对象调用destory方法。
注意:servlet的构造方法和初始化方法只被调用一次,说明servlet是单例的,每次浏览器发出请求时,都是多次调用service方法的。当对象被销毁时,调用destory方法。

有时加快调用service方法,我们可以通过在xml文件中设置:

<servlet>
<load-on-startup>1</load-on-startup>
</servlet>

这样当我们在启动服务器时,会自动创建对象并且调用构造方法。这样当浏览器每次放出请求时,直接就可以调用service方法。(数字1代表的是优先级,数字越小越先执行。)

当没有设置请求方式时,默认为Get

通过Request对象获取参数

request.getParameter("");//通过参数名来获取参数
request.getParameterValues("");//通过参数名来获取参数(多个参数)
request.getParameterNames("");//获取所有参数名

Response对象

response.setHeader("Refresh","2;/../..");//通过设置响应头来实现定时跳转页面
response.sendRedirect("/..");//重定向
/*--------------------------------*/
response.setStatus(302);
response.setHeader("location","/.."); //这两行代码等价于重定向,浏览器向服务器放出两次请求。
/*--------------------------------*/
response.getWriter.write();//向浏览器发送实体内容

常见乱码问题

当使用Get请求方式时,使用request对象接收的参数,应该对参数再次使用iso-8859-1进行编码,再用utf-8进行解码,来解决乱码问题

new String(xxx.getBytes(“iso-8859-1”),“utf-8”);

当使用Post请求方式时,使用request对象接收的参数,应该在接参前使用 request.setCharacterEncoding(“utf-8”); 来覆盖编码集,以便解码时不会出现中文乱码问题

当使用response对象向浏览器发送试题内容时:
设置数据类型和编码格式,将我们向浏览器输入的内容按照utf-8进行编码,浏览器会自动根据编码格式使用相对应的解码格式进行解码,这样就不会出现乱码

response.setContentType("text/html;charset=utf-8");
/*----------------------------------------*/
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
//这两行代码的作用同上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐