Servlet是 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,经过java的API 动态的向客户端输出内容html
servlet规范:包含三个技术点java
1)servlet技术mysql
2)filter技术---过滤器web
3)listener技术---监听器sql
实现步骤:小程序
1)建立类实现Servlet接口 浏览器
2)覆盖还没有实现的方法---重点实现service方法服务器
在web.xml进行servlet的配置oracle
代码实现:app
建立类:
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()方法
总结:
1)init(ServletConfig config)
什么时候执行:开启服务器,servlet对象建立的时候执行,只执行一次
ServletConfig :表明的是该servlet对象的配置信息
2)service(ServletRequest request,ServletResponse response)
什么时候执行:每次请求都会执行,请求一次执行一次
ServletRequest :表明请求 认为ServletRequest 内部封装的是 http请求的信息
ServletResponse :表明响应 认为要封装的是响应的信息
3)destroy()
什么时候执行:servlet销毁的时候执行,stop关闭服务器的时候执行一次
1、servlet的配置
1.基本配置
能够将url-pattern配置一个/,表明该servlet是缺省的servlet
什么是缺省的servlet?
当你访问资源地址全部的servlet都不匹配时,缺省的servlet负责处理,没有缺省的话会找到原始文件web.xml里的缺省。
其实,web应用中全部的资源的响应都是servlet负责,包括静态资源
3.欢迎页面
特色:从最上面开始找,从上至下
2、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");
但在实际开发中,咱们不会直接去实现Servlet接口,由于那样须要覆盖的方法太多, 咱们通常建立类继承HttpServlet
实现步骤:
1)建立类继承HttpServlet类
2)覆盖doGet和doPost
3)在web.xml中进行servlet的配置