前言
路遥说,在一个平凡的世界里,人要承受一定的痛苦和不安。但只要相信个体奋斗的力量,坚定地与生存搏斗,就能过上想要的生活。
很喜欢《平凡的世界》的一句话,一直不断的鼓励我努力向前,也送个各位看到这个写的很烂的文章的人,共勉~
一、Servlet
运行在服务器端的小程序,他可以接受客户端发送来的请求,并响应数据给客户端
Servlet是JavaEE规范之一。规范自然就是接口
Servlet就是JavaWeb三大组件之一。三大组件分别是:Servlet、Filter、Listerner监听器
1.什么是JavaEE?
Java EE,Java 平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enterprise Edition (J2EE)
是 Sun 公司为企业级应用推出的标准平台,用来开发B/S架构软件。Java EE 可以说是一个框架,也可以说是一种规范。
2.如何手动实现 Servlet程序
1、编写一个类去实现servlet接口
2、实现service方法,处理请求,并响应数据
3、到web.xml中去配置servlet程序的访问地址
实例
package com.caq.study; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; public class HelloServlet implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("init初始化方法"); // 1.可以去获取Servlet程序的别名servlet-name的值 System.out.println("HelloServlet的别名是:"+servletConfig.getServletName()); // 2.获取初始化参数init-param // 3.获取ServletContext对象 } @Override public ServletConfig getServletConfig() { return null; } /** * service方法专门用来处理请求和响应的 * @param servletRequest * @param servletResponse * @throws ServletException * @throws IOException */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { // System.out.println("hello servlet!"); //ServletRequest是HttpServletRequest的父接口,我们通过强转为一个子接口类型 HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; String method = httpServletRequest.getMethod(); if("GET".equals(method)){ doGet(); }else if ("POST".equals(method)){ doPost(); } } // get请求的操作 public void doGet(){ System.out.println("get请求"); System.out.println("get请求"); } // post的请求 public void doPost(){ System.out.println("post请求"); System.out.println("post请求"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }
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_4_0.xsd" version="4.0"> <!-- servlet标签给Tomcat配置Servlet程序--> <servlet> <!-- 给servlet起一个别名,一般是类名--> <servlet-name>HelloServlet</servlet-name> <!-- servlet-class是Servlet类的全类名--> <servlet-class>com.caq.study.HelloServlet</servlet-class> </servlet> <!-- servlet-mapping标签给servlet配置访问地址--> <servlet-mapping> <!-- servlet标签作用是告诉服务器,当前配置的地址给那个servlet程序使用--> <servlet-name>HelloServlet</servlet-name> <!-- url-pattern标签配置访问地址--> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet> <servlet-name>HelloServlet2</servlet-name> <servlet-class>com.caq.study.HelloServlet2</servlet-class> </servlet> <!-- <url-pattern标签配置访问地址 / 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径 /hello 表示地址为:http://ip:port/工程路径/hello --> <servlet-mapping> <servlet-name>HelloServlet2</servlet-name> <url-pattern>/hello2</url-pattern> </servlet-mapping> <servlet> <servlet-name>HelloServlet3</servlet-name> <servlet-class>com.caq.study.HelloServlet3</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet3</servlet-name> <url-pattern>/hello3</url-pattern> </servlet-mapping> <servlet> <servlet-name>ContextServlet1</servlet-name> <servlet-class>com.caq.study.ContextServlet1</servlet-class> </servlet> <servlet-mapping> <servlet-name>ContextServlet1</servlet-name> <url-pattern>/context1</url-pattern> </servlet-mapping> </web-app>
3.url 地址到 Servlet机制
里面写的很详细了,不需要怎么补充了
4.Servlet 的生命周期
1、执行Servlet构造器方法
2、执行init初始化方法
第一、二步,是在第一次访问,的时候创建 Servlet 程序会调用。
3、执行 service 方法
第三步,每次访问都会调用。
4、执行 destroy 销毁方法
第四步,在 web工程停止的时候调用
5.GET 和 POST 请求的分发处理
实例和标题2代码一致,我都写在一块了
下面补充一点知识
Get请求和Post请求的区别?
GET请求一般用去请求获取数据
POST一般作为发送数据到后台时使用
GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的
POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制
GET请求比较常见的方式是通过url地址栏请求
POST最常见是通过form表单发送数据请求
6.通过继承 HttpServlet 实现 Servlet
一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。
1、编写一个类去继承 HttpServlet 类
2、根据业务需要重写 doGet 或 doPost 方法
3、到 web.xml 中的配置 Servlet 程序的访问地址
package com.caq.study; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class HelloServlet2 extends HttpServlet { /** * doGet方法在get请求时调用 * @param req * @param resp * @throws ServletException * @throws IOException */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("HelloServlet2的doGet方法"); } /** * 在post请求的时候调用 * @param req * @param resp * @throws ServletException * @throws IOException */ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("HelloServlet2的doPost方法"); } }
xml文件在第一个实例中
7.如何使用idea创建Servlet程序
8.Servlet类的继承体系
二、ServletConfig类
ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类。
Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建,我们负责使用。
Servlet 程序默认是第一次访问的时候创建,ServletConfig 是每个 Servlet 程序创建时,就创建一个对应的ServletConfig 对 象。
ServletConfig 类的三大作用
1、可以获取 Servlet 程序的别名 servlet-name 的值
2、获取初始化参数 init-param
3、获取 ServletContext 对象