• 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);
    			}    
    

      

  • 相关阅读:
    dotnet 控制台读写 Sqlite 提示 no such table 找不到文件
    dotnet 控制台读写 Sqlite 提示 no such table 找不到文件
    dotnet 控制台 Hangfire 后台定时任务
    dotnet 控制台 Hangfire 后台定时任务
    dotnet 获取指定进程的输入命令行
    dotnet 获取指定进程的输入命令行
    PHP sqrt() 函数
    PHP sinh() 函数
    PHP sin() 函数
    PHP round() 函数
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/Servlet_.html
Copyright © 2020-2023  润新知