第二章 Servlet核心技术
2.1 Servlet API
- Servlet API(接口,也是很多个类)
Servlet接口
GenericServlet接口
HttpServlet接口
接口:抽象类的集合 - API(Application Programming Interface)
2.2 Servlet生命周期
Class.forName();//加载并实例化
1.Init();//初始化
2.service();//为客户提供服务
3.destory();//销毁
2.2 处理请求
2.2.1 HTTP请求
请求的method (get()、post()、put()等)
- get():检索资源,在URL中显示username和password,对应的处理方法doGet();
- post():用来向服务器发送需要处理的数据,在URL中不显示username和password,对应的处理方法doPost();
2.2.2 检索请求参数
HttpServletRequest对象:
public String getParameter(String name):返回请求的参数值;
public String[] getParameterValues(String name):返回指定参数那么所包含的所有值,返回值是一个String数组。
public Enumeration getParameterNames():返回一个Enumeration对象,它包含请求中所有的请求参数,元素是String类型的。
public Map getParameterMap():返回一个包含所有请求参数的Map对象,以参数名为键、以参数值为值。
2.2.3 请求转发和重定向的区别:
请求转发:RequestDispatcher 接口下的forward()方法
public void forward(ServletRequest request,ServletResponse response):将请求转发到服务器上的另一个动态或者静态资源。(如Servlet、JSP页面或者HTML页面)
public void include(ServletRequest request,ServletResponse response):控制转发到指定的资源,并将其包含到当前输出中。
重定向:
public void sendRedirect(String location):响应重定向,向客户发送一个重定向的响应。location是新资源的URL;
2.2.4 使用请求对象存储数据
public void setAttribute(String name,Object obj):将指定名称name的对象obj作为属性值存储到请求对象中。
public void getAttribute(String name):返回请求对象中存储的指定名称的属性值。属性不存在则返回null。
public Enumeration getAttributeNames():返回一个Enumeration对象,它是请求对象中包含的所有属性名的枚举。
2.2.5 发送响应(Http response)
Http response包含三个部分:状态行、响应头和响应的数据。
2.2.6 Web部署文件(web.xml)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>db</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
Servlet元素
<servlet>
<servlet-name>ServletName</servlet-name>
<servlet-class>xxxpackage.xxxServlet</servlet-class> <!--Servlet的类-->
<init-param> <!--初始化一个变量,可看成全局变量,可省略-->
<param-name>参数名称</param-name> <!--变量名称-->
<param-value>参数值</param-value> <!--变量值-->
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ServletName</servlet-name>
<url-pattern>/aaa/xxx</url-pattern> <!--映射的url路径 -->
</servlet-mapping>g>
Servlet的子元素
<discripttion>为Servlet指定一个文本描述
<display-name> 为Servlet指定一个简短的名字,可以被某些工具显示
<icon>为Servlet指定一个图标,该图标可以在某些图形界面工具中表示该Servlet
<servlet-name> 指定Servlet的名字,在同一Web应用中,该名字唯一
<servlet-class>指定Servlet类的完整限定名
<jsp-file>指定web应用中jsp文件的完整路径,以’/ '开头
<init-param>定义Servlet的初始化参数 包含<param-name> <param-value>
本人此处曾犯了个错误,把子元素弄成了<init-name> <init-value>
结果报错Can't convert argument: null
<load-on-startup>指定web应用启动时Servlet的加载次序 元素内容必须为整数 如果没有设定该元素或设定为负数,Servlet容器将在客户端首次请求这个Servlet时加载它;如果该值为正数或0,容器将在Web应用部署时加载和初始化这个Servlet,并且先加载数值小的Servlet
<run-as>指定用于执行组件的角色。必须包含<role-name>元素指定角色名
<security-role-ref>声明在组件或部署组件的代码中安全角色的引用,必须包含<role-name>元素 0或1个<role-link>指定到一个安全角色的引用。
<servlet-mapping>元素及其子元素
<servlet-mapping>在Servlet和URL样式之间定义一个映射
包含两个子元素<servlet-name>(必须和<servlet>元素中的名字一致)和<url-pattern>(指定对应于Servlet的URL路径,是相对于Web应用上下文根的路径)
welcome-file-list元素
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报