• servlet


    一、servlet的概念

    Servlet是一种独立与平台和协议的服务器端java应用程序,通过Servlet可以生成动态web页面,同时使用Servlet还可以在服务器端对客户的请求进行处理,控制程序的执行。

    Servlet的主要作用就是交互式的浏览和更新数据,并生成动态的页面内容展示。

    1. 服务器接收客户端发送的请求。

    2. 服务器将请求信息发送至Servlet.

    3. Servlet进过处理后,生成响应的内容。

    4. Servlet将响应的内容返回客户端。

    名称            说明                      所在包

    servlet接口  JavaServlet的基础接口,定义了Servlet必须实现的方法   javax.servlet

    GenericServlet  继承自servlet接口属于通用的不依赖于协议的servlet    javax.servlet

    HttpServlet  继承自GenerticServic类在此继承上扩展了http协议的Servlet javax.servlet.http

    HttpServletRequest  继承自servletRequest接口用于数据的读取    javax.servlet.http

    HttpServletResponse 继承自servletResponse接口用于返回数据   javax.servlet.http

    二、servlet的生命周期

    Servlet容器:是用来装载Servlet对象的一种容器。是负责管理Servlet的一类组件。

    1、 实例化---》Servlet容器创建Servlet的实例

    2、 初始化---》该容器调用init()方法

      init()方法:初始化方法只会别调用一次,在创建servlet时候调用

    3、 服务-----》如果请求Servlet,则容器调用Service()方法

      service()方法时执行任务的主要方法,每次服务器接收到一个servlet请求,都会启动一个线程并调用服务,service()方法会检查http请求类型,调用相应的doGet或doPost方法

    4、 销毁-----》销毁实例之前调用destroy()方法。

      destroy()方法也只会被调用一次,在servlet生命周期结束时调用,会关闭数据库连接,停止线程等,destroy()方法执行后GC会回收servlet对象。

    三、创建servlet

    (1).创建servlet的三种方法

    1.继承servlet接口(interface)

    2.继承GenericServlet类(class)

    3.继承httpServlet类(class)

    (2).在web.xml中添加servlet的配置

    <servlet>
    	<servlet-name>myServlet</servlet-name>
    	<servlet-calss>servlet.MyServlet</servlet-calss>
    </servlet>
    <servlet-mapping>
    	<servlat-name>myServlat</servlat-name>
    	<url-pattern>/myServlet</url-pattern>
    <servlat-mapping>
    <servlet>
      <servlet-name>servlet</servlet-name>
      <servlet-class>servlet.servlet</servlet>
      <init-param>    <!-- 初始化参数 -->
        <param-name>charSetContent</param-name>
        <param-value>utf-8</param-value>
      </init-param>
    </servlet>
    <servlet-mapping>
      <servlet-name>servlet<servlet-name>
      <url-pattern>utf-8</url-pattern>
    </servlet-mapping>

    (3).创建servlet类:

    package demo.web.servlet;
    
    import java.io.IOException;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class MyServlet3 extends HttpServlet {
    
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		System.out.println("调用了doGet方法");
    	}
    
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		super.doPost(req, resp);
    	}
    
    	@Override
    	protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
    			throws ServletException, IOException {
    		super.service(arg0, arg1);
    	}
    
    	@Override
    	public void destroy() {
    		System.out.println("调用了销毁的方法");
    	}
    
    	@Override
    	public void init(ServletConfig config) throws ServletException {
    		System.out.println("init被初始化了");
    		String initParam=config.getInitParameter("charSerContent");
    		System.out.println(initParam);
    	}
    	
    
    }

    说明:<url-pattern>标签里面可以有三种设置方法:

        1./myservlet

        2./xx/*

        3.*.do

    四、servlet的部署和运行:

    1.servlet的运行比较简单,只要通过url就可以实现访问,servlet的访问名称必须与web.xml文件中设置的url的映射名一致。

    2.在浏览器中输入:localhost:8080/项目名/url-pattern对应的类型 (如果是第一种输入/myservlet,第二种输入/xx/任意字符,第三种是任意字符.do),就会在控制太输出信息。

    五、servletRequest对象和httpServletRequest对象

    当用户请求时有servlet容器创建servletRequest对象,这个对象被容器作为service()方法之一传给servlet,servlet能够利用servletRequest获取客户端的数据请求数据。

    1.servletRequest对象常用方法

    常用方法                  说明

    getAttribute(String name);        获取名字为name的值

    setAttribute(String name,Object obj);   设置名字为name的值

    getParameter(String name);        获取表单中传入的参数

    2.HttpServletRequest对象常用方法

    常用方法                   说明

    String getContextPath();          获取上下文路径

    Cookie[]  getCookies();            返回客户端发送的所有cookie对象

    HttpSession getsession();          返回和此次请求相管理的session,没有则创建一个新的session

    String getMethod();             返回此次请求service所调用的方法,doGet,或doPost方法

    六、servletResponse接口和HttpServletResponse接口

    1.servletResponse接口用来封装响应接口

    常用方法                    说明

    PrintWriter  getWriter();            返回PrintWriter对象,用于向客户端发送文本

    String getCharacterEncoding();         获取编码类型

    String setCharacterEncoding();         设置编码类型

    void setContentType(String type);       设置发送到客户端的响应的内容类型

    2.httpServletResponse接口常用方法

    常用方法                    说明

    void addCookie(Cookie cookie);        设置一个cookie到响应中,这个方法可多次调用设置多个cookie

    void addHeader(String name,String value);   将一个名字为name的值为value的响应报头添加到响应中

    void sendRedirect(String location);       重定向

    void encodURL(string url);           使用sessionId对重定向的url进行编码,

  • 相关阅读:
    php友好格式化时间
    GraphicsMagick为图片添加水印
    Kali Linux下破解WIFI密码挂载usb无线网卡的方法
    用nginx做反向代理来访问防外链图片
    Nginx反向代理的目录访问问题
    Cookie存储中文报错:java.lang.IllegalArgumentException: Control character in cookie value or attribute.(转)
    4.0之后的hibernate获取sessionFactory
    Servlet的延迟加载和预加载
    hibernate注解(转)
    web项目路径问题
  • 原文地址:https://www.cnblogs.com/ablejava/p/5630731.html
Copyright © 2020-2023  润新知