专栏首页Java StudyJAVAEE 初级阶段(一)
原创

JAVAEE 初级阶段(一)

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

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

Servlet 是什么?

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

GenericServlet 和 HttpServlet ,同时HttpServlet 继承了 GenericServlet

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,发现也是一个接口

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配置一些初始化参数。

例如:

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的配置)

<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:

              内容下次再写,时刻再补充,写的不对的,非常欢迎评论区评论,相互探讨。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 设计模式--工厂模式

    自己回答了一个,工厂模式,说比如在 spring 中的 beanFactroy 及 applicationContextFactory 都是 用到了工厂模式。

    猎户星座1
  • Spring 记录(一) --《spring解密》

    将业务对象的创建主动权从我们自己交到了spring ioc 容器的手上。用的时候直接 Autowired 注入进去(感觉有点像Java 内存分配回收的出发点,将...

    猎户星座1
  • Java并发机制的底层实现原理--Java并发编程的艺术

    当volatile 修饰的共享变量时,在进行写操作时,查看Java程序经 编译 解释为机器语言,汇编语言时,发现多了一个lock 的前缀。

    猎户星座1
  • spring 在启动服务器的时候报错 Could not open ServletContext resource [/WEB-INF/dispather-servlet.xml]

     java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-IN...

    bear_fish
  • 这个404你能解决吗?

    去看webapps里工程目录下,index.html文件是有的,见鬼了,是哪儿出了问题?

    我的小碗汤
  • 关于web.xml配置 <servlet-name>default</servlet-name>

    在web.xml文件中经常看到这样的配置<servlet-name>default</servlet-name>,这个配置的作用是:对客户端请求的静态资源如图片...

    用户1220053
  • java之spring mvc之Restful风格开发及相关的配置

    传统 : url : http://localhost:8080/usersys/delete.do?user.id=12

    Vincent-yuan
  • JFreeChart与struts框架冲突解决

    曼路
  • Servlet生命周期

    TrueDei
  • JavaWeb三大组件之Servlet学习

    JavaWeb三大组件之Servlet学习 平时直接用springmvc较多,都没怎么接触底层的Servlet,导致对一些基本的知识点了解都不够,所以今天专门...

    一灰灰blog

扫码关注云+社区

领取腾讯云代金券