zoukankan      html  css  js  c++  java
  • JAVA Web基础3-Servlet

    一.Servlet介绍
    1.Servlet是运行在WEB服务器端的一段程序,它使用Java语言编写,具有Java语言的特点,与Java程序的区别是,Servlet对象主要封装了对HTTP请求的处理,并且他的运行需要Servlet容器的支持。
    结构体系:Servlet对象,ServletConfig对象与Serializable对象是接口对象,GenericServlet是一个抽象类,对这3个接口提供了部分实现,但并没有对HTTP请求处理进行实现,由子类HttpServlet进行实现,在实际开发中使用的Servlet都继承于HttpServlet.
    2.Servlet功能很强大,可以满足对WEB应用的开发需求,但每一句HTML代码都由Servlet的固定方法来输出,操作会过于复杂,于是出现了JSP技术。
    Servlet特点:
            1, 功能强大
            2, 可移植性
            3, 速度快, 性能高
            4, 安全性高
            5, 可扩展(面向对象)
    Servlet与JSP的区别:
            1.角色不同:Servlet为控制层,JSP为视图层。(MVC模式编程)
            2.编程方法不同:Servlet使用JAVA代码,主要处理业务逻辑方面;JSP页面中通过HTML代码及JSP内置对象实现对HTTP请求及页面处理,其显示界面功能更为强大。
            3.是否需要重新编译:Servlet的每次更改都需要Java编译器对其重新编译,JSP由JSP Container对其进行自动编辑。
            4.速度不同:Servlet编译完成后,不需要再次编译,其效率要高于JSP。
    二.Servlet代码结构
    当用户对Servlet容器发送请求时,容器通知相应的Servlet对象进行处理,主要方法是service(),通过重写service()方法对请求进行处理;
    要使servlet能够正常运行,需要在web.xml中对Servlet进行配置,以告知WEB容器哪一个请求调用哪一个Sevlet对象处理,对Servlet起到一个注册的作用;
    例:新建一个Servlet类

    public class MyServlet extends HttpServlet{
    	protected void service(HttpServletRequest request,HttpServletResponse response)throws Exception{
    		
    }
    

     在web.xml文件中配置:通过<servlet>标签声明一个Servlet对象。

    <servlet>
    	<servlet-name>MyServlet</servlet-name><!-- Servlet的名称 -->
    	<servlet-class>com.hanqi.servlet.MyServlet</servlet-class><!-- Servlet对象的完整位置(可通过右键点击类名copy Qualified Name快速获取) -->
    	<init-param><!-- 可在这设置初始化参数 -->
    		<param-name>name</param-name>
    		<param-value>value</param-value>
    	</init-param>
    	<load-on-startup>1</load-on-startup><!-- 启动时加载,数字越小,优先级越高; -->
    </servlet>
    <!-- 映射Servlet -->
    <servlet-mapping>
      	<servlet-name>MyServlet</servlet-name><!-- 名称需要与上面的一样 -->
      	<url-pattern>/MyServlet</url-pattern><!-- 请求的路径,与页面上一样 -->
    </servlet-mapping>
    <!-- 执行顺序为先通过请求路径找到该Servlet映射名称,再根据名称找到具体位置 -->
    

     注意:每次修改java文件都会自动重启服务器对其重新编译,可通过修改Servers项目中的server.xml文件中最下面<context>标签中的reloadable="true"改为false关闭自动重启功能。
    Servlet生命周期:
        init(ServletConfig config);----初始化一个servlet类的实例, 这个方法只会执行一次
            可以在web.xml中配置, <load-on-startup></load-on-startup>, 标签中写一个int型数字,
            当这个值为0或者不配置这个标签的时候, 这个servlet将会在使用的时候才会去初始化, 其他数字会在tomcat服务器运行的时候就加载, 数字越小, 优先级越高。
        service()方法
            这个方法是响应客户请求的, 这个方法的执行来决定这个servlet是该调用doPost还是doGet。
        destroy();----销毁一个servlet类的实例
            停止tomcat的时候会调用此方法, 来销毁servlet实例对象, 释放资源
    在实际开发中一般采用集成工具直接创建一个Servlet类,只需要重写doGet()方法即可;
    三.Servlet常用内置对象的获取
    request和response对象可直接使用;
    application对象通过request.getServletContext()获取;
    session对象通过request,getSession()获取;
    out对象通过response.getWriter()获取;

  • 相关阅读:
    python 的csr_python
    OpenBLAS学习一:源码架构解析&GEMM分析
    gcc警告选项汇总
    Welcome! This is the documentation for Python 3.6.8
    CentOS 7 查看和设置防火墙状态
    django中多个app放入同一文件apps
    安装mysqlclient, 链接mysql失败,提示“Library not loaded: @rpath/libmysqlclient.21.dylib”
    动手玩转Docker(二)
    动手玩转Docker(一)
    转载:微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布
  • 原文地址:https://www.cnblogs.com/wyc1991/p/9193825.html
Copyright © 2011-2022 走看看