javaweb学习 基础(一)servlet day09-day10

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中可以为其设置合理的缓存时间值,以避免浏览器频繁向服务器发送请求,提升服务器的性能。例如:

 

posted @ 2019-04-03 20:54  doyi  阅读(114)  评论(0编辑  收藏  举报