java补完——JSP出现前的Servlet(主要doGet、doPost方法和其上层&不管怎么输出页面)

文章说明:黑色字体-已知,蓝色字体-所见即所得,红色字体-还需要再找资料弄明白的,黄色背景-提炼关键信息
参考资料:很多参考资料,段落下有原文链接到原作者

简介

Servlet(server applet)动态web技术(sun公司),基于request-response编程模型。是一个接口,是定义了Java类被浏览器访问到(Tomcat 识别)规则的服务器端小程序。

发展史

版本如下
1997.06:Servlet 1.0、2.0
1998.11:Servlet 2.1
2003.11:Servlet 2.4
2005.09:Servlet 2.5
2009.12:Servlet 3.0

servlet 开发

实现了servlet接口的java程序,就是servlet程序。
定义一个Servlet接口实现类,复写方法,部署到服务器。
servlet接口官方实现类GenericServlet,官方实现类HttpServlet继承自GenericServlet,可以直接继承HttpServlet,复写HttpServlet里的doGet和doPost方法,部署到服务器。
servlet接口中的5个方法:

  • 初始化方法,在Servlet被创建时执行,只会执行一次。
    void init(ServletConfig servletConfig) throws ServletException {}
  • 获取ServletConfig配置对象:ServletConfig getServletConfig() {}
  • 提供服务的方法,每次Servlet被访问的时候执行,可执行多次。
    void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {}
  • 获取Servlet信息,如作者、版本等。
    String getServletInfo() {}
  • 销毁方法,在服务器正常关闭的时候执行,执行一次。
    void destroy() {}
public class oneServlet extends HttpServlet{
	public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{
		System.out.println("myServlet");
	}
		public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{
		doGet();
	}
}

在 web.xml 文件里面配置Servlet,在根标签里面加入如下配置

<!--配置Servlet -->
<servlet>
    <servlet-name>servletname</servlet-name>
    <servlet-class>web.servlet.oneServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servletname</servlet-name>
    <url-pattern>/servletname</url-pattern>
</servlet-mapping>

Servlet 分析

原理分析

1、当服务器接收到客户端浏览器的请求后,会解析请求的URL路径,获取访问的 Servlet 的资源路径。
2、查找 web.xml 文件,看是否有对应的标签体内容
3、如果有,则再找到对应的全类名
4、Tomcat 将字节码文件加载进内存,并创建其对象
5、调用其方法

生命周期

1、被创建:执行 init 方法,只执行一次。

  • 默认情况下,第一次被访问时,Servlet 被创建。
  • 可以配置执行 Servlet 的创建时机,可在标签中配置
    配置第一次被访问时创建:标签配置为负数(默认为-1)
    配置服务器启动时被创建:标签配置0或正数
  • init 方法只执行一次,说明一个 Servlet 在内存中只存在一个对象,Servlet 是单例的
    多个用户同时访问时,可能存在线程安全问题,所以尽量不要在Servlet中定义成员变量,即使定义了也不要对值进行修改
    2、提供服务:执行 server 方法,可以执行多次。
    每次访问 Servlet 时,Servlet 方法都会被调用一次
    3、被销毁:执行 destory 方法,只执行一次。
    Servlet 销毁时执行,只有服务器正常关闭时,才会执行 destory 方法

注解配置

Servlet3.0 以上的版本中,支持使用注解配置,在类上使用 @webServlet 注解进行配置,其实质就是配置WebServlet.class 文件里面的 urlPatterns 参数,urlPatterns 是一个 String 类型的数组,使用该数组来配置访问路径,该配置有多种方法:

  • 一个 Servlet 可以定义一个访问路径:@WebServlet("/oneStar")
  • 一个 Servlet 可以定义一个数组(多个)访问路径:@WebServlet({"/oneStar","/twoStar","/threeStar"})
  • 支持多层路径:@WebServlet("/user/oneStar")
  • 使用通配(任何目录):@WebServlet("/*")
  • 使用通配(带后缀):@WebServlet("/*.do")
@WebServlet("/oneStar")
//@WebServlet({"/oneStar","/twoStar","/threeStar"})
//@WebServlet("/user/oneStar")
//@WebServlet("/*")
//@WebServlet("/*.do")
public class Main implements Servlet {}

参考文件如下:
狂神视频
原文链接:https://blog.csdn.net/One_L_Star/article/details/100118991
原文链接:https://blog.csdn.net/Ada_yangyang/article/details/81559436

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值