servlet的生命周期,通配符,servletconfigue,servletcontext

标签: servlet
1人阅读 评论(0) 收藏 举报
分类:

(1)




@WebServlet("/MyFirstServlet")
public class MyFirstServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}
         /**
          * 处理post请求
          */

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//调用doGet
doGet(request, response);

}
     /**
      * 初始化      (只执行一次)               
      */
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
super.init();



}

  /**
   * 实例化  (只执行一次)         
   */
public MyFirstServlet() {

}

/**
* 对外服务,也就是浏览器
* 注意,是在service中进行判断分发get请求还是post请求
* 一般情况下是不会重写service的,一般情况下只会重写doget与dopost方法,destroy,service,MyFirstServlet,init一般不会重写,
* 这里写出来只是进行了解用
*/
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
super.service(arg0, arg1);

}

/**
* 销毁
*/
@Override
public void destroy() {
// TODO Auto-generated method stub
super.destroy();
}

}


(2)通配符


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Servlet</display-name>
  
  <servlet>
       <servlet-name>MySecondServlet</servlet-name>
       <servlet-class>com.example.test.controller.MySecondServlet</servlet-class>
       
  </servlet>
  
    
  
  <servlet-mapping>
       <servlet-name>MySecondServlet</servlet-name>
       <url-pattern>/servlet/MySecondServlet</url-pattern>
       
  </servlet-mapping>
  <!-- 第一种通配符:/*,配置一个通配符 ,/servlet/*,只要前面一样,那么*部分无论是什么都可以访问MySecondServlet-->
  <servlet-mapping>
       <servlet-name>MySecondServlet</servlet-name>
       <url-pattern>/servlet/*</url-pattern>
       
  </servlet-mapping>
  <!-- 第二种通配符形式 .action表示最后以这个为结尾的都会找到这个 MySecondServlet-->
   <servlet-mapping>
       <servlet-name>MySecondServlet</servlet-name>
       <url-pattern>*.action</url-pattern>
       
  </servlet-mapping>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>


(3)servletconfigue


示例:

在web.xml中的配置信息

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Servlet</display-name>
  
  <servlet>
       <servlet-name>MyFirstServlet</servlet-name>
       <servlet-class>com.example.test.controller.MyFirstServlet</servlet-class>
       <!-- 初始化参数,初始化编码为utf-8 -->
       <init-param>
         <param-name>encode</param-name>
         <param-value>utf-8</param-value>
       </init-param>
       
         <!-- 初始化参数,初始化name为张三 -->
        <init-param>
         <param-name>name</param-name>
         <param-value>张三</param-value>
       </init-param>
       
  </servlet>
  
  <servlet-mapping>
       <servlet-name>MyFirstServlet</servlet-name>
       <url-pattern>/servlet/MyFirstServlet</url-pattern>
       
  </servlet-mapping>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

在创建的servlet中的代码如下:



@WebServlet("/MyFirstServlet")
public class MyFirstServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  
//取出web.xml中的初始化的信息
//获取servletConfig对象
ServletConfig servletConfig=getServletConfig();
String encode = servletConfig.getInitParameter("encode");
System.out.println(encode);
String name = servletConfig.getInitParameter("name");
System.out.println(name);
//下面是一下子都取出来--
Enumeration<String> initParametersNames=servletConfig.getInitParameterNames();
//如果有多个元素,就取出来
while(initParametersNames.hasMoreElements()) {
String key=initParametersNames.nextElement();
String value=servletConfig.getInitParameter(key);
System.out.println(key+"---"+value);

 

}

}
         /**
          * 处理post请求
          */

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//调用doGet
doGet(request, response);

}
}

结果:

utf-8
张三
encode---utf-8
name---张三

注意:但是这样一个一个在web中配置有点麻烦,可以用servletcontext获取配置参数

(3)servletcontext获取配置参数



在web.xml中的代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Servlet</display-name>
   <context-param>
     <param-name>sex</param-name>
     <param-value>nan</param-value>
   </context-param>
   <context-param>
     <param-name>hobby</param-name>
     <param-value>nv</param-value>
   </context-param>
 
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>


在servlet中的代码:



