Servlet简介
Servlet是 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API 动态的向客户端输出内容
servlet规范:包含三个技术点
1)servlet技术
2)filter技术---过滤器
3)listener技术---监听器
请求响应过程
Servlet快速入门
实现步骤:
1)创建类实现Servlet接口
2)覆盖尚未实现的方法---重点实现service方法
在web.xml进行servlet的配置
代码实现:
创建类:
1 public class MyServlet implements Servlet{ 2 public void destroy() { 3 System.out.println("destory正在运行..."); 4 5 } 6 public ServletConfig getServletConfig() { 7 return null; 8 } 9 public String getServletInfo() { 10 return null; 11 } 12 public void init(ServletConfig arg0) throws ServletException { 13 //1.获取servlet名称 14 String servletname=arg0.getServletName(); 15 System.out.println(servletname); 16 //2.获取初始化参数 17 String url=arg0.getInitParameter("url"); 18 System.out.println(url); 19 //3.获取Servletcontext对象 20 ServletContext servletcontext=arg0.getServletContext(); 21 System.out.println("init正在运行..."); 22 23 } 24 public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { 25 System.out.println("service 正在运行..."); 26 } 27 }
web.xml:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 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"> 3 <display-name>WEB02</display-name> 4 <servlet> 5 <servlet-name>MyServlet</servlet-name> 6 <servlet-class>com.oracle.demo01.MyServlet</servlet-class> 7 <init-param>//初始化参数 8 <param-name>url</param-name> 9 <param-value>mysql.jdbc...</param-value> 10 </init-param> 11 <load-on-startup>3</load-on-startup>//启动Servlet的优先级--数值是优先级的值,值越小越优先执行 12 </servlet> 13 <servlet-mapping> 14 <servlet-name>MyServlet</servlet-name> 15 <url-pattern>/MyServlet</url-pattern> 16 </servlet-mapping> 17 <welcome-file-list> 18 <welcome-file>index.html</welcome-file> 19 <welcome-file>index.htm</welcome-file> 20 <welcome-file>index.jsp</welcome-file> 21 <welcome-file>default.html</welcome-file> 22 <welcome-file>default.htm</welcome-file> 23 <welcome-file>default.jsp</welcome-file> 24 </welcome-file-list> 25 </web-app>
浏览器:
运行结果:
int()方法
service()方法
destory()方法
总结:
Servlet接口中的方法的生命周期为:
1)init(ServletConfig config)
何时执行:开启服务器,servlet对象创建的时候执行,只执行一次
ServletConfig :代表的是该servlet对象的配置信息
2)service(ServletRequest request,ServletResponse response)
何时执行:每次请求都会执行,请求一次执行一次
ServletRequest :代表请求 认为ServletRequest 内部封装的是 http请求的信息
ServletResponse :代表响应 认为要封装的是响应的信息
3)destroy()
何时执行:servlet销毁的时候执行,stop关闭服务器的时候执行一次
一、servlet的配置
1.基本配置
2.缺省Servlet
可以将url-pattern配置一个/,代表该servlet是缺省的servlet
什么是缺省的servlet?
当你访问资源地址所有的servlet都不匹配时,缺省的servlet负责处理,没有缺省的话会找到原始文件web.xml里的缺省。
其实,web应用中所有的资源的响应都是servlet负责,包括静态资源
3.欢迎页面
特点:从最上面开始找,从上至下
二、ServletContext对象
1.什么是Servletcontext对象
ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象 内部封装是该web应用的信息,一个web应用只有一个ServletContext对象。
特点:
(1)一个web应用只有一个ServletContext对象
(2)ServletContext对象的生命周期是:
创建:该web应用被加载(服务器启动或发布web应用(前提,服务器启动状 态))
销毁:web应用被卸载(服务器关闭,移除该web应用)
2.怎么获得ServletContext对象
(1)Servltet里的init方法里
(2)HttpServltet里的doGet方法里
3.servletcontext的作用
(1)获得全局参数
1 //获取全局参数 2 String url=servletContext.getInitParameter("url");
xml文件:
(2)获得web应用中任何资源的绝对路径(重要 重要 重要)
1 //获取web03工程下的资源绝对路径(给一个相对路径--服务器里面的路径,获取一个绝对路径) 2 String patha=servletContext.getRealPath("WEB-INF/classes/a.txt"); 3 String pathb=servletContext.getRealPath("b.txt"); 4 String pathc=servletContext.getRealPath("WEB_INF/c.txt");
//d文件不能复制,在原工程里面,在服务器文件夹里没有
(3)ServletContext是一个域对象(重要 重要 重要)
概念:存储数据的区域就是域对象
特点:
1.ServletContext域对象的作用范围:整个web应(所有的web资源都可以随意向 servletcontext域中存取数据,数据可以共享)
2.一个web项目就有一个servletcontext对象
域对象的通用的方法:
setAtrribute(String name,Object obj);
getAttribute(String name);
removeAttribute(String name);
//获取ServletContext对象 ServletContext servletcontext=getServletContext(); //向域中传值 servletcontext.setAttribute("name", "张三"); //从域中取值--值是obj需要转型 String name=(String)servletcontext.getAttribute("name");
HttpServlet
但在实际开发中,我们不会直接去实现Servlet接口,因为那样需要覆盖的方法太多, 我们一般创建类继承HttpServlet
实现步骤:
1)创建类继承HttpServlet类
2)覆盖doGet和doPost
3)在web.xml中进行servlet的配置