zoukankan      html  css  js  c++  java
  • 一、HttpServletRequest接口 二、HttpServletReponse接口 三、POST和GET请求方式及其乱码处理 四、ServletContext对象和ServletConfig对象

    一、HttpServletRequest接口
    内部封装了客户端请求的数据信息
    接收客户端的请求参数、HTTP请求数据包中配置参数

    ###<1>常用方法
    getContextPath()重要
    getContentType()
    getMethod()
    getRequestURL()
    getLocalAddr()
    getLocalName()
    getRemoteAddr()
    getRemoteHost()
    getRemotePort()
    getQueryString()

    ###<2>获取客户端请求参数
    String value = getParameter(String key);
    String [] datas = request.getParameterValues(String key);


    ###<3>form表单action设置
    1. 直接写Servlet的url名称
    myservlet
    2. /项目名称/Servlet的url名称
    /Day14_Servlet/myservlet
    3. 全路径
    http://localhost:8090/Day14_Servlet/myservlet

    ###<4>存储数据,具体存储区域的对象,一次请求
    将数据存储到request对象中:
    setAttribute(String key,String value);
    从request对象中获取数据:
    String value = getAttribute(String key);
    从request对象中移除数据:
    removeAttribute(String key);

    ###<5>请求的转发
    1. 获取转发器对象
    RequestDispatcher rd = request.getRequestDispatcher(String path);

    2. 转发操作 (跳转静态资源(DefaultServlet)和servlet)
    request.setAttribute(String key,String value);
    rd.forward(request,response);

    #二、HttpServletReponse接口,封装响应数据包的数据
    ###<1>常用方法
    setStatus(int code);//设置状态码
    addHeader(String key,String value);//设置响应数据包的头部信息
    ...
    ...


    ###<2>自定义重定向
    ![](2.png)

    //1. 自定义实现重定向
    //设置状态码
    response.setStatus(302);
    response.setHeader("Location", "/Day14_Servlet/code/mainpage.html");
    response.setHeader("Location", "http://www.baidu.com");

    //2. 使用response封装好的方法,实现重定向
    response.sendRedirect("/Day14_Servlet/code/mainpage.html");

    //3. 定时跳转
    response.setHeader("refresh", "3;url=/Day14_Servlet/code/mainpage.html");


    ###<4>响应字节数据
    封装服务器处理的结果
    getOutputStream();//指向响应数据包的response body部分
    getWriter();//指向响应数据包的response body部分

    #三、POST和GET请求方式及其乱码处理
    ###<1>Post和Get请求
    常见get请求:
    在地址栏中直接回车
    点击超链接
    表单提交数据时,指定method=get

    get请求:将请求数据放置到url后面(?key=value&key2=value2)
    安全性较低
    对请求数据量有限制,4k

    post请求:将请求参数封装到HTTP请求数据包中的请求体中
    安全性较高
    对请求数据量没有限制

    ###<2>请求数据的乱码处理
    post处理乱码:
    <1>前端页面的字符编码:
    <meta charset="utf-8">
    <2>在Servlet中设置HttpServletRequest的解码方式
    request.setCharacterEncoding("UTF-8");

    get处理乱码:
    <1>前端页面的字符编码:
    <meta charset="utf-8">
    <2>在Servlet中将从HttpServletRequest对象中获取的中文字符重新设置解码字符集
    new String(乱码字符.getBytes("iso-8859-1"),"utf-8");

    ###<3>响应数据乱码处理
    1. 响应的结果数据是纯本文数据:response.setCharacterEncoding("utf-8");
    设置当前响应结果的字符集
    不设置会使用当前浏览器默认的字符集进行解码

    2. 响应的结果数据是页面数据:response.setContentType("text/html;charset=utf-8");
    //在创建流对象之前设置页面的编码
    设置当前页面响应结果的字符集


    #四、ServletContext和ServletConfig对象
    ![](3.png)

    ###<1>概念
    当前web应用的上下文对象
    封装该应用的信息,一个web应用只对应唯一的一个ServletContext对象
    服务器开启其就被创建,服务器关闭或者web应用被移除,此对象销毁

    ###<2>获取
    this.getServletContext();
    servletconfig.getServletContext()
    ###<3>作用
    1. 获取全局的初始化参数
    <!-- 全局的数据 -->
    <context-param>
    <param-name>url</param-name>
    <param-value>jdbc:mysql://localhost:3306/db1</param-value>
    </context-param>

    在某一个Servlet中:
    创建ServletContext对象
    context = getServletContext();
    获取初始化参数
    context.getInitParameter("key");

    2. 存储全局的数据(域对象)
    setAttribute(String key,String value);
    getAttribute(String key);

    3. 获取web应用中的任何资源(绝对路径)
    String 绝对路径 = getRealPath("相对路径");

    String imgPath = context.getRealPath("k11.jpg");
    String text3Path = context.getRealPath("WEB-INF/test3.txt");
    String text2Path = context.getRealPath("WEB-INF/classes/test2.txt");

    ###补充:域对象
    一次请求 request service() 转发 (request) 服务一个用户的一次请求
    一次回话 session 多次请求 服务一个用户的多次请求
    整个web应用 context 整个项目的运行 服务多个用户的多次请求


    ###ServletConfig
    描述一个Servlet的配置信息
    获取某一个Servlet中配置的初始化数据(web.xml)
    config.getInitParameter(String key);
    config.getServletContext()
    config.getServletName()

    注意:为了保证数据安全,此对象只能获取一次数据

    不忘初心,方得始终! 坚持!坚持!坚持!!
  • 相关阅读:
    一剑走四方华山论剑
    本命年之冬去春来
    time of our lives从世界杯主题曲看厚脸皮的德国人:)
    我回来啦:)
    PHP undefined index的几种解决方法
    Nginx 502 Bad Gateway错误及解决方案收集
    Nginx Cache的5种方案
    PHP中ts和nts版本 vc6和vc9编译版本的区别
    Linux 查看连接数命令
    Nginx Proxy 作图片缓存配置文件
  • 原文地址:https://www.cnblogs.com/sumboy/p/9058639.html
Copyright © 2011-2022 走看看