import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// 继承HttpServlet 类
public class HelloWorld extends HttpServlet {

  private String message;

  public void init() throws ServletException
  {
      // 执行必需的初始化
      message = "Hello World";
  }
//此方法用来处理GET请求
  public void doGet(HttpServletRequest request,
                    HttpServletResponseresponse)
            throws ServletException,IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html");

      // 实际的逻辑是在这里
      PrintWriter out = response.getWriter();
      out.println("<h1>" +message + "</h1>");
  }
  //此方法用来处理POST请求
public void doPost(HttpServletRequestrequest,
                    HttpServletResponseresponse)
            throws ServletException,IOException
  {
      this.doGet(request,response);
  }

  public void destroy()
  {
      // 什么也不做
  }
}

web.xml中的配置

  <context-param><!-- 全局参数-->
             <param-name>uploadfolder</param-name>
             <param-value>attachment</param-value>
      </context-param>

       <servlet>
       <servlet-name>HelloWorld</servlet-name>
       <servlet-class>HelloWorld</servlet-class>
    </servlet>

       <init-param><!-- 只能有这个Servlet读取,不是全局参数-->
             <param-name>message</param-name>
             <param-value>welcom toservlet</param-value>
       </init-param>

    <servlet-mapping>
       <servlet-name>HelloWorld</servlet-name>
       <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>

<url-pattern>可以同时配置多个映射,也允许使用通配符“*”和“_”

在Servlet中通过getServletConfig.getInitParameter(Stringname)来取得配置中的初始化参数(如果没有context初始化参数与Servlet的初始化参数同名,getServletContext.getInitParameter(String name)也可以取到此参数,但是不推荐这么用)

如果要取得context初始化参数,用getServletConfig.getServletContext. getInitParameter(String name)

上面的两种方法都是都是在编写程序代码时读取初始参数,java EE 5以后还提供了资源注射(Resource Injection)的方法,不需要Servlet主动地去读取资源,Tomcat启动时会把web.xml里配置的信息主动注射到Servlet中

示例如下:

private@Resource(name = “hello”) String hello; //一行的写法

@Resource(name = "i")                      //两行的写法
private int i;

在web.xml中用<env-entry>标签来配置资源

<env-entry>
      <env-entry-name>hello</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>welcom toservlet</env-entry-value>
<env-entry>

<env-entry>
      <env-entry-name>i</env-entry-name>
      <env-entry-type>java.lang.Integer</env-entry-type>
      <env-entry-value>66</env-entry-value>
<env-entry>

资源注射的原理是JNDI(java命名与目录接口,Java Naming and Directory Interface),如果不使用@Resource注解,通过查找JNDI同样可以获取到这三个资源

Context ctx =new InitialContext();
String message =(String)ctx.lookup("message");
Integer i =(Integer)ctx.lookup("i");

Servlet中不仅可以注释String、Integer等类型的变量,还可以注射自定义的Java Bean以及数据源等复杂类型变量

Servlet是线程不安全的



Servlet配置与资源参数的更多相关文章

  1. servlet配置restful

    所需jar包如下,jar下载地址如下http://download.csdn.net/detail/zhouminglan1992/9730354 1.web.xml配置 <!--给servle ...

  2. Java Servlet(二):servlet配置及生命周期相关(jdk7+tomcat7+eclipse)

    该篇文章记录了Servlet配置相关用法及Servlet在Servlet容器中生命周期方法. Tomcat是一个Servlet容器: 1.Servlet容器管理了Servlet的整个生命周期,并调用s ...

  3. Servlet配置对象、上下文对象、多线程问题

    一.Servlet配置对象(ServletConfig):Servlet初始化时,容器调用其init(ServletConfig)方法,传递该对象. 1.获得对象方法: (1).直接使用getServ ...

  4. Spring MVC配置静态资源和资源包教程

    1- 介绍 这篇教程文章是基于: Spring 4 MVC 2- 创建一个项目 File/New/Other.. 输入: Group ID: com.yiibai Artifact ID: Sprin ...

  5. Struts2配置国际化资源

    1. 国际化的目标 1). 如何配置国际化资源文件 I. Action 范围资源文件: 在Action类文件所在的路径建立名为 ActionName_language_country.properti ...

  6. [原创]java WEB学习笔记69:Struts2 学习之路-- 消息处理与国际化,概述,配置国际资源文件,访问国际化消息,通过超链接切换语言

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. SpringBoot 配置静态资源映射

    SpringBoot 配置静态资源映射 (嵌入式servlet容器)先决知识 request.getSession().getServletContext().getRealPath("/& ...

  8. Django1.7如何配置静态资源访问

    Django是非常轻量级的Web框架,今天散仙来看下如何在Django中配置静态的资源访问路径,一个中等规模的网站,可能就会有很多静态的资源需要访问,无论是html,txt,还是压缩包,有时候访问这些 ...

  9. Spring MVC配置静态资源和资源包

    Spring MVC配置静态资源和资源包 本例映射:css目录: pom.xml <properties> <spring.version>4.3.5.RELEASE</ ...

随机推荐

  1. [BZOJ]4755: [Jsoi2016]扭动的回文串

    Time Limit: 10 Sec  Memory Limit: 512 MB Description JYY有两个长度均为N的字符串A和B. 一个"扭动字符串S(i,j,k)由A中的第i ...

  2. 2015 多校联赛 ——HDU5360(贪心+优先队列)

    Sample Input 4 8 4 1 3 2 2 1 0 3 5 3 6 4 2 1 7 6 8 3 3 2 0 5 0 3 6 4 5 2 7 7 6 7 6 8 2 2 3 3 3 0 0 2 ...

  3. *hdu 5536(字典树的运用)

    Input The first line of input contains an integer T indicating the total number of test cases. The f ...

  4. Delphi Inputbox,InputQuery用法

    Delphi :InputQuery,InputBox用法及区别 function InputQuery(const ACaption, APrompt: string; var Value: str ...

  5. c# error

    部署iis c# 连sqlserver 用IIS发布之后,网页出错.提示为:异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\I ...

  6. jquery easyui datagrid设置行样式 不可删除某行

    rowStyler: function (index,row) { if (parseInt(row.ksrs) > 0) { return 'color:red'; } }, onLoadSu ...

  7. QRCode.js:使用 JavaScript 生成二维码

    什么是 QRCode.js? QRCode.js 是一个用于生成二维码的 JavaScript 库.主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库. 基本用法 ...

  8. 15_Python模块化编程_Python编程之路

    之前跟大家讲的是一些python的数据基础,从这篇文章开始,我们开始正式学习python的模块化编程 下面我们解释一下什么叫做模块 之前已经讲过怎么去定义一个方法,如果你是用python交互器(自带交 ...

  9. CRM客户关系管理系统(二)

    第三章.前端页面设计  3.1.前端页面布局 Bootstrap模板下载 (1)静态文件 新建statics目录(存放css/fonts/imgs/js/plugins) settings配置 STA ...

  10. python 类属性.方法 实例的基本用法

    class man(): classify = "people"# 全局属性 def __init__(self,name,age,value,):#类方法 self.name = ...