day-day10(内容来自cxf老师和孤傲苍狼)
当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,我们通过ServletConfig对象就可以得到当前servlet的初始化参数信息。
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。
day09
day10
day10-2
获取客户端的IP地址、获取请求方式、获取User-Agent,得到客户端的信息(操作系统 浏览器)。
String addr = request.getRemoteAddr();//获取客户端的IP地址
String userAgent = request.getHeader("User-Agent");//获取名为User-Agent的请求头!
/*
* Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36
*/
day10-3
/*
* 测试获取所有请求参数的名称
*/
Enumeration names = request.getParameterNames();
while(names.hasMoreElements()) {
System.out.println(names.nextElement());
}
/*
* 获取所有请求参数,封装到Map中
*/
Map<String,String[]> map = request.getParameterMap();
for(String name : map.keySet()) {
String[] values = map.get(name);
System.out.println(name + "=" + Arrays.toString(values));
}
转发,只能转发到当前web应用内的资源。 浏览器URL的地址栏不变。
也可以直接用request进行转发:
重定向,可以跳转到当前web应用,或其他web应用,甚至是外部域名网站。 不能共享request范围内的数据。浏览器URL的地址栏改变。
sendRedirect()方法不能转发到“/WEB-INF/”路径下的jsp页面资源,而getRequestDispatcher().forword()可以重定向到“/WEB-INF/”路径下的jsp页面资源。
对于不经常变化的数据,在servlet中可以为其设置合理的缓存时间值,以避免浏览器频繁向服务器发送请求,提升服务器的性能。例如: