Servlet入门有关知识
一、思维导图:
二、目录结构:
目录
一、Servlet
1.Servlet简介
2.创建第一个Servlet
3.Servlet容器
4.Servlet生命周期的方法
5.Servlet容器响应客户请求的过程
6.Servlet注册和运行,映射的细节
7.ServletConfig
8.ServletContext
二、Http
1.Http简介
2.使用GET请求来传递参数
3.使用 POST 方式传递参数
4.如何在Serlvet中获取请求信息
5.介绍ServletRequest的具体方法和使用场景
三、正文
一、Servlet
1.Servlet简介
①什么是Servlet?
答:JavaServlet是和平台无关的服务器,它运行在Servlet容器中。
Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户端的通信采用“请求/响 应”的模式。
②Servlet可以完成的功能?
答: 创建并返回基于客户请求的动态HTML页面;
创建可嵌入到现有的HTML页面中得部分HTML页面;
与服务器资源进行通信;
2.创建第一个Servlet
步骤①:创建一个类实现Servlet的接口
步骤②:在web.xml文件中配置和映射这个Servlet 目的是为了让浏览器通过映射访问到java类
配置如下:
????过程解析:通过url—>全类名—>访问类方法
3.Servlet容器
①什么是Servlet容器?
答:运行Servlet, jsp, Filter等软件环境。
②Servlet容器的作用?
答:可以创建Servlet 并调用Servlet的相关生命周期方法 更多的是JSP Filter Listener Tag….
4.Servlet生命周期的方法
1⃣️构造器:只有第一次请求Servlet创建实例 调用构造器,单实例的。
2⃣️init:只被调用一次 创建实例后立即被调用 ,用于初始化当前的Servlet
3⃣️service:被多次调用 每次请求都会调用Service方法 实际用于响应请求。
4⃣️destroy:只被调用一次 ,在当前Servlet所在的WEB应用被卸载前调用,用于释放当前的Servlet占用的资源。
5⃣️load-up-startup参数:作用:用于指定Servlet被创建的时机
????参数的影响:
若为负数 则在第一次请求时被创建。
若为0或者正数 则在当前WEB应用被加载时创建实例 数值越小越早被创建。
5.Servlet容器响应客户请求的过程
6.Servlet注册和运行
7.映射的细节
在Servlet映射到的URL中也可以使用 * 通配符,但是只能有两种固定的格式:
①格式是“*.扩展名”
②格式是以正斜杠(/)开头并以“/*”结尾。
—————代码部分—————
<servlet-mapping>
<servlet-name>secondServlet</servlet-name>
<url-pattern>*.扩展名</url-pattern>
</servlet-mapping>
OR
<servlet-mapping>
<servlet-name>secondServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
③需要注意的点!
注意: 以下的既带 / 又带扩展名的不合法.
<servlet-mapping>
<servlet-name>secondServlet</servlet-name>
<url-pattern>/*.action</url-pattern>
</servlet-mapping>
—————代码部分—————
8.ServletConfig
①ServletConfig的作用是?
答:封装了Servlet的配置信息 并且可以获取ServletContext对象。
②配置Serlvet 初始化参数
注意:
1.配置初始化参数 要在<servlet>里面
2.配置初始化参数 如果存在<load-on-startup> 要在<load-on-startup>后 配置。
③通过ServletConfig获取参数(API)
1⃣️.getInitParameterNames
2⃣️.getInitParameter
3⃣️.getServletName
4⃣️.getServletContext
9.ServletContext
①什么是ServletContext?
答:当前WEB应用的一个大管家,可以从中获取当前WEB应用的各个方面信息。
②范围:相对于<init-param>参数,该参数是全局的
③使用方法:
1⃣️通过 ServletContext servletContext=config.getServletContext();
2⃣️再用servletContext调用 config的接口方法
④其他方法应用:
1⃣️获取当前web应用某一个文件的绝对路径 getRealPath()
2⃣️获取当前web应用某一个文件对应的输入流 getResourceAsStream(String path)
⑤来个????
例如:
解析:
需要加上相对于当前web应用下的根路径(取决于文件编译后存放的根目录),否则会失败。
同时也可以用classLoader的方法
例如:
二、Http
1.Http简介
①什么是Http
答:用于WEB浏览器和WEB服务器之间交换数据的过程以及数据本身的格式。
具体说:浏览器访问多图网页的过程
图示:
2.使用GET请求来传递参数
常见的方式有:
①. 在浏览器地址栏中输入某个URL地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式为GET。
②. 如果网页中的<form>表单元素的 method 属性被设置为了“GET”,浏览器提交这个FORM表单时生成的HTTP请求消息的请求方式也为GET。
③. 使用GET请求方式给WEB服务器传递参数的格式:
http://www.atguigu.com/counter.jsp?name=lc&password=123
④. 使用GET方式传送的数据量一般限制在 1KB 以下。
3.使用 POST 方式传递参数
常见的方式有:
①. POST 请求方式主要用于向 WEB 服务器端程序提交 FORM 表单中的数据: form 表单的 method 置为 POST
②. POST 方式将各个表单字段元素及其数据作为 HTTP 消息的实体内容发送给 WEB 服务器,传送的数据量要比使用GET方式传送的数据量大得多。
4.如何在Serlvet中获取请求信息
①答:由于每次请求都会调用 service() 方法 所以利用Servlet 的 service() 方法用于获取
②栗子:public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
③解析:ServletRequest: 封装了请求信息. 可以从中获取到任何的请求信息.ServletResponse: 封装了响应信息, 如果想给用户什么响应, 具体可以使用该接口 的方法实现.
5.介绍ServletRequest的具体方法和使用场景
①String getParameter(String name): 根据请求参数的名字, 返回参数值.
②String[] getParameterValues(String name): 根据请求参数的名字, 返回请求参数对应的字符串数组.
此方法可用于复选框 返回数组。
③Enumeration getParameterNames(): 返回参数名对应的 Enumeration 对象, 类似于 ServletConfig(或 ServletContext) 的 getInitParameterNames() 方法.
举个例子⬇️
④Map getParameterMap():
返回请求参数的键值对: key: 参数名, value: 参数值, String 数组类型.
举个例子⬇️
⑤获取请求的uri
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String requestURI = httpServletRequest.getRequestURI();
System.out.println(requestURI); // /day_29/loginServlet
⑥获取请求的方式
String method = httpServletRequest.getMethod();
System.out.println(method); //GET
⑦获取servlet映射路径
String servletPath = httpServletRequest.getServletPath();
System.out.println(servletPath); // /loginServlet
⑧如果是GET请求,获取请求参数对应的那个字符串 就是?后面的字符串
String queryString = httpServletRequest.getQueryString();
System.out.println(queryString); //
结束语:
写的不好的地方请各位及时指出,感谢各位!