zoukankan      html  css  js  c++  java
  • servlet两种配置方法详解

     1、web.xml中Servlet的注解

     1 <servlet>
     2          <!-- servlet的内部名称,自定义 -->
     3         <servlet-name>DemoAction</servlet-name>
     4         <!-- servlet的类全名:包名+类名 -->
     5         <servlet-class>com.uplooking.controller.DemoAction</servlet-class>
     6         <load-on-startup>1</load-on-startup>
     7 </servlet>  
     8 <!-- servlet的映射配置 -->
     9 <servlet-mapping>
    10         <!-- servlet的内部名称,一定要和上面的内部名称保持一致 -->
    11         <servlet-name>DemoAction</servlet-name>
    12         <!-- servlet的映射路径(访问serclet的名称 -->
    13         <url-pattern>/DemoAction</url-pattern>
    14 </servlet-mapping>

           1、首先,从浏览器中发送请求,是从当前工程中的路径与servlet-mapping标签中的url-pattern的标签值进行匹配。

      2、根据这个映射值,找到servlet-mapping标签中的servlet-name的值与servlet标签中的servlet-name进行匹

           3、匹配到以后,找到servlet标签中的servlet-class标签中对应servlet类的src文件夹下的全路径。

           4、从而调用并执行相应的servlet类。

    注意:servlet-mapping标签中的servlet-name的值与servlet标签中的servlet-name必须相同。

    <init-param>初始化参数

    1 <init-param>
    2             <param-name>abc</param-name>
    3             <param-value>123</param-value>
    4 </init-param>

    一个Servlet可以配置一个或多个初始化参数。

             在应用程序中,可以使用Servlet的getInitParameter(String param)来读取初始化param对应的参数;若要读取所有的初始化参数名称,则可以使用getInitParameterNames()方法获得所有的参数名称,类型为枚举(Enumeration)。

      //获取所有初始化参数
     Enumeration<String> strs=this.getInitParameterNames();
     while(strs.hasMoreElements()) {
             str=strs.nextElement();
            System.out.println(str+"     "+this.getInitParameter(str));
             //-->abc 123
            //-->aaa 111
        }

           

       这些初始化参数也可以由ServletConfig对象获取,Servlet提供getServletConfig()方法提供ServletConfig对象。由ServletConfig获取初始化参数和由Servlet获取初始化参数的方法是一样的。

    //两种调用getInitParameter的情况,视情况而定
    //this是指ServletConfig的对象config
    String str=this.getInitParameter("abc");  //第一种
    
    String str=config.getInitParameter("abc");//第二种

             初始化参数的一个有趣应用是进行单个文件的访问加密,原理是将用户名和密码写入初始化参数中,这样的好处是简单、方便,缺点是不灵活,安全性也不高,适用于临时性的措施。

    <context-param>上下文参数

    1 <context-param>
    2          <param-name>root</param-name>
    3          <param-value>123</param-value>
    4  </context-param>

             获取context-param需要使用ServletContext对象。ServletContext对象可以通过在Servlet中的getServletConfig().getServletContext()方法获得。得到ServletContext对象后,使用getInitParameter(String param)方法获取名为param的参数值,通过getInitParameterNames()获取所有的context-param名称。

    ServletContext context=this.getServletContext();
    String root=context.getInitParameter("root");
    System.out.println("root="+root);

     2、注解访问servlet

    1.只需在对应的servlet类中添加servlet注解即可,从浏览器发送请求时,是用当前“工程”下的路径,会去对应servlet类的上面寻找是否存在对应url名称的@webServlet注解,存在的话,调用并执行对应的servlet类。

    1 @WebServlet("/DemoAction")
    2 public class DemoAction  extends HttpServlet{
    3 }

    总结:

    共同点:注解访问servlet和web配置文件访问servlet都能完成对servlet的访问。

     

    注解访问servlet:

    优点:代码少,可读性强,易于理解。

    缺点:如果大量使用servlet注解,servlet类文件数量过多,不便于查找和修改。

     

    web配置文件访问servlet:

    优点:集中管理各servlet类路径的映射路径,便于修改和管理。

    缺点:代码多,可读性不强,不易于理解。
     

    注意:有时候在服务上运行的web程序数据不能及时更新,记得重启服务器或者清除浏览器缓存。

  • 相关阅读:
    Window如何查看cpu核数,更改CPU开启的核数?
    Mysql5.6.47开放远程访问(修改远程访问密码)
    CentOS7.6新增或修改SSH端口号的步骤
    虚拟机下安装Centos设置静态ip,并通过桥接连接
    windows下安装mysql5.6.47版本
    微软官方安装介质Windows10系统安装教程
    【测试编码URI的函数】
    【JavaScript函数】
    【JavaScript运算符与表达式】
    【JavaScript声明变量的规则】
  • 原文地址:https://www.cnblogs.com/echola/p/9675282.html
Copyright © 2011-2022 走看看