美文网首页
1、Servlet

1、Servlet

作者: 天之冰 | 来源:发表于2017-06-11 23:20 被阅读0次

1.请求和响应

  • HttpServletRequest request

    • 代表
      • request代表浏览器发送给服务器的请求报文,该对象由服务器创建并以参数的形式传入到doGet和doPost方法中,在这两个方法中可以直接使用
    • 作用
      • 1)获取求情参数
        String userName = request.getParameter("username"); String password = request.getParameter("password");
      • 2)获取当前Web应用的虚拟路径
        String contextPath = request.getContextPath();
      • 3)转发
        //获取转发器 RequestDispatcher dispatcher = request.getRequestDispatcher("success.html"); //转发请求 dispatcher.forward(request, response);
      • 4)是一个域对象
  • HttpServletResponse response

    • 代表

      • response代表服务器发送给浏览器的响应报文,该对象由服务器创建并以参数的形式传入到doGet和doPost方法中,在这两个方法中可以直接使用
    • 作用

    • 1)给浏览器响应一个页面或页面的一个片段
      //响应一个页面的片段 writer.write("<h1>Response Success!</h1>"); //响应一个完整的页面 writer.write("<!DOCTYPE html>"); writer.write("<html>"); writer.write("<head>"); writer.write("<meta charset='UTF-8'>"); writer.write("<title>Insert title here</title>"); writer.write("</head>"); writer.write("<body>"); writer.write("<h1>登录成功!</h1>"); writer.write("</body>"); writer.write("</html>");

    • 2)重定向
      response.sendRedirect("success.html");

  • 转发与重定向的区别

    • 1)转发发送一次请求;重定向发送两次请求
    • 2)转发浏览器地址栏地址无变化;重定向浏览器地址栏地址有变化
    • 3)转发可以访问WEB-INF下的资源;重定向不能访问WEB-INF下的资源
    • 4)转发可以共享request域中的属性;重定向不能共享request域中的属性

2.Web应用中的路径问题

  • 相对路径不靠谱

    • 在转发的情况下,由于地址栏地址无变化,有时候就可以导致浏览器解析地址错误,所以不建议使用相对路径,建议使用绝对路径
  • 绝对路径

    • 什么绝对路径:以 / 开头的路径即为绝对路径
    • 绝对路径中 / 代表什么?
      • 如果路径由浏览器解析: / 就代表当前服务器,例如http://localhost:8080
      • 哪些路径由浏览器解析
        • 1)html标签中的路径
          • 如img中的src,script标签中的src属性;a标签中的href属性,link标签中的href属性;form表单中的action属性
        • 2)重定向中的路径
      • 如果路径由服务器解析:/ 就代表当前Web应用,例如:http://localhost:8080/Web01_Servlet_Ex
      • 哪些路径由服务器解析
        • 1)web.xml中url-pattern中的路径
        • 2)转发中的路径
  • base标签

    • 可以让我们以相对路径的形式来表示绝对路径
      <base href="http://localhost:8080/Web01_Servlet_Ex/">
    • 注意:base标签href属性后面的 / 必须写

3.中文乱码问题

  • 编码:将字符转换成二进制数
  • 解码:将二进制数转换成字符
  • 乱码:编码和解码使用的字符集不一致就会导致乱码
  • 请求乱码
    • 请求由浏览器发送给服务器
      • 浏览器编码:浏览器编码的字符集有HTML页面决定,具体有HTML页面中的meta标签决定
      • 服务器解码:服务器默认的字符集是ISO-8859-1
      • 由于两者的字符集不一致所以导致乱码
      • 解决方案
        • 对于POST请求
          //该操作一定要在第一次获取请求参数之前 request.setCharacterEncoding("utf-8");

        • 对于GET请求

          • 由于get请求的请求参数在地址栏中,在到达Servlet之前已经被服务器进行解码,所以在Servlet里使用POST请求的方式设置字符集就不管用了。
          • 这个时候我们需要改变服务器URL解码的字符集,在server.xml文件中的Connector标签中添加URIEncoding="UTF-8"
            <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
  • 响应乱码
    • 响应由服务器发送给浏览器
      • 服务器编码:服务器默认的字符集是ISO-8859-1
      • 浏览器解码:浏览器解码默认的字符集是GBK
      • 解决方案
        • 通过以下两种方式设置
          //通过以下两种方式告诉浏览器使用UTF-8字符集进行解码 //方式一: response.setHeader("Content-Type", "text/html;charset=utf-8"); //方式二: response.setContentType("text/html;charset=UTF-8");
      • 设置了响应头之后浏览器就会使用设置的字符集进行解码,同时在Servlet中也会使用该字符集进行编码

相关文章

  • 深入理解Servlet技术

    1. 什么是servlet servlet Servlet是javax.servlet.Servlet包中定义的一...

  • java_servlet/jsp

    1.Servlet 3.1 什么是Servlet 3.2 servlet的功能: 3.3 如何使用servlet?...

  • Servlet

    1.Servlet 学习大纲 servlet 概念以及相关接口简介 servlet 执行过程 servlet 路径...

  • 6月19日面试总结

    1、Servlet的生命周期 1.加载和实例化:Servlet容器负责加载和实例化Servlet。当Servlet...

  • 深入理解 Servlet

    1、什么是 Servlet ? Servlet(Server Applet)是 Java Servlet 的简称,...

  • 学习笔记一Servlet

    1.1 Servlet API 包括四个包 1)javax.servlet 定义Servlet和Servlet...

  • javaweb学习总结——Servlet学习笔记(17.09.1

    servlet 简介 1.servlet叫什么 Servlet(Server Applet)是Java Servl...

  • java基础-day39-Servlet

    Servlet基础 1. Servlet概述 1.1 什么是Servlet 1.2第一个Servlet程序 1.3...

  • 1、Servlet

    1.请求和响应 HttpServletRequest request代表request代表浏览器发送给服务器的请求...

  • JSP/Servlet

    1.Servlet ​Servlet(Server Applet)是Java Servlet的简称,称为小服务程序...

网友评论

      本文标题:1、Servlet

      本文链接:https://www.haomeiwen.com/subject/owskqxtx.html