文章目录

  • Servlet概述
  • Servlet核心接口和类
  • 三种自定义Servlet接口的方法
    • 1.实现Servlet接口
    • 2.继承GenericServlet抽象类
    • 3.继承HttpServlet抽象类
  • 生命周期
    • 概述
  • 配置方式
    • Servlet3.0之后允许使用注解方式配置
    • 任何一个版本都允许使用web.xml配置
  • Servlet获取请求数据
  • Servlet请求乱码问题
    • GET请求使用
    • POST请求使用
    • Servlet响应乱码问题
    • 针对乱码问题总结解决方案
  • ServletRequest和ServletResponse
    • 重定向
    • 请求转发
    • 请求资源路径
    • 单Servlet实现多请求
    • ServletContext Servlet上下文对象
    • HttpServletRequest对象
    • HttpServletResponse对象

Servlet概述

  • 即Server Applet

  • Servlet 是 JavaWEB 服务端的一个小程序,主要用户用户数据的交互,WEB 数据展示和数据传递,是一个动态的资源

  • Servlet 程序可以应对搜友类型的请求和响应,Servlet 主要用于 HTTP 协议的 WEB 服务器程序实现

  • Servlet 开发需要用到两个包

    javax.servlet

    javax.servlet.http

  • 开发中可能会涉及到的接口和类

    javax.servlet.http.Servlet

    javax.servlet.http.GServlet --abstract修饰的类

    javax.servlet.http.HttpServlet

    javax.servlet.http.HttpServletRequest

    javax.servlet.http.HttpServletResponse

    javax.servlet.http.HttpSession

    javax.servlet.http.Cookie

demo

以一个实例来说明 get 请求和 post 请求,前端有两个按钮分别是以 get 方式提交数据和以 post 方式提交数据

前端html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>test</title>
</head>
<body>
<form action="ServletDemo" method="get"><input type="submit" value="GET请求"><br>
</form><form action="ServletDemo" method="post"><input type="submit" value="POST请求"><br>
</form>
</body>
</html>

后端代码ServletDemo

package cn.ocean888.demo1;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;/*** 1.继承HttpServlet interface* 2.重写doget、dopost* 3.使用注解方式告知tomcat服务器当前Servlet的路由*/
@WebServlet("/test")
public class ServletDemo extends HttpServlet {/*** 处理GET请求* @param req HttpServletRequest对象,对应当前浏览器请求数据内容对应的对象* @param resp HttpServletResponse对象,对应是当前浏览器对于浏览器请求的响应* @throws ServletException Servlet异常* @throws IOException IO异常*/@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doGet(req, resp);}/*** 处理post请求*/@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {/*通常情况下,浏览器或者客户端发送数据的请求方式只有一种,对应GET请求和POST请求,在实现Servlet代码时,针对GET和POST完成对应的方法,此处使用doget,实现所有的业务逻辑*///super.doPost(req, resp);System.out.println("post请求方式");doGet(req, resp);}
}

Servlet核心接口和类

interface.javax.servlet.Servlet【核心接口】

Defines methods that all servlets must implement.当前接口中所有的Servlet程序必须实现
A servlet is a small Java program that runs within a Web serverServlet是一个小的Java程序,需要运行在WEB服务器当中。Servlet接口中定义了5个方法public void init(ServletConfig config) throws ServletException;初始化当前Servlet程序,这里需要的参数是ServletConfig,ServletConfig是当前Servlet的配置,该配置可以从注解方式或者从当前项目中的web.xml加载获取public ServletConfig getServletConfig();获取ServletConfig对象,当前对象中保护Servlet配置内容。public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException;【核心方法】Servlet提供服务的方法,浏览器访问当前Servlet程序,service方法是起作用,ServletRequest对应的是请求,ServletResponse对应的是响应public String getServletInfo();获取当时Servlet程序信息对应字符串public void destroy();销毁当前Servlet程序,可以由Tomcat服务器执行,也可也通过servlet程序自己调用

abstract javax.servlet.GenericServlet【Servlet中间商】

 功能是完成了Servlet接口和ServletConfig接口的一部分方法,简化了之后代码的逻辑,主要需要了解的方法:public String getInitParameter(String name);根据初始化参数名字获取对应的值,而且参数值为Stringpublic Enumeration<String> getInitParameterNames();获取所有参数的名字。枚举类型的Listpublic ServletConfig getServletConfig();获取ServletConfig对象public ServletContext getServletContext();获取ServletContext对象,一个Servlet Application有且只有一个ServletContext对应,这是Servlet上下文对象这里同时实现了Servlet接口中的 init 初始化方法

