1、初始化参数

web.xml里面可以定义两种参数: (1)application范围内的参数,存放在servletcontext中,在web.xml中配置如下:

context/param

avalible during application

(2)servlet范围内的参数,只能在servlet的init()方法中取得,在web.xml中配置如下:

MainServlet

com.wes.controller.MainServlet

param1

avalible in servlet init()

0

在servlet中可以通过代码分别取用:

package com.wes.controller;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

public

class MainServlet

extends HttpServlet

{ public MainServlet() { super(); } public void init() throws ServletException { System.out.println("下面的参数是存放在servletcontext中的"); System.out.println(getServletContext().getInitParameter("context/param"));

System.out.println("下面的两个参数param1是在servlet中存放的");

System.out.println(this.getInitParameter("param1")); } }

第一种参数在servlet里面可以通过getServletContext().getInitParameter("context/param")得到 第二种参数只能在servlet的init()方法中通过this.getInitParameter("param1")取

2、初始化参数获取

count 1200

loginServlet loginServlet loginServlet loginServlet 系统初始化数 num 100 loginServlet /loginServlet

获取参数的方法以及异同

String username=request.getParameter("username"); response.setCharacterEncoding("gb2312"); System.out.println("getServletContext():"+getServletContext()); ServletContext context=getServletConfig().getServletContext(); String num=context.getInitParameter("num");// 获取不到值 String count=context.getInitParameter("count");// 获取到值 System.out.println("num:"+num);//null System.out.println("count:"+count);//1200 System.out.println("num:"+getServletConfig().getInitParameter("num"));//100获取到值 System.out.println("count:"+getServletConfig().getInitParameter("count"));//null获取不到值 System.out.println("request.getSession().getServletContext():"+request.getSession().getServletContext()); request.setAttribute("username", username); PrintWriter out=response.getWriter(); out.println("获取的用户名是:"+username);

================================================================

1、URL中含有两个问号'?? '的处理

http://a.tbcdn.cn/??s/kissy/1.2.0/kissy-min.js,p/global/1.0/global-min.js,p/fp/2012/core.js,p/fp/2012/fp/module.js,p/fp/2012/fp/util.js,p/fp/2012/fp/directpromo.js?t=2012080620120925.js

解决:先以/*做全匹配,再分配给其余servlet进行处理, url的匹配顺序,参考:http://tianya23.blog.51cto.com/1081650/1001568

@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

HttpServletRequest httpRequest = null;

if (request instanceof HttpServletRequest) {

httpRequest = (HttpServletRequest) request;

} else {

throw new RuntimeException("not http request");

}

String queryString = httpRequest.getQueryString();

if (queryString != null && queryString.startsWith("?")) {

request.getRequestDispatcher("/taobao").forward(httpRequest, response);

} else {

chain.doFilter(httpRequest, response);

}

}

本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/1017887,如需转载请自行联系原作者