`

初始化参数(init-param)

阅读更多
web.xml中配置Servlet的时候,标签<servlet>来配置初始化参数。一个Servlet可以配置0到多个初始化参数,接下来的例子里配置了3个初始化参数
本文有卡菲牛奶撰写,原文请访问http://fuchangle.iteye.com/blog/1326993
<servlet>
  	<servlet-name>InitparamServlet</servlet-name>
  	<servlet-class>com.dapp.InitParemServlet</servlet-class>
  	
  	<init-param>
  		<param-name>helloween</param-name> <!--第一个参数-->
  		<param-value>password</param-value>
  	</init-param>
  	
  	<init-param>
  		<param-name>admin</param-name> <!--第二个参数-->
  		<param-value>admin</param-value>
  	</init-param>
  	
  	<init-param>
  		<param-name>babyface</param-name> <!--第三个参数-->  		<param-value>babyface</param-value>
  	</init-param>
  </servlet>
  
  <servlet-mapping>
  		<servlet-name>InitparamServlet</servlet-name>
  		<url-pattern>/Servlet/InitparamServlet</url-pattern>
  </servlet-mapping>


看一个例子。公司要颁布一个机密文件notice.html。要求能有几个人能够浏览。来实现这种权限控制。把notice.html放在/WEB-INF文件夹里面。因为java Web应用程序的WEB-INF有这个特性,任何人都不能通过浏览器直接获取其下面的文件,即使他知道文件的准确位置和名称。WEB-INF下面 的文件时受保护的,这样就保证了文件的安全性,如果浏览器直接访问服务器会报404Error,即使这个地址是对的
编写一个程序InitparamServlet,提示用户输入用户名密码。如果密码通过,则通过程序转到notice.html中。虽然web-inf下的文件不能通过浏览器直接获取,但是仍然可以通过程序读取到,程序代码如下:


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 InitParemServlet extends HttpServlet{

	@Override
	protected 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.print("<!DOCTYPE html PUBLIC\" -//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.print("<HTML>");
		out.print("<head><title>请登录查看Notice文件</title></head>");
		out.print("<body>");
		out.print("<form action='"+request.getRequestURI()+" ' method='post'>");
		out.print("账户:<input type='text' value='username' style='width:200px'><br/>");
		out.print("密码:<input type='password' value='password' style='width:200px'><br/>");
		
		out.print("<input type='submit' value='登录'>");
		out.print("</form>");
		
		out.print("</body>");
		out.print("<HTML>");
		out.flush();
		out.close();
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String username=request.getParameter("username");
		String password=request.getParameter("password");
		
		Enumeration params=this.getInitParameterNames();
		while(params.hasMoreElements()){
			String usernameParam=(String)params.nextElement();//用户名
			String passwordParam=getInitParameter(usernameParam);//密码	
			
			if(usernameParam.equalsIgnoreCase(username) && 
					passwordParam.equals(password)){
				request.getRequestDispatcher("/WEB-INF/notice.html").forward(request, response);
				return;
			}
		}
		this.doGet(request, response);//username,password不匹配
	}
}

一个月后,公司要求Peter为可以浏览该机密文件的人选,同时禁止babyface的账号。由于没有将这些信息写在源程序里而是写在web,xml里,因此改动相当简单,在参数配置里添加一个Peter,删除babyface就可以啦,一分钟搞定!
2
0
分享到:
评论
3 楼 ydpiaoyun 2011-12-28  
web.xml是使用最多的配置文件,这样做好像不太合适
2 楼 卡菲牛奶 2011-12-28  
苏er 写道
那不用重启服务么???

要重启服务器的,重新部署.
1 楼 苏er 2011-12-27  
那不用重启服务么???

相关推荐

    <context-param>与<init-param>的区别与作用

    另一方面,`&lt;init-param&gt;`用于Servlet或Filter的初始化参数。这些参数是特定于某个Servlet或Filter的,而不是全局的。它们在Servlet或Filter实例化时被加载。`&lt;init-param&gt;`的格式如下: ```xml &lt;servlet-name&gt;...

    spring配置中<context-param> 和<init-param>的 区别

    在Spring框架中,`&lt;context-param&gt;` 和 `&lt;init-param&gt;` 是两种不同的参数配置方式,它们在Web应用的初始化阶段起着关键作用。了解这两者的区别是优化和理解Spring应用程序运行时行为的重要知识点。 首先,`&lt;context...

    解析web.xml中在Servlet中获取context-param和init-param内的参数

    其中,`context-param`和`init-param`是两个重要的元素,用于设置应用级和Servlet级的初始化参数。理解它们的用法和如何在Servlet中获取这些参数对于构建和维护Web应用程序至关重要。 首先,`context-param`是用来...

    Servlet初始化参数和上下文初始化参数训练及处理数据库示例[汇编].pdf

    Servlet 初始化参数和上下文初始化参数训练及处理数据库示例 本文主要讲解 Servlet 初始化参数和上下文初始化参数的概念、定义、配置和获取方法。同时,通过实践演示,展示了如何在 Servlet 中读取初始化参数和上...

    Servlet初始化参数演示例子[源代码]

    Servlet初始化参数是在Servlet容器启动时设置的,这些参数可以在整个应用生命周期中被Servlet访问,通常用来配置Servlet的行为或应用的配置信息。本示例提供了对Servlet初始化参数的演示,帮助开发者了解如何在实际...

    Servlet获取初始化参数.doc

    在 web.xml 文件中,我们可以使用 `&lt;init-param&gt;` 元素来定义 Servlet 初始化参数。例如,在上面的示例代码中,我们定义了两个 Servlet 初始化参数:`username` 和 `email`。这些参数可以在 Servlet 的生命周期中...

    javaweb Servlet开发总结(二).docx

    3. **获取所有初始化参数**:使用 `getInitParameterNames()` 方法返回一个枚举,包含所有初始化参数的名称,然后通过循环遍历每个名称,并使用 `getInitParameter(String name)` 获取对应值。 #### 总结 通过上述...

    HTML动态包含页面

    然后,需要配置Servlet和Filter的相关参数,例如Servlet的名称、类名、初始化参数等。 在Servlet配置中,需要指定SSI Servlet的名称、类名、初始化参数等。例如: &lt;servlet-name&gt;ssi&lt;/servlet-name&gt; &lt;servlet-...

    tomcat跨域设置依赖jar包

    在配置中指定过滤器类(通常为`org.apache.catalina.filters.CorsFilter`)以及相应的初始化参数,例如允许的源、方法、头部等。 ```xml &lt;filter-name&gt;CorsFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.apache....

    freemarker语法简介

    此配置中包含了多个重要的初始化参数: - `TemplatePath`:指定模板文件的存放位置。 - `NoCache`:是否禁用模板缓存。 - `ContentType`:设置响应的内容类型。 - `template_update_delay`:设置模板文件更新后的...

    SSI技术整合

    这里定义了一个名为`ssi`的servlet,并指定了几个重要的初始化参数: - `buffered`:控制SSI是否使用缓冲区。 - `debug`:调试模式的级别,通常设为0表示不开启调试模式。 - `expires`:设置过期时间,单位为秒...

    tomcat跨域jar.zip

    `web.xml`是Java Web应用的标准配置文件,用于定义Servlet、过滤器、监听器等组件,以及它们的初始化参数和映射路径。 在Java Web应用中,处理跨域问题通常会使用过滤器(Filter),这里的`cors-filter-2.4.jar`...

    geoserver跨域包

    你需要在`web.xml` 文件中添加`&lt;filter&gt;` 和 `&lt;filter-mapping&gt;` 标签,指定`cors-filter` 并设置其初始化参数,比如允许的源、请求方法、认证和暴露的头部等。 例如,以下是一个基本的`&lt;filter&gt;` 配置示例: ```...

    Web.xml中配置Struts[参考].pdf

    Struts框架在Web.xml中的配置 Struts框架是Java EE中的一种基于MVC模式的Web应用程序框架,它提供...在Web.xml中配置Struts框架需要配置ActionServlet和初始化参数,以便Servlet容器能够正确地加载和使用Struts框架。

    dwr实现消息精确推送

    - `initApplicationScopeCreatorsAtStartup`:启动时是否初始化应用范围创建者,默认为`true`。 - `maxWaitAfterWrite`:最大等待时间(毫秒),默认为`3000`。 - `debug`:调试模式,默认为`true`。 - `logLevel`:...

    struts1中web.xml配置详解

    其中,`&lt;init-param&gt;` 元素用于配置初始化参数,`&lt;param-name&gt;` 元素用于指定参数名称,`&lt;param-value&gt;` 元素用于指定参数值。在上面的示例中,配置了三个初始化参数:config、debug 和 detail。 4. 扩展 Struts ...

Global site tag (gtag.js) - Google Analytics