servlet/jsp学习04 读取web.xml参数

1初始化参数init-param

init-param是配置在web.xml的<servlet>标签里的,也就是说,是归该servlet单独所有的。

实例

   <servlet>
        <servlet-name>ContextParamServlet</servlet-name>
        <servlet-class>com.servlet.ContextParamServlet</servlet-class>
   </servlet>
   <servlet>
       <servlet-name>InitParamServlet</servlet-name>
       <servlet-class>com.servlet.InitParamServlet</servlet-class>
       <init-param>
           <param-name>harry</param-name>
           <param-value>3324</param-value>
        </init-param>
         <init-param>
           <param-name>kitty</param-name>
           <param-value>3124</param-value>
        </init-param>
       <init-param>
           <param-name>rixiang</param-name>
           <param-value>1992</param-value>
        </init-param>
  </servlet>

servlet程序中读取:

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class InitParamServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

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

        response.setCharacterEncoding("UTF-8");
        request.setCharacterEncoding("UTF-8");

        response.setContentType("text/html");

        PrintWriter out = response.getWriter();

        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>请登录查看 Notice 文件</TITLE></HEAD>");
        out.println("<style>body, td, div {font-size:12px; }</style>");
        out.println("  <BODY>");

        out.println("<form action=‘" + request.getRequestURI() + "‘ method=‘post‘>");
        out.println("帐号:<input type=‘text‘ name=‘username‘ style=‘width:200px; ‘> <br/>");
        out.println("密码:<input type=‘password‘ name=‘password‘ style=‘width:200px; ‘> <br/><br/>");
        out.println("<input type=‘submit‘ value=‘  登录  ‘>");
        out.println("</form>");

        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException,IOException{
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        @SuppressWarnings("rawtypes")
        Enumeration params = this.getInitParameterNames();
        while(params.hasMoreElements()){
            String usernameParam = (String)params.nextElement();
            String passnameParam = this.getInitParameter(usernameParam);
            if(usernameParam.equalsIgnoreCase(username)
                    && passnameParam.equals(password)){
                request.getRequestDispatcher("/WEB-INF/notice.html").forward(request, response);
                return;
            }
        }
        this.doGet(request, response);
    }
}

效果:

2上下文参数,context-param

context-param是所有servlet公有的

  <context-param>
      <param-name>upload folder</param-name>
      <param-value>attachment</param-value>
  </context-param>
  <context-param>
       <param-name>allowed file type</param-name>
       <param-value>.gif,.jpg,.bmp</param-value>
  </context-param>

servlet程序读取:

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ContextParamServlet  extends HttpServlet{
    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request,
            HttpServletResponse response)
                    throws ServletException,IOException{
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>读取文档参数</TITLE></HEAD>");
        out.println("  <link rel=‘stylesheet‘ type=‘text/css‘ href=‘../css/style.css‘>");
        out.println("  <BODY>");
        out.println("<div align=center><br/>");
        out.println("<fieldset style=‘width:90%‘><legend>所有的文档参数</legend><br/>");

        ServletContext servletContext = this.getServletConfig().getServletContext();

        String uploadFolder = servletContext.getInitParameter("upload folder");
        String allowedFileType = servletContext.getInitParameter("allowed file type");

        out.println("<div class=‘line‘>");
        out.println("    <div align=‘left‘ class=‘leftDiv‘>上传文件夹</div>");
        out.println("    <div align=‘left‘ class=‘rightDiv‘>" + uploadFolder + "</div>");
        out.println("</div>");

        out.println("<div class=‘line‘>");
        out.println("    <div align=‘left‘ class=‘leftDiv‘>实际磁盘路径</div>");
        out.println("    <div align=‘left‘ class=‘rightDiv‘>" + servletContext.getRealPath(uploadFolder) + "</div>");
        out.println("</div>");

        out.println("<div class=‘line‘>");
        out.println("    <div align=‘left‘ class=‘leftDiv‘>允许上传的类型</div>");
        out.println("    <div align=‘left‘ class=‘rightDiv‘>" + allowedFileType + "</div>");
        out.println("</div>");

        out.println("</fieldset></div>");

        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}

效果

3资源注射@Resource

不需要servlet主动去读取,tomcat启动时会把web.xml里配置的信息主动注射到servlet里。

只需要@Resource注解。

       <env-entry>
        <env-entry-name>hello</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>
            Hello, Welcome to the JavaEE Resource Injection.
        </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>30</env-entry-value>
    </env-entry>

    <env-entry>
        <env-entry-name>persons</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>
            Helloween, Cobain, Roses, Axl,
        </env-entry-value>
    </env-entry>