@WebServlet("/MyFirstServlet")
public class MyFirstServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  
//取出web.xml中的初始化的信息
//获取servlet的上下文
ServletContext servletContext=getServletContext();
String sex = servletContext.getInitParameter("sex");

String hobby = servletContext.getInitParameter("hobby");
System.out.println(sex+"----"+hobby);
//下面是一下子都取出来--
Enumeration<String> initParametersNames=servletContext.getInitParameterNames();
//如果有多个元素,就取出来
while(initParametersNames.hasMoreElements()) {
String key=initParametersNames.nextElement();
String value=servletContext.getInitParameter(key);
System.out.println(key+"---"+value);

 

}

}
         /**
          * 处理post请求
          */

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//调用doGet
doGet(request, response);

}
}




查看评论

ServletContext(Servlet上下文对象)作用 生命周期

ServletContext(Servlet上下文对象) 容器提供的对象 作用: 1.相对路径转换为绝对路径 String path = "/mp3/1.jpg"; Serv...
  • liuwenbiao1203
  • liuwenbiao1203
  • 2013年09月24日 00:48
  • 3548

servletcontext,session,request的生命周期

1、servletcontext:每一个web应用启动(配置到web容器中)时,web容器都会产生一个实现了servletcontext接口的实例(或者说在servlet引擎中产生了一个实现了serv...
  • marila4720
  • marila4720
  • 2013年04月02日 19:39
  • 6127

什么是Servlet,Servlet的生命周期、servletconfig、servletContext

Servlet简介: Servlet是使用Java Servlet应用程序设计接口及相关类和方法的Java程序。它在Web服务器上或应用服务器上运行并扩展了该服务器的能力。Servlet装入Web服...
  • a472815391
  • a472815391
  • 2012年11月02日 14:10
  • 478

JavaEE实战——Servlet入门、Servlet生命周期、绝对路径、ServletContext

本文主要讲述了Servlet的入门编程,如何在MyEclipse中修改Servlet默认模板,Servlet的生命周期理论,url-pattern的三种写法以及访问优先级,绝对路径与相对路径问题,网站...
  • zhongkelee
  • zhongkelee
  • 2016年08月20日 17:55
  • 3306

自己写的一个servlet Dispatchar,便于在osgi使用(一)

osgi中暂时不支持springmvc等mvc框架,我们每写一个方法的时候,就需要新建一个servlet,这样很麻烦,所以想自己实现一个在osgi环境下能够运行的mvc框架,模仿springmvc或者...
  • yeyincai
  • yeyincai
  • 2015年07月25日 12:40
  • 1264

JAVAWEB开发之Servlet和ServletContext详解(5)

Servlet简介  (1)Servlet是sun公司提供的一门专门用于开发动态web资源的技术  (2)Sun公司在其API中提供了一个Servlet接口,若用户想要开发一个动态web资源(即开发一...
  • u013087513
  • u013087513
  • 2017年01月16日 18:18
  • 1006

Servlet通配符的匹配原则

首先需要明确几容易混淆的规则: servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是特定的规则。所以不要用通配符或者正则表达式的匹配规则来看待servlet的url-patte...
  • Ricardoze
  • Ricardoze
  • 2017年08月31日 16:01
  • 284

java.lang.NoClassDefFoundError: javax/servlet/ServletContext

错误: java.lang.NoClassDefFoundError: javax/servlet/ServletContext at java.lang.Class.getDeclare...
  • q1054261752
  • q1054261752
  • 2016年08月21日 14:00
  • 4362

Servlet初始化参数(ServletConfig)与Servlet上下文初始化参数(ServletContext)区别

首先,这两个都叫做初始化参数,只不过servlet初始化参数才在DD配置中包含“init”一词。 上下文初始化参数:   在元素中,但不在具体的元素中。比如:                    ...
  • dancheren
  • dancheren
  • 2016年11月08日 20:24
  • 1999

不同Servlet共享配置信息-ServletContext对象

Servlet容器在启动的时候会为每个servlet创建一个ServletContext对象,代表了当前的web应用,是在web应用中全局唯一的,所以在任何一个servlet中访问的都是同一个Serv...
  • lzl759552889
  • lzl759552889
  • 2016年01月27日 15:22
  • 526
    个人资料
    持之以恒
    等级:
    访问量: 903
    积分: 595
    排名: 8万+
    文章分类
    文章存档