abstract javax.servlet.http.HttpServlet 【Servlet程序基类】

    abstract javax.servlet.http.HttpServlet 这是一个Java中符合Http协议的Servlet程序,继承GenericServlet,同时是Servlet接口和ServletConfig间接实现类。    HttpServlet中首先实现service核心方法,并且将service核心方法的请求方式,响应方式强转为符合Http协议的请求和响应    所有和Servlet业务逻辑无关的初始化方法,设置方法,销毁方法,HttpServlet中全部不需要考虑,只考虑符合Http协议请求方式和响应方式核心方法:protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException符合HTTP GET请求的处理方式protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException     符合HTTP POST请求的处理方式【注意】以上方法不重写,或者执行还是对应的方法,例如super.doGet(req,resp), 响应方式会提示报错 SC_METHOD_NOT_ALLOWED

三种自定义Servlet接口的方法

1.实现Servlet接口

package com.qfedu.b_threeFunction;import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;/*** 遵从Servlet接口实现Servlet程序* 代码中存在太多和业务逻辑无关的代码,增加了程序员的压力!!!* 不可取!!!*/
@WebServlet("/ServletImpl")
public class ServletImpl implements Servlet {/*** 构造方法*/public ServletImpl() {System.out.println("ServletImpl Constructor called");}/*** 初始化方法** @param config 需要使用ServletConfig类对象,也就是Servlet配置来完成初始化操作* @throws ServletException Servlet异常*/@Overridepublic void init(ServletConfig config) throws ServletException {System.out.println("init method called");}/*** 获取ServletConfig对象** @return 获取ServletConfig对象*/@Overridepublic ServletConfig getServletConfig() {return null;}/*** 提供服务核心方法** @param req ServletRequest对象* @param res ServletResponse对象* @throws ServletException Servlet异常* @throws IOException      IO异常*/@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {System.out.println("service method called");}/*** 获取Servlet信息* @return*/@Overridepublic String getServletInfo() {return null;}/*** 销毁Servlet*/@Overridepublic void destroy() {System.out.println("destroy method called");}
}

2.继承GenericServlet抽象类

package com.qfedu.b_threeFunction;import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;/*** 继承GenericServlet 抽象类实现Servlet程序* 对应Servlet接口,在继承GenericServlet情况下,我们需要完成的方法有且* 只有service核心方法。** 代码量明显减少,同时和业务逻辑无关的代码不需要考虑,但是没有针对性,* 没有对应Http协议请求方式的对应处理方法* * @author MI 2020/3/30 11:30*/
@WebServlet("/GenericServletExtends")
public class GenericServletExtends extends GenericServlet {@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {System.out.println("GenericServletExtends service method called");}
}

3.继承HttpServlet抽象类

package com.qfedu.b_threeFunction;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** 继承HttpServlet实现符合HTTP协议的Servlet程序* 并且可以自定义实现请求方式的对应处理方法** @author MI 2020/3/30 11:34*/
@WebServlet("/HttpServletExtends")
public class HttpServletExtends extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("HttpServletExtends doGet or doPost method called");resp.getWriter().append("Hello Servlet");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
【注意】继承HttpServlet重写HttpServlet对应HTTP协议的处理方法,一定要完成,如果未完成或者说依然执行调用的是HttpServlet中的方法,会有错误出现 405 Method Not Allow

平时主要用的就是这种方式

生命周期

tomcat管理Servlet程序的声明周期,主要涉及4个方法

  • Constructor方法
  • init初始化方法
  • service方法
  • destory销毁方法

概述

  • 阶段一

    Constructor方法执行,实例化过程。Tomcat中的Servlet容器调用Servlet程序对应的构造方法创建Servlet类对象

    前提条件:

    1. 当前Servlet程序需要被执行
    2. 当前Servlet程序配置了开机启动

    而且Constructor有且只执行一次

  • 阶段二:

    init(ServletConfig config) 初始化方法,当Servlet程序创建之后一定要对当前Servlet程序进行初始化过程,需要使用ServletConfig对象完成初始化操作,ServletConfig对象中是从注解或者web.xml中获取对应的配置信息,完成初始化操作,而且只执行一次

  • 阶段三:

    service方法提供服务
    当前Servlet程序准备完毕,Servlet程序是在被请求时执行service方法,完成对应请求和响应的执行过程。到HttpServlet抽象类中对于service方法实现,并且按照HTTP请求方式完成划分工作。比如doGet doPost

  • 阶段四:

    Tomcat服务器中Servlet容量对于Servlet进行销毁过程,有几种情况下会执行destroy方法

    1. Tomcat服务器关闭,Servlet容器会执行每一个Servlet程序的destroy方法
    2. 当前Servlet程序执行过程中,存在特定条件选择关闭
    3. 通常情况下Servlet容器对于Servlet程序的管理是自动完成的,不需要人为干预

