了解sevlet的周期历程
构造方法(创建servlet 对象执行)创建该servlet的对象,在执行init方法加载数据最后
执行service方法当前servlet处于运行状态。
Servlet 初始化后调用 init () 方法。
Servlet 调用 service() 方法来处理客户端的请求。
Servlet 销毁前调用 destroy() 方法 长时间未访问。
getServletCong方法(获得serverweb.xml文件)
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
创建第一个oneservlet的类 采用接口。
public class OneServlet implements Servlet {
定义了五个方法
public fourServlect() { super(); // TODO Auto-generated constructor stub } //构造方法一alt+/一键生成 @Override public void destroy() { // dectroy 删除select,cpu释放内存 System.err.println("当servlet不在实现该方法"); } @Override public ServletConfig getServletConfig() { // TODO Auto-generated method stub //获得 get servlet 小程序 confign 设置信息 //getServletConfig()作用用于servlet在/web/html文件中设置信息 return null; } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } @Override public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub //初始数据 System.out.println("加载信........息"); System.out.println("说明浏览器每一次访问servlet就是第一次访问创建同一个对象"); System.out.println("加载信息。。。。。2"); } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub //等待浏览器访问 System.out.println("servlect处于运行状态"); }
注册页面
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0"> <display-name>Day02jsp</display-name> <welcome-file-list> <!-- <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> --> <welcome-file>index.jsp</welcome-file> <!-- <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> --> </welcome-file-list> <!-- 注册oneServlet --> <!-- 第一部分 注册OneServlet--> <servlet> <!-- srvlet 增加名字 --> <servlet-name>OneServlet</servlet-name> <!--注册servlet地址 --> <servlet-class>com.servlet.OneServlet</servlet-class> <load-on-startup>5</load-on-startup> </servlet> <!--第二部分 :设置一个浏览器可以访问的servlet的地址 --> <servlet-mapping> <servlet-name>OneServlet</servlet-name> <!--设置浏览器地址 --> <url-pattern>/aa</url-pattern> <!-- 设置地址访问一定加/asd --> </servlet-mapping> <!-- 注册twoServlet --> <!-- 第一部分 注册OneServlet--> <servlet> <!-- srvlet 增加名字 --> <servlet-name>TwoServlet</servlet-name> <!--注册servlet地址 --> <servlet-class>com.servlet.TwoServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!--第二部分 :设置一个浏览器可以访问的servlet的地址 --> <servlet-mapping> <servlet-name>TwoServlet</servlet-name> <!--设置浏览器地址 --> <url-pattern>/*bb</url-pattern> <!-- 设置地址访问一定加/asd --> </servlet-mapping> <!-- 注册treeServlet --> <!-- 第一部分 注册OneServlet--> <servlet> <!-- srvlet 增加名字 --> <servlet-name>Three</servlet-name> <!--注册servlet地址 --> <servlet-class>com.servlet.Three</servlet-class> <load-on-startup>3</load-on-startup> </servlet> <!--第二部分 :设置一个浏览器可以访问的servlet的地址 --> <servlet-mapping> <servlet-name>Three</servlet-name> <!--设置浏览器地址 --> <!-- *:表示0个或任意字符--> <url-pattern>/cc</url-pattern> <!-- 设置地址访问一定加/asd --> </servlet-mapping> </web-app>
创建第二个twoservlet的类 采用继承。
public class TwoServlet extends GenericServlet {
public TwoServlet() { // TODO Auto-generated constructor stub System.out.println("Twoservlet 在运行 过程中哦哦哦"); } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("当前servlet处于运行");
创建第三个treeservlet的类 采用继承。
public class Three extends HttpServlet{ //http:网络协议 TCP/LP 被动协议 需要用户去访问服务器 ,服务器材会发送数据。 //有四种发送数据方式:get 发送请求 post发送请求
创建
public Three() { // TODO Auto-generated constructor stub System.out.println("tree对象在创建"); } //UDP:主动协议,不管用户要不要 ,服务器都会发送数据 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("我收到浏览器的get请求访问 get---doget"); /* * System.out.println("http://localhost:8080/Day02jsp/"); * System.out.println("get 如果浏览器发送多个数据以后与字符连接"); * System.out.println("登录功能一律不使用post的请求,"); System.out.println("get post "); * System.out.println("get请求数据拼接在地址上,地址长度有限 ,lkb=1024 一个字母二个字节 是2个字母"); * System.out.println("post 数据是不受限制的 get获得"); */ } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("我收到浏览器的post请求访问 post----dopost"); }
第四个forservlet的类 采用快捷键。
@WebServlet(urlPatterns="/xxxx") public class fourServlect extends HttpServlet { private static final long serialVersionUID = 1L; //定义一个变量
package com.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class fourServlect * @xxxxx:java注解用少量 */ @WebServlet(urlPatterns="/xxxx") public class fourServlect extends HttpServlet { private static final long serialVersionUID = 1L; //定义一个变量 int countt=0; String hdrt="L LOVE YOU"; /** * @see HttpServlet#HttpServlet() */ public fourServlect() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub countt++; response.getWriter().append("Served at:get countt"+countt+"l love you "+countt+""); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at:get "); } }
理解http地址的/*
在web.xml文件中,以下语法用于定义映射:
l.以”/’开头和以”/*”结尾的是用来做路径映射的。
2.以前缀”*.”开头的是用来做扩展映射的。
3. “/” 是用来定义default servlet映射的。
4. 剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action