了解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