配置方式

Servlet3.0之后允许使用注解方式配置

属性名 概述
name Servlet名字,可以自定义
value url资源匹配方式,和urlPatterns互斥
urlPatterns 允许当前Servlet有多个匹配方式,和value互斥
loadOnStartup 是否启动服务时加载当前Servlet,默认 -1,选择加载 1
initParams WebInitParam 注解类型 name和value 当前Servlet配置初始化配置
@WebServlet(name = "AnnotationServlet",urlPatterns = {"/AnnotationServlet", "/as", "/saolei"},//允许多个匹配规则loadOnStartup = 1,initParams = {@WebInitParam(name = "aa", value = "ocean"), @WebInitParam(name = "bb", value = "46号技师")})//初始化参数
public class AnnotationServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("Annotation Config Servlet");String aa = this.getServletConfig().getInitParameter("aa");//获取初始化参数String bb = this.getServletConfig().getInitParameter("bb");System.out.println(aa);System.out.println(bb);resp.getWriter().append("Annotation Config Servlet");}
}

任何一个版本都允许使用web.xml配置

<!-- web.xml 配置文件 -->
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><!-- Servlet 程序声明,告知Servlet程序对应的名字和Servlet程序对应的class --><servlet><!-- ServletName --><servlet-name>WebXmlServlet</servlet-name><!-- Servlet对应的class,该名字必须是完整的包名.类名 --><servlet-class>cn.ocean.WebXmlServlet</servlet-class><!-- 当前Servlet程序初始化操作,需要放在servlet-class之后 --><init-param><param-name>param1</param-name><param-value>ocean</param-value></init-param><init-param><param-name>param2</param-name><param-value>ocean</param-value></init-param><!-- 当前Servlet随着Tomcat服务器启动加载 --><load-on-startup>1</load-on-startup></servlet><!-- Servlet映射关系 --><servlet-mapping><!-- 告知Tomcat服务器,当前url-pattern映射的是哪一个Servlet --><servlet-name>WebXmlServlet</servlet-name><!-- URL匹配原则 --><url-pattern>/WebXmlServlet</url-pattern></servlet-mapping><!-- Servlet映射关系 --><servlet-mapping><!-- 告知Tomcat服务器,当前url-pattern映射的是哪一个Servlet --><servlet-name>WebXmlServlet</servlet-name><!-- URL匹配原则 --><url-pattern>/wxs</url-pattern></servlet-mapping>
</web-app>

两种方式对比

注解配置简单,直观,高效url-pattern 冲突问题,并且是在Tomcat启动时发现,需要注意细节web.xml繁琐,麻烦,步骤繁多url-pattern 一旦写错或者冲突,web.xml文件会提示错误!!!

Servlet获取请求数据

【注意】1. 要求前端提交数据的name属性和后台获取getParameter参数一致2. 在后台通过HttpServletRequest获取数据使用getParameter方法,返回值是String类型

前端代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>02-ParameterUpload</title>
</head>
<body>
<form action="GetParameterServlet" method="get"><span>姓名:</span><input type="text" name="userName"> <br><span>密码:</span><input type="password" name="password"> <br><input type="submit" value="提交">
</form>
<hr>
<form action="GetParameterServlet" method="post"><span>姓名:</span><input type="text" name="userName"> <br><span>密码:</span><input type="password" name="password"> <br><input type="submit" value="提交">
</form>
</body>
</html>

后端代码

/*** 获取前端通过HTTP请求方式发送过来的数据** @author MI 2020/3/30 16:02*/
@WebServlet("/GetParameterServlet")
public class GetParameterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 浏览器通过form表单提交的数据都在HttpServletRequest对象中// 通过getParameter获取对应的参数名数据,参数名和form表单中的name属性一致String userName = req.getParameter("userName");String password = req.getParameter("password");System.out.println(userName + ":" + password);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("POST请求方式");doGet(req, resp);}
}

Servlet请求乱码问题

