zoukankan      html  css  js  c++  java
  • day18(javaEE三大组件之一servlet(简介(一)))

    Servlet

      servlet是小型服务器语言,使用它可以处理前台传递来的信息,servlet进行处理后在响应给前台,其中servlet起到了关键性的作用。前端输入的信息可以持久化的存储在数据库中,并且可以进行信息的校验。

       配置文件

         一般servlet的配置信息是在web.xml中,在项目加载时会加载web.xml文件,这是web.xml的servlet会加载到我们项目中去。那么我们应该怎么去配置呢。在web.xml文件中会有<servlet>标签和<servlet-mapping>标签,其中<servlet>标签是帮助我们找到servlet对应的实类,而<servlet-mapping>则是通过访问的url来映射到我们servlet的实类中去。位置在:<web-app>标签里面一般书写格式是:

      <!--servlet的实类标签-->
        <servlet>
          <servlet-name>name</servlet-name>
          <servlet-class>类的全路径</servlet-class>
        </servlet>
      <!--servlet的映射标签-->
      <servlet-mapping>.
        <!--寻找对应的servlet的实类标签-->
          <servlet-name>name</servlet-name>
        <!--通过访问到url来进行关联-->
          <url-pattern>url</url-pattern>
      </servlet-mapping>
    

      

       生命周期

          初始化>>>>运行>>>>销毁

              init>>>>>service>>>>destory

              初始化:是指servlet的第一次调用则是给servlet初始化的过程,这个动作是服务器完成的。

               它的调用有两种方式:  

                第一种:服务器启动时让servlet初始化(要手动配置

    <!--设置其其级别可以是2,3,4,5等  数字越小级别越高-->
     <load-on-startup>2</load-on-startup>
    

                第二种: 是这个servlet类别调用时则会执行初始化方法,整个过程不要我们配置。                                                                                                   

          运行

                表示服务器进行一系列的操作。即提供的服务。最终都是执行doGet()或doPost(),具体是由请求的方式决定。

              销毁 :

                一般是服务器关闭时会销毁servlet

       创建的方式(两种)

            1.实现servlet接口

        

    public class Demo01 implements Servlet {
    
    	@Override
    	public void destroy() {
    		// 销毁
    		
    	}
    
    	@Override
    	public ServletConfig getServletConfig() {
    		// 获取servletConfig对象
    		return null;
    	}
    
    	@Override
    	public String getServletInfo() {
    		
    		return null;
    	}
    
    	@Override
    	public void init(ServletConfig arg0) throws ServletException {
    		// 初始化
    		
    	}
    
    	@Override
    	public void service(ServletRequest req, ServletResponse resp)
    			throws ServletException, IOException {
    		//服务  服务底层还是调用的doGet或doPost方法
    	}
    
    }
    

      

            2.继承GenericServlet类或者他的子类

    public class Demo1 extends HttpServlet {
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                 // 直接使用服务  不需要考虑服务器的初始化和销毁
    	}
    
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);//简化代码  为了都跳转到doGet方法中
    	}
    
    }    
    

      

       重要方法

          ServletConfig getservletConfig   获取它的servlet配置信息

            1.获取初始化参数

         <servlet>
    		<servlet-name>Demo05</servlet-name>
    		<servlet-class>servlet.Demo05</servlet-class>
    		<init-param>
                   <!--设置初始化参数--> <param-name>name</param-name> <param-value>zhangsan</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Demo05</servlet-name> <url-pattern>/Demo05</url-pattern> </servlet-mapping>

      

    	                ServletConfig servletConfig = this.getServletConfig();
    			String initParameter2 = servletConfig.getInitParameter("name");
    			System.out.println(initParameter2);            
    

      

            2.获取ServletContext对象

    ServletContext servletContext2 = servletConfig.getServletContext();
    

      

            3.获取servlet的名字

    			String servletName = servletConfig.getServletName();
    			System.out.println(servletName);//  即  表示该servlet在xml中的实类对应的名字。

    <servlet>
    <servlet-name>E</servlet-name>
    <servlet-class>servlet.Demo05</servlet-class>
    </servlet>

    则打印结果为E

      

         ServletContext  getservletContext  获取上下文信息

            1.获取文件类型

    			ServletContext servletContext = this.getServletContext();
    			//判断文件的类型
    			String type = servletContext.getMimeType("a.txt");
    			System.out.println(type);
    

      

            2.获取项目路径

    			ServletContext servletContext = this.getServletContext();
    			//getContextPath()获取项目路径
    			String path = servletContext.getContextPath();
    			System.out.println(path);
    

      

            3.获取全局化参数配置

       配置全局化参数
       <context-param>    <param-name>user</param-name> <param-value>root</param-value> </context-param> <context-param> <param-name>password</param-name> <param-value>root</param-value> </context-param>

          测试 查询

                          ServletContext servletContext = this.getServletContext();
                          Enumeration<String> enumeration = servletContext.getInitParameterNames();
    			while(enumeration.hasMoreElements()){
    				String name = enumeration.nextElement();
    				String value = servletContext.getInitParameter(name);
    				System.out.println(name+" "+value);
    			}    
    

      

  • 相关阅读:
    Bzoj 1010: [HNOI2008]玩具装箱toy(斜率优化)
    Cogs 376. [IOI2002]任务安排(后效性DP)
    Bzoj 1911: [Apio2010]特别行动队(斜率优化)
    Poj 2018 Best Cow Fences(分数规划+DP&&斜率优化)
    Bzoj 1212: [HNOI2004]L语言(AC自动机+DP)
    ZOJ 3228 Searching the String(AC自动机)
    Bzoj 3172: [Tjoi2013]单词(fail树)
    Hdu 3065 病毒侵袭持续中(AC自动机)
    Hdu 2896 病毒侵袭(AC自动机)
    Bzoj 2599: [IOI2011]Race(点分治)
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/Servlet_.html
Copyright © 2011-2022 走看看