`

初始化参数(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  
那不用重启服务么???

相关推荐

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

    &lt;context-param&gt; 和&lt;init-param&gt;的 区别代码 博文链接:https://xhy0422.iteye.com/blog/46319

    java自动发邮件

    System.out.println("系统文件web.xml错误:邮件发送程序初始化失败!"); return; } sender.setServer(server); sender.setPort(port); sender.setAddress(address); sender.setUsername(username); sender....

    init-structure:很棒的工具,可以使用预定义的结构和模板来初始化文件夹结构

    很棒的工具,可以使用预定义的结构和模板来初始化文件夹结构 用法 /** * @param { String } target Path to target folder * @param { Object|Array&lt;Object&gt; } structure Folder structure includes sub-...

    SSO CAS 单点登录实例SSOAuth+SSOWebDemo1+SSOWebDemo2.zip

    解压缩SSOWebDemo1和SSOWebDemo2文件,分别在它们/WEB-INF/下找到web.xml文件,请修改其中的几个初始化参数 &lt;init-param&gt; &lt;param-name&gt;SSOServiceURL&lt;/param-name&gt; &lt;param-value&gt;...

    基于EXT SSI的简单树实现

    &lt;param-value&gt;classpath:conf/spring/application.xml&lt;/param-value&gt; &lt;/context-param&gt; &lt;!-- 配置struts过滤应用请求 --&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;filter-class&gt;org.apache.struts2....

    Spring.html

    --全局初始化参数--&gt; &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt;classpath:applicationContext.xml&lt;/param-value&gt; &lt;/context-param&gt; 4.在Servlet中使用...

    python-init:通用库

    python初始化 通用库 一,tools / ArgsGet.py 功能 输入参数 使用 代码 from tools . ArgsGet import ArgsGet # 参数获取 a = ArgsGet (). get () print ( a . param1 , a . param2 ) 启动 python main.py --param1 ...

    web页面模块化异步渲染struts-gpipe.zip

     &lt;/filter&gt;struts-gpipe过滤器继承了StrutsPrepareAndExecuteFilter,在启动的时候会初始化struts-gpipe容器。2,struts.xml配置 name="gweb.groovy.dir" value="biz" /&gt;  name="gweb" namespace="/index" ...

    http请求绕过Filter的实现实例

    场景:两个web服务器,A当做服务端,B为客户端,...filter配置中,不能加exclusion,所以需要用初始化参数给出不过滤的请求。本例中不过滤的格式为&gt;/SarService。 &lt;!--session过期filter --&gt; &lt;init-param

    spring:spring源码级别的学习

    2、init-param classpath:application.xml contextConfigLoation 3、url-pattern /* 二、初始化、启动阶段 1、init 加载spring的配置文件 2、IOC初始化 声明一个IOC容器,Map 3、scan-package 配置一个包路径,扫描...

    分页插件,适配PC移动端

    * 初始化插件 * @param object:翻页容器对象 * @param function:回调函数 * */ Pagination.init($(".ht-page"), pageChange); /* * 首次调用 * @param object:翻页容器对象 * @param number:当前页 * @...

    SpringMVC-Mybatis-Shiro-redis-master 权限集成缓存中实例

    插入初始化数据:init.data.sql 3.运行。 管理员帐号:admin 密码:sojson ps:定时任务的sql会把密码改变为sojson.com 新版本说明:http://www.sojson.com/blog/164.html 和 ...

    vc-storage:超级简单的基于文件的数据存储,所有数据都受版本控制,GUID 标识,灵活可扩展

    初始化数据存储文件夹vsStore.init({ dataFolder: './datastore' }); 你完成了。 方法 在运行期间初始化设置和存储参数 @param {Object} data 任何常见的存储参数,目前数据文件夹是正常工作所必需的。 @return {...

    commons-fileupload-1.2.jar和commons-io-1.3.2.jar

    //的到web.xml中的配置文件用于保存上传文件,也可以在已开始定义的时候初始化,不过这样可以通过改动配置文件来改动存放路径,不用该代码,增加了灵活性。 } } web.xml中相应的配置如下: &lt;servlet-name&gt;...

    对Pytorch神经网络初始化kaiming分布详解

    torch.nn.init.calculate_gain(nonlinearity, param=None) 提供了对非线性函数增益值的计算。 增益值gain是一个比例值,来调控输入数量级和输出数量级之间的关系。 fan_in和fan_out pytorch计算fan_in和fan_out的...

    egg.js的基本使用和调用数据库的方法示例

    egg-init egg-example --type=simple //初始化一个egg模板例子 后面的type跟的是模板类型这里是简单的 cd egg-example//进入例子 npm i //安装依赖 可以去官方教程查看基本配置的讲解。 直接说使用,简单看过Egg的...

    OpenProtocol纯手写源码实例

    /// 初始化连接 /// /// &lt;param name="KeepAlive"&gt;是否开启TCP层KeepAlive功能&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public bool Init(bool KeepAlive) { try { if (mSocket != null) { Close(); } //...

    linux驱动学习去开发入门

    (2)驱动模块和应用程序的一个重要不同是:应用程序退出时可不管资源释放或者其他的清除工作,但模块的退出函数必须仔细撤销初始化函数所作的一切,否则,在系统重新引导之前某些东西就会残留在系统中。 (3)...

    微信开发板demo

    参数:param – 初始化参数 返回:true – 成功 false – 失败  wx_send_data 原型:bool wx_send_data(wxDeviceDataType_t type, void *pData, uint16 len); 作用:向BLEM201P发送数据包 参数:type – 数据方向 ...

    sky:SkyJt for JT公司前组工具

    init ,i 初始化全栈工程结构 init ,initmp 初始化小程序工程结构 jtjs ,jt 导出 jt.js dbscan,db JiaTui 数据库扫描规则 Default: 127.0.0.1/root/123456 commentscan,comment jt前端函数注释扫描 swaggerscan...

Global site tag (gtag.js) - Google Analytics