GET请求使用

 Tomcat7以及以下版本使用情况下,前端数据传输使用的HTTP协议,传递的方式是UTF-8编码,Tomcat服务器Request对象接收数据时,使用的编码是ISO-8859-1。数据接收方式和发送方式使用的编码集不一致,导致中文乱码Tomcat8以上GET请求中文乱码基本上不会出现
String userName = req.getParameter("userName");
// 这里需要转换对应你的编码集方式
userName = new String(userName.getBytes("ISO-8859-1"), "UTF-8");
String password = req.getParameter("password");
System.out.println(userName + ":" + password);

POST请求使用

 客户端发送数据的方式是通过该UTF-8传输,客户端需要设置同样的方式接受,需要设置HttpServletRequest.setCharacterEncoding("utf-8");统一设置编码。

Servlet响应乱码问题

 HttpServletResponse响应对象默认采用的编码集方式是根据当前系统编码集有关,这里使用的编码集是GB2312,浏览器默认解析方式是UTF-8解决方案:告知HttpServletResponse,当前响应编码集和方式为UTF-8response.setContentType("text/html;charset=utf-8");

针对乱码问题总结解决方案

 针对于Tomcat8及其以上版本的Tomcat服务器软件,需要在接受数据时和响应数据时设置对应的编码集request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");以上两行代码可以放在所有的Servlet程序之前Tomcat7及其以下版本,需要注意GET请求方式使用的编码集为ISO-8859-1

ServletRequest和ServletResponse

重定向

浏览器发送HTTP请求 ==> 服务器
服务器接收到请求之后 发送302状态码 新的location ==> 浏览器
浏览器收到302状态码 + location 按照新的location发送新的请求 ==> 服务器特征:1. 该操作是浏览器行为2. 重定向最少存在两次的浏览器请求3. 重定向情况下,浏览器的地址栏会发生改变4. 重定向操作存在两个或者两个以上的请求,每一次新的请求,都会丢失之前的请求数据,也就是request对象【requeset作用域范围】5. 重定向可以访问任何资源,不管是当前WEB服务器资源,还是网络端的资源都是可以访问
@WebServlet("/RedirectServlet")
public class RedirectServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 请求和响应乱码问题解决req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");// 重定向操作,重定向当前WEB Application中的index.jspresp.sendRedirect("index.jsp");}
}

请求转发

浏览器发送HTTP请求 ==> 服务器
服务器接收到请求之后内部资源处理跳转 ==> 服务器其他资源
服务器其他资源处理完毕之后,才通过原始的请求和响应返回数据 ==> 客户端特征:1. 转发是服务器行为2. 转发情况下浏览器有且只发送了一次请求3. 转发情况下浏览器的地址栏没有发生任何改变4. 转发情况下,浏览器的请求数据时被保存的,是通过request进行传递的5. 转发情况下有且只能转发WEB Application整个项目的内容资源
@WebServlet("/dispatch")
public class DispatchServlet1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 转发到WEB Application内部资源// getRequestDispatcher("dispatch2") 指定的内部资源名字// forward(req, resp) 转发到指定资源,并且带有当前对应用户请求的request对象和response对象req.getRequestDispatcher("/dispatch2").forward(req, resp);}
}

请求资源路径

浏览器输入: http://localhost:8080/Day42/dispatchHOST:http://127.0.0.1:8080资源名:Day42/dispatchTomcat收到Day42/dispatch,资源请求之后,首先找到Day42项目或者说路径,然后在web.xml或者注解中找到url-pattern 为 dispatch的内容。从而执行对应的Servleturl-pattern是存在匹配原则精确匹配/具体名字后缀名匹配*.do *.action *.xxx  主要是按照规定结尾的url-pattern都可以触发对应的Servlet程序通配符匹配/* 匹配所有请求,服务器端所有资源都可以匹配

单Servlet实现多请求

WEB Application中Servlet是整个WEB项目的核心,Servlet用于接收用户的请求,并且处理用户响应,每一个业务逻辑都有一个对应的Servlet,Servlet非常非常多,对于Servlet容器是存在一定压力的。
采用Servlet做一个分发操作,分发用户去请求和对应的响应,让别人处理。Servlet程序做的事情就非常的Easy了需要对于用户请求的URL进行解析操作,通过一写特定的参数完成分发操作,让一个Servlet程序能够满足多个条件处理后缀名匹配:*.do匹配

代码

