Javaweb-Servlet总结(概述、接口使用、配置、获取请求方式、路径操作、Request对象、Response对象)
文章目录
- 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类对象
前提条件:
- 当前Servlet程序需要被执行
- 当前Servlet程序配置了开机启动
而且Constructor有且只执行一次
阶段二:
init(ServletConfig config) 初始化方法,当Servlet程序创建之后一定要对当前Servlet程序进行初始化过程,需要使用ServletConfig对象完成初始化操作,ServletConfig对象中是从注解或者web.xml中获取对应的配置信息,完成初始化操作,而且只执行一次
阶段三:
service方法提供服务
当前Servlet程序准备完毕,Servlet程序是在被请求时执行service方法,完成对应请求和响应的执行过程。到HttpServlet抽象类中对于service方法实现,并且按照HTTP请求方式完成划分工作。比如doGet doPost阶段四:
Tomcat服务器中Servlet容量对于Servlet进行销毁过程,有几种情况下会执行destroy方法
- Tomcat服务器关闭,Servlet容器会执行每一个Servlet程序的destroy方法
- 当前Servlet程序执行过程中,存在特定条件选择关闭
- 通常情况下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对象)相关推荐
- Servlet基础:接口、类、请求响应、配置、会话追踪、上下文、协作、异常
10.1 Servlet介绍 Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的Web服务器端编程技术,主要用于在Web服务器端获得客户端的访问请求信息和动 ...
- SpringMvc4中获取request、response对象的方法
springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...
- java request获取域,Java Web - Servlet(13)HttpServletRequest详解(获取请求数据、请求分派、请求域)(二)...
Java Web -- Servlet(13)HttpServletRequest详解(获取请求数据.请求分派.请求域)(2) HttpServletRequest ----------------- ...
- JavaWeb Servlet过滤器概述
Servlet过滤器 1.什么是过滤器 Servlet过滤器具有拦截浏览器端请求的功能,Servlet过滤器可以改变请求中的内容来满足实际开发中的需求. 实质上Servlet过滤器就是在web应用服务 ...
- 调用第三方接口的几种请求方式
第一种方式: String url4="https://www.showmebug.com/open_api/v1/interviews"; json=new JSONObject ...
- 【JavaWeb】Servlet系列——HttpServletRequest接口详解
文章目录 23 HttpServletRequest接口详解 23.1 关于HttpServletRequest接口 23.2 HttpServletRequest接口的实现类谁写的? HttpSer ...
- Servlet | HttpServletRequest接口、通过request接口获取请求参数
目录 一:HttpServletRequest接口 二:通过request接口获取请求参数 一:HttpServletRequest接口 (1)HttpServletRequest是一个接口,全限定名 ...
- 重学JavaWeb —— Servlet,简单全面一发入魂
文章目录 Servlet 概述 基本使用 两个重要对象 请求转发 会话技术 Cookie Session 对比小结 其它相关对象 ServletContext ServletConfig 过滤器 概述 ...
- JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)
JavaWeb--Servlet Tomcat工作机制动画演示(点击动图可全屏观看) 什么是Servlet Servlet(Server Applet),全称Java Servlet,未有中文译文.是 ...
最新文章
- AliCloudDB for redis应用场景之存储最新N条聊天记录
- 【opencv_python学习之二.五】如何查看opencv_python的函数说明
- matlab截图放不下,[转载]【MATLAB】MATLAB的自带数据及可生成数据的函数——图片形式...
- 【深度学习笔记】Windows 下 pip 安装paddle.fluid
- java使用泛型后消除泛型_如何以及何时使用泛型
- pdf转换成word教程
- lisp 线性标注自动避让_本科阶段就挑战自动驾驶开发?华为云ModelArts说Yes!
- Android -- 启动Service并传递数据
- jave类命名_Java重命名文件– Jave移动文件
- unity3d 挂载脚本_Unity3D加载资源的四种方式
- 20000本当当豆瓣畅销书电子书免费领取,免费送
- PTA-1021-Deepest Root
- C++ 求解最小公倍数
- 注册昵称时限制 中文7个字 字母21个
- 公众号和知乎排版神器 - mdnice.com
- 人生歪理,歪得很有道理
- 水晶苍蝇拍(14):战胜人性,值得珍藏的投资感悟!
- Foods Keep Younger, Strong And Healthy
- 硬盘空间免费扩容2T!!!
- 制作Wi-Fi Ducky远程HID攻击设备