大家好,又见面了,我是你们的朋友全栈君。
Servlet
什么是servlet?
- Servlet 是JavaEE规范之一,规范就是接口
- Servlet是javaWeb三大组件之一,三大组件分别是:Servlet Filter过滤器 Listener监听器
- Servlet是运行在服务器上的一个java小程序,他可以接受客户端发送过来的请求
手动实现Servlet
- 编写一个类实现Servlet接口
- 实现service方法,处理请求,并相应数据
- 到web.xmlzhong peizhi servlet程序的访问地址
<?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>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello/</url-pattern>
</servlet-mapping>
</web-app>
servlet生命周期
- 构造Servlet构造器
- 执行init方法
- 执行service方法
- 执行destroy方法
1,2只是在被访问的第一次执行,3会在背刺被访问的时候执行,4在web工程停止的时候执行
一般在实际项目中,都是使用继承HttpServlet类的方式去实现servlet程序。
- 编写一个类去继承HttpServlet
- 根据业务需要重写doGet方法和doPost方法
- 到web.xml中的配置Servlet程序的访问地址
ServletConfig类 ServletConfig类从类名上来看,就知道是Servlet程序的配置信息 三大作用
- 可以获取Servlet程序的别名servlet-name的值
- 获取初始化参数init-param
- 获取ServletContext对象
Servlet程序和Servlet对象都是Tomcat负责创建,我们负责使用 Servlet程序默认是第一次访问的时候创建,ServletConfig是每个Servlet程序创建的时,就创建一个对应的ServletConfig对象
代码语言:javascript复制<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
<init-param>
<param-name>root</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
ServletContext类
- ServletContext是一个接口,他表示Servlet上下文
- 一个web工程,只有一个ServletContext对象实例
- ServletContext对象是一个域对象
- ServletContext是在web工程部署启动的时候创建,在web工程停止的时候销毁
域对象 是可以像Map一样存取数据的对象,叫做域对象,这里域指的是存取数据的操作范围。
作用
- 获取web,xml中配置文件的上下文参数context-param
- 获取当前工程路径,格式:/工程路径
- 获取工程署后在服务器硬盘上的绝对路径
- 像Map一样存取数据
请求转发 getRequestDispatcher(’/servlet’); 特点:
- 浏览器地址栏没有变化
- 是一次请求
- 他们共享Request域中的数据
- 可以访问WEB-INF目录下的文件(浏览器不能直接访问WEB-INF下的文件)
base标签设置页面相对工作时参照的路径
代码语言:javascript复制<base href="http://localhost:8080/07_servlet/a/b/">
web中斜杠的不同意义 /斜杠如果被浏览器解析,得到的地址是:http://ip:port/ 情况
- /serlvet
- servletContext.getRealPath(“/”)
- request.getRequestDispatcher(“/”) 特殊情况 response.sendRediect(“/”);把斜杠发送给浏览器解析得到http://ip:port/
请求重定向
代码语言:javascript复制protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//方式1
resp.setStatus(302);
resp.setHeader("Location","http://localhots:8080/07_sservlet/response2");
//方式2
resp.sendRedirect(""http://localhots:8080/07_sservlet/response2"");
}
javaweb三层架构
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168817.html原文链接:https://javaforall.cn