/*** 分发操作的Servlet,使用*.do匹配,并且解析操作,执行对应的方法*/
@WebServlet("*.do")
public class TransferServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String requestURI = req.getRequestURI();System.out.println(requestURI);String method = requestURI.substring(requestURI.lastIndexOf("/") + 1, requestURI.lastIndexOf("."));System.out.println(method);Class<ExecuteMethod> executeMethodClass = ExecuteMethod.class;Method method1 = null;try {method1 = executeMethodClass.getMethod(method);method1.invoke(null);} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {e.printStackTrace();}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
/*** 目标执行方法*/
public class ExecuteMethod {public static void add() {System.out.println("Add Method");}public static void delete() {System.out.println("Delete Method");}public static void update() {System.out.println("Update Method");}public static void select() {System.out.println("Select method");}
}

ServletContext Servlet上下文对象

概述

Servlet上下文对象,当WEB Application启动时,Tomcat服务器会根据web.xml以及注解方式,创建一个唯一的ServletContext对象,包含整个项目中很多核心的资源数据,并且是一个整个WEB Application的【公共区域】,所有的Servlet程序和JSP程序都可以使用ServletContext中存储的数据。当WEB Application项目关闭时,ServletContext对象被销毁

获取ServletContext对象

方式一:GenericServlet可以通过getServletContext方法获取
方式二:ServletConfig接口中提供了getServletContext方法获取
方式三:HttpSession提供getServletContext方法获取
方式四:HttpServletRequest提供getServletContext方法获取

ServletContext对象特征

1. 唯一性,不管通过哪一个方式获取,都是同一个对象
2. WEB Application启动时加载创建,退出时销毁
3. ServletContext中存储的数据时一个共享资源,使用小心
4. ServletContext是一个【域对象】
@WebServlet("/TestServletContext")
public class TestServletContext extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 1. 可以直接通过当前Servlet对象来获取对应的ServletContext数据 【墙裂推荐】ServletContext servletContext1 = this.getServletContext();// 2. 通过ServletConfig对象获取对应的ServletContext对象ServletContext servletContext2 = this.getServletConfig().getServletContext();// 3. 通过Request请求对象获取对应都是ServletContext对象ServletContext servletContext3 = req.getServletContext();// 4. 通过HtttpSession对象获取ServletContext对象HttpSession session = req.getSession();ServletContext servletContext4 = session.getServletContext();System.out.println(servletContext1 == servletContext2);System.out.println(servletContext2 == servletContext3);System.out.println(servletContext3 == servletContext4);/*有效方法1:获取当前项目的发布路径*/System.out.println(servletContext1.getRealPath("/"));/*有效方法2:获取服务器版本号可以资源的根目录*/System.out.println(servletContext1.getServerInfo());System.out.println(servletContext1.getContextPath());/*有效方法3:作为数据传递的容器*/servletContext1.setAttribute("Tag", "骚磊");/*有效方法4:ServletContext 刚刚区域数据存储还是删除*/System.out.println(this.getServletContext().getAttribute("Tag"));this.getServletContext().removeAttribute("Tag");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

HttpServletRequest对象

 HttpServletRequest对象是有服务器根据用户的请求创建得到,一个请求对应一个Request对象。继承关系interface ServletRequest--| interface HttpServletRequestTomcat完成的符合HttpServletRequeset接口的实现类对象,对应Requeset----| org.apache.catalina.connector.RequestFacadeRequest对象中存在一大堆的方法
方法名 功能
getMethod() 获取请求方式 GET or POST
getRequestURL() 获取用户访问浏览器的完整路径
getRequestURI() 获取用户请求资源名
getContextPath() 获取虚拟目录名 Application Context
getQueryString() GET请求的所有参数,POST请求通过请求实体无法获取
getProtocol() 获取当前使用的网络传输协议 HTTP/1.1
getRemoteAddr() 获取客户端IP地址
getRemoteHost() 主机地址
getRemotePort() 用户请求当前资源的端口号
getRemoteUser() 用户名字
Enumeration getHeaderNames() 获取所有请求头名字
getHeader(String) 获取指定请求头名称对应的值

请求参数相关方法【重点】

方法 功能
String getParameter(String) 根据指定的参数名获取对应的值,返回值类型为String
Enumeration getParameterNames() 获取所有参数的名字
String[] getParameterValues(String) 获取指定参数名对应的字符串数组参数值 例如: 多选
Map<String, String[]> getParameterMap() 获取当前Request请求中所有参数和参数值的Map双边队列,而且可以存着数组形式【框架常用】

HttpServletResponse对象