servlet程序读取

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class InjectionServlet extends HttpServlet{
    private static final long serialVersionUID = -8526907492073769090L;

    // 注入的 字符串
    private @Resource(name="hello") String hello;
    // 注入的 整数
    private @Resource(name="i") int i;

    // 注入更常见的写法
    @Resource(name="persons")
    private String persons;

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

        response.setCharacterEncoding("UTF-8");
        request.setCharacterEncoding("UTF-8");

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>资源注入</TITLE></HEAD>");
        out.println("<style>body {font-size:12px; }</style>");

        out.println("<b>注入的字符串</b>:<br/>&nbsp;&nbsp;-&nbsp;" + hello + "<br/>");
        out.println("<b>注入的整数</b>:<br/>&nbsp;&nbsp;-&nbsp;" + i + "<br/>");
        out.println("<b>注入的字符串数组</b>:<br/>");

        for(String person : persons.split(",")){
            out.println("&nbsp;&nbsp;-&nbsp;" + person + "<br/>");
        }

        out.println("  <BODY>");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}

效果

时间: 2024-08-25 15:53:26

servlet/jsp学习04 读取web.xml参数的相关文章

Servlet&amp;JSP学习笔记:Web应用程序基础知识

URL.URN和URI URL:Uniform Resource Locator URN:Uniform Resource Name URI:Uniform Resource Indenfier URL的主要目的,是以文字方式来说明因特网上的资源如何取得.一般而言,URL的主要格式为: <协议>:<特定协议部分> 协议(scheme)指定了以何种方式取得资源.常见的协议名有: ftp(文件传输协议,File Transfer Protocol) http(超文本传输协议,Hyper

Servlet&amp;JSP学习笔记:什么是Web容器

什么是Web容器 Web容器(Container)是Servlet/JSP唯一认得的 HTTP 服务器 在具体层面,容器说穿了就是一个用 Java 写的程序,运行于 JVM 之上,不同类型的容器会负责不同的工作,若以 Servlet/JSP 运行的 Web 容器(Web Container)来说,也是一个 Java 写的程序. HTTP 那些文字性的通信协议,如何变成 Servlet/JSP中可用的 Java 对象,其实就是容器做的剖析与转换. 在抽象层面,可以将Web容器视为运行 Servle

Servlet&JSP学习笔记

Servlet&JSP学习笔记 */--> Servlet&JSP学习笔记 Table of Contents 1 Web容器 2 内置对象 2.1 内置对象分类 2.1.1 out 2.1.2 request 2.1.3 application 2.1.4 response 2.1.5 session 2.1.6 其他 3 JavaBean 3.1 JSP动作元素 3.2 javabean的四个作用於范围 4 JSP状态管理 4.1 Cookie 4.2 include 指令与动作

JSP,JAVAWEB通过配置web.xml完成主/二级域名Session共享

As we all 知道.web应用中一般根据cookie id来完成Session支持以便于用户跟踪,在顶级域名如 a.com和www.a.com 之间的Session和Cookie默认情况是无法共享的,这是因为Cookie根据Domain属性来决定归属.通过Chrome系浏览器的F12调试工具我们可以看到a.com的默认Domain是a.com而www.a.com的默认Domain是www.a.com,可能他们都访问的是同一个站点,但是这两个Domain属性值不一致导致了如果在a.com基于

Servlet&amp;Jsp学习笔记归纳图(一)

转载请注明出处!!!版权必究!! 以下是Servlet&Jsp的学笔记归纳图,详细内容以及相关代码会在后面整理完成 后给出 使用的是思维导图工具:MindManager 6 最新版本是2013,有兴趣的自己百度下载,功能更多,安装有点麻烦 以下提供版本6绿色版免安装版下载: http://pan.baidu.com/s/1jGqlnXc 本节思维导图文件下载:http://pan.baidu.com/s/1eQGbMSU Servlet&Jsp学习笔记归纳图(一),布布扣,bubuko.c

SSM学习-4.配置web.xml

在web.xml主要配置: 1.启动spring容器 2.springmvc的拦截器 3.字符编码过滤器 4.REST风格的URI 具体配置如下: <?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/j

Servlet声明周期和部署web.xml

一.什么事Servlet Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层.使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页.Servlet下有一个实现类叫HttpServlet,一个普通的java如果继承了HttpServlet类,覆盖了它的doGet和doPost方法,那么这个普通类也可以叫做Servl

jsp去除空行的web.xml配置

在jsp中我们引入的标签,例如jstl的标签,循环遍历等等,可能会产生很多空行,其实也没什么,不会影响展示,但是空行多多少少会影响性能,这是我们只需要在web.xml中配置一下我们就可以很简单的去掉,配置如下: <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <trim-directive-whitespaces>true</trim-directive-

servlet 3.0无需配置web.xml,使用注入方式配置servlet实现登陆功能(服务器需要支持servlet3.0)

首先申明上面的报错红叉,我也不知道怎么回事.总之能运行. 新建项目时选择java EE6.0,低版本没有servlet3.0. 先看一个基本示例. Test.java是用来测试无需配置文件,无需静态页面(jsp,html) 直接访问servlet来从服务器上获取信息. Test.java代码 1 package com.gys; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servl