【servlet】HttpServletRequest、HttpServletResponse

JavaWeb全套

提取码:tipl
【servlet】HttpServletRequest、HttpServletResponse_第1张图片

【servlet】HttpServletRequest、HttpServletResponse_第2张图片
【servlet】HttpServletRequest、HttpServletResponse_第3张图片

【servlet】HttpServletRequest、HttpServletResponse_第4张图片
【servlet】HttpServletRequest、HttpServletResponse_第5张图片
【servlet】HttpServletRequest、HttpServletResponse_第6张图片

    <servlet>
        <servlet-name>mm</servlet-name><!--声明一个变量存储servlet接口实现类路径-->
        <servlet-class>com.example.JavaWeb.controller.OneServlet</servlet-class><!--声明servlet接口实现类类路径-->
    </servlet>

    <!--
    TomcatString mm = "com.example.JavaWeb.controller.OneServlet"
    -->

    <!--为了降低用户访问Servlet接口实现类难度,需要设置简短请求别名-->
    <servlet-mapping>
        <servlet-name>mm</servlet-name>
        <url-pattern>/one</url-pattern><!--设置简短别名,要以"/"开头-->
    </servlet-mapping>
    <!--如果现在浏览器向Tomcat索要OneServlet时地址
    http://localhost:8080/JavaWeb/one
    -->

Servlet对象的生命周期

1.网站所有的Servlet接口实现类的实例对象,只能由Http服务器负责创建
开发人员不能手动创建servlet接口类的实例对象

2.在默认的情况下,Http服务器接收到对于当前Servlet接口实现类第一次请求时
自动创建Servlet接口实现类的实例对象

在手动配置的情况下,可以实现Http服务器在启动的时候自动创建Servlet接口实现类的实例对象

3.多个用户访问服务器,在Http服务器运行期间,一个Servlet接口实现类只能创建出一个实例对象

4.在Http服务器关闭时刻,自动将网站所有的servlet对象进行销毁

HttpServletRequest

功能
1)可以读取请求协议包中请求行信息
2)可以读取请求协议包中的请求头或请求体中的请求参数信息
3)可以代替代替浏览器向Http服务器申请资源文件调用

【servlet】HttpServletRequest、HttpServletResponse_第7张图片

        //1.通过请求对象,读取请求行中的url信息
        String url = request.getRequestURL().toString();
        //2.通过请求对象,读取请求行中的method信息
        String method = request.getMethod();
        //3.通过请求对象,读取请求行中的uri信息
        String uri = request.getRequestURI();
        System.out.println("url:"+url);
        System.out.println("method:"+method);
        System.out.println("uri:"+uri);

读取请求头的值
【servlet】HttpServletRequest、HttpServletResponse_第8张图片

Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()){
    String paramName = (String)parameterNames.nextElement();
    String value = request.getParameter(paramName);
    System.out.println("请求参数的名称: "+paramName+" 请求的参数值: "+value);
}

【servlet】HttpServletRequest、HttpServletResponse_第9张图片
以Get方式发送中文参数内容,得到正常结果,请求参数保存在请求头中
以Post方式发送中文内容,会得到乱码,请求参数保存在请求体中
原因在于解码采用的字符集

<center>
    <form action="http://localhost:8080/myWeb/one" method="post">
        请输入值:<input type="text" name="userName">
        <input type="submit" value="post请求方式">
    form>
center>
        req.setCharacterEncoding("utf-8");
        String userName = req.getParameter("userName");
        System.out.println("从请求体中获取的参数值:"+userName);

HttpServletResponse

功能:
1)将执行结果以二进制形式写入到[响应体]
2)设置响应头中[content-type]属性值,从而控制浏览器使用
对应编译器将响应体二进制数据编译成[文字、图片、视频、命令]
3)设置响应头中[location]属性,将一个请求地址赋值给location
从而控制向浏览器向指定服务器发送请求

package com.example.selvlet_04.Controller;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

public class OneServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String result = "Hello,World";//执行结果

        //响应对象将结果写入响应体中
            //1.通过响应对象,向Tomcat索要输出流
            PrintWriter out = response.getWriter();
            //2.通过输出流将执行的结果以二进制的形式写入响应体中
            out.write(result);


    }//doGet执行完毕


}

【servlet】HttpServletRequest、HttpServletResponse_第10张图片

package com.example.selvlet_04.Controller;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

public class ThreeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String result = "Java
Mysql
HTML
"
;//既有文字信息,又有html标签命令 String result2 = "红烧排骨
糖醋里脊"
; response.setContentType("text/html;charset=utf-8");//在响应头设置内容类型 PrintWriter out = response.getWriter(); out.println(result); out.println(result2); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }

【servlet】HttpServletRequest、HttpServletResponse_第11张图片

package com.example.selvlet_04.Controller;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class FourServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String result = "http://www.baidu.com";
        response.sendRedirect(result);
    }
    /*
    浏览器在接收响应包之后,如果
    发现响应头存在location属性
    自动通过地址栏向location指定网站发送请求
     */

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

你可能感兴趣的:(JavaWeb)