用户发送请求到服务器,服务器会对应当前用户的请求针对性的提供的响应,对应的就是HttpServletResponse对象
服务器可以通过response对象发送响应告知浏览器,浏览器可以根据服务器响应数据进行解析操作。
方法 功能
setContentType() 设置当前响应返回数据类型
PrintWriter getWriter() 字符流对象
setHeader(name, value) 设置响应头信息
setStatus(int) 设置当前页面的状态码
getOutputStream() 输出字节流对象

Javaweb-Servlet总结(概述、接口使用、配置、获取请求方式、路径操作、Request对象、Response对象)相关推荐

  1. Servlet基础:接口、类、请求响应、配置、会话追踪、上下文、协作、异常

    10.1 Servlet介绍 ​ Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的Web服务器端编程技术,主要用于在Web服务器端获得客户端的访问请求信息和动 ...

  2. SpringMvc4中获取request、response对象的方法

    springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...

  3. java request获取域,Java Web - Servlet(13)HttpServletRequest详解(获取请求数据、请求分派、请求域)(二)...

    Java Web -- Servlet(13)HttpServletRequest详解(获取请求数据.请求分派.请求域)(2) HttpServletRequest ----------------- ...

  4. JavaWeb Servlet过滤器概述

    Servlet过滤器 1.什么是过滤器 Servlet过滤器具有拦截浏览器端请求的功能,Servlet过滤器可以改变请求中的内容来满足实际开发中的需求. 实质上Servlet过滤器就是在web应用服务 ...

  5. 调用第三方接口的几种请求方式

    第一种方式: String url4="https://www.showmebug.com/open_api/v1/interviews"; json=new JSONObject ...

  6. 【JavaWeb】Servlet系列——HttpServletRequest接口详解

    文章目录 23 HttpServletRequest接口详解 23.1 关于HttpServletRequest接口 23.2 HttpServletRequest接口的实现类谁写的? HttpSer ...

  7. Servlet | HttpServletRequest接口、通过request接口获取请求参数

    目录 一:HttpServletRequest接口 二:通过request接口获取请求参数 一:HttpServletRequest接口 (1)HttpServletRequest是一个接口,全限定名 ...

  8. 重学JavaWeb —— Servlet,简单全面一发入魂

    文章目录 Servlet 概述 基本使用 两个重要对象 请求转发 会话技术 Cookie Session 对比小结 其它相关对象 ServletContext ServletConfig 过滤器 概述 ...

  9. JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)

    JavaWeb--Servlet Tomcat工作机制动画演示(点击动图可全屏观看) 什么是Servlet Servlet(Server Applet),全称Java Servlet,未有中文译文.是 ...

最新文章

  1. AliCloudDB for redis应用场景之存储最新N条聊天记录
  2. 【opencv_python学习之二.五】如何查看opencv_python的函数说明
  3. matlab截图放不下,[转载]【MATLAB】MATLAB的自带数据及可生成数据的函数——图片形式...
  4. 【深度学习笔记】Windows 下 pip 安装paddle.fluid
  5. java使用泛型后消除泛型_如何以及何时使用泛型
  6. pdf转换成word教程
  7. lisp 线性标注自动避让_本科阶段就挑战自动驾驶开发?华为云ModelArts说Yes!
  8. Android -- 启动Service并传递数据
  9. jave类命名_Java重命名文件– Jave移动文件
  10. unity3d 挂载脚本_Unity3D加载资源的四种方式
  11. 20000本当当豆瓣畅销书电子书免费领取,免费送
  12. PTA-1021-Deepest Root
  13. C++ 求解最小公倍数
  14. 注册昵称时限制 中文7个字 字母21个
  15. 公众号和知乎排版神器 - mdnice.com
  16. 人生歪理,歪得很有道理
  17. 水晶苍蝇拍(14):战胜人性,值得珍藏的投资感悟!
  18. Foods Keep Younger, Strong And Healthy
  19. 硬盘空间免费扩容2T!!!
  20. 制作Wi-Fi Ducky远程HID攻击设备

热门文章

  1. 麦库记事,想不到还有这本事
  2. 计算机病毒破坏能力分类,计算机病毒从破坏力分为哪些类
  3. 活动预告 | GAIDC 全球人工智能开发者先锋大会
  4. Oracle19c安装(4) - Oracle Sql developer连接数据库
  5. 游戏引擎Flax Engine源码分析(二)渲染
  6. node koa-helmet 提高网站安全性
  7. 优秀课程案例:使用Scratch制作俄罗斯方块彩色高级版
  8. 计算长方形的面积和周长
  9. 处男,要不要告诉对象_告诉,不要问
  10. Anaconda手动安装第三方库/离线库