前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVAEE 初级阶段(一)

JAVAEE 初级阶段(一)

原创
作者头像
猎户星座1
修改2020-06-10 14:44:29
1.1K0
修改2020-06-10 14:44:29
举报
文章被收录于专栏:Java StudyJava Study

说明: 旨在自己记录学习EE阶段的知识。

代码语言:txt
复制
从2019年学期初学习过一段时间的webServlet & jsp    习惯将使用 servlet 做的web项目教程servlet 项目,因为不像其他的web项目,会使用一些框架来表示项目,哈哈文章偏向知识总结,希望读者不是第一次接触。

Servlet 是什么?

servlet是Java 中的一个接口,查看接口的实现类只有两个抽象类为

GenericServlet 和 HttpServlet ,同时HttpServlet 继承了 GenericServlet

代码语言:txt
复制
public interface Servlet {

void init(ServletConfig var1) throws ServletException;

ServletConfig getServletConfig();

void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

String getServletInfo();

void destroy();

}

其中 ServletConfig getServletConfig(); 方法与其他方法不同,返回值类型ServletConfig,向下点ServletConfig,发现也是一个接口

代码语言:txt
复制
public interface ServletConfig {

String getServletName();

ServletContext getServletContext();

String getInitParameter(String var1);

Enumeration<String> getInitParameterNames();

}

有意思的时查看接口的实现类同样为两个抽象类GenericServlet 和 HttpServlet ,查看GenericServlet抽象类的方法,都为对ServletConfig 的操作

private transient ServletConfig config;

(transient 的关键字为不对该对象进行序列化操作)

ServletConfig讲解

1.1、配置Servlet初始化参数

  在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。

例如:

代码语言:html
复制
1 <servlet>

2    <servlet-name>ServletConfigDemo1</servlet-name>

3    <servlet-class>gacl.servlet.study.ServletConfigDemo1</servlet-class>

4    <!--配置ServletConfigDemo1的初始化参数 -->

5    <init-param>

6        <param-name>name</param-name>

7        <param-value>gacl</param-value>

8    </init-param>

9      <init-param>

10        <param-name>password</param-name>

11        <param-value>123</param-value>

12    </init-param>

13    <init-param>

14        <param-name>charset</param-name>

15        <param-value>UTF-8</param-value>

16    </init-param>

17 </servlet>

1.2、通过ServletConfig获取Servlet的初始化参数

  当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,我们通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

原文连接 https://blog.csdn.net/durenniu/article/details/81066817

因此画图得出他们直接的关系。

并且从查看 GenericServlet 和 HttpServlet 源码来说,HttpServlet代码多,研究的重点,并且使用的重点在 HttpServlet。

#Servlet 生命周期

前提:在web.xml 配置了继承HttpServlet的类 或者加了在Servlet类上加了 @WebServlet注解

当前端发送 “/userlogin” 的请求,Servlet容器从web.xml中检查当前容器中有没有 响应该url的servlet ,如果没有则根据配置 url-pattern 找到servlet 然后根据配置的servlet-class去 类加载加载对应的类,去实例化该servlet类对象,同时根据<init-param>配置节信息创ServletConfig对象,然后执行Servlet对象,将ServletConfig作为参数调用init() 方法,完成初始化,service 中的doPost() 或doGet() 常用 doPut() 或doDelete() 方法去响应,当服务器结束后或者长期 service方法没有请求到调用 destroy()销毁servlet对象。

***注意,因此,servlet 默认是当去请求自己的url时,才会被创建,但可以通过设置web.xml中自己servlet的 load-on-startup 来修改成当 servlet容器创建时,也就是程序启动时,就创建servlet。

当这个servlet对象创建时,因为是继承HttpServlet ,HttpServlet 继承GenericServlet ,但两个负责的范围不同,GenericServlet根据方法可知,负责init() 和destroy(),HttpServlet 负责

service()部分。

servlet从业务的角度来说,属于controller 层中,作用对前端请求的处理响应,并去调用后端Java程序进行处理。servlet 的存在也相当于以后使用框架中使用 @Controller 或@ RestController 注解标识的cotroller类。

web.xml 和Webservlet(servlet的配置)

代码语言:html
复制
<servlet>
<servlet-name>Servlet</servlet-name>
<servlet-class>controller.Servlet</servlet-class>
   <init-param>
 <param-name>name</param-name>
   <param-value>xxxx</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>Servlet</servlet-name>
   <url-pattern>/userlogin</url-pattern>
</servlet-mapping>

扩展:在后面使用Springmvc的时,配置的springmvc.xml ,同时也是为一个servlet, 将所有的请求转交给 springmvc这个servlet 来处理。

使用springmvc框架时,配置的web.xml:

代码语言:txt
复制
              内容下次再写,时刻再补充,写的不对的,非常欢迎评论区评论,相互探讨。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明: 旨在自己记录学习EE阶段的知识。
  • Servlet 是什么?
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档