Servlet/JSP-02 Servlet相关类
ServletConfig / ServletContext / ServletRequest / ServletResponse
一. ServletConfig:封装了Servlet得配置信息,并且可以获取ServletContext对象。
1 获取初始化参数
a. 配置初始化参数
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.bwr.start.HelloServlet</servlet-class>
<!-- init-param节点必须在load-on-startup前 -->
<init-param>
<param-name>encode</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>encode</param-name>
<param-value>utf-8</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
b. 获取初始化参数
getInitParamter(String name) 获取Servlet指定名称的初始化参数
getInitParameterNames() 获取Servlet中所有的初始化参数名的枚举值
public void init(ServletConfig config) throws ServletException {
System.out.println("init...");
String name = config.getInitParameter("name");
System.out.println("name: " + name);
Enumeration<String> params = config.getInitParameterNames();
while(params.hasMoreElements()) {
String param = params.nextElement();
String value = config.getInitParameter(param);
System.out.println(">> " + param + ": " + value);
}
}
Servlet加载时后台输出结果:
name: tom
>> encode: utf-8
>> name: tom
2 获取Servlet名称 getServletName()
3 获取Servlet上下文 getServletContext()
二. ServletContext
1.Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,在Servlet中可以通过ServletConfig的getServletContext()方法获取。
2.由于一个WEB应用中所有Servlet共享同一个ServletContext对象,所以也被称之为application对象(WEB应用程序对象)
3.可以通过ServletContext获取当前WEB应用各方面的信息:
① 获取当前WEB应用初始化参数
配置:在web.xml文件的web-app标签下配置
<context-param>
<param-name>web-name</param-name>
<param-value>Hello</param-value>
</context-param>
<context-param>
<param-name>version</param-name>
<param-value>2.2.1</param-value>
</context-param>
获取:通过ServletContext的getInitParamter(String name)和getInitParamterNames()获取。
② 获取当前WEB应用的某个文件的绝对路径
a.文件必须位于WEB应用内,即在项目的WebContent下;获取的绝对路径是应用部署后文件所在的绝对路径
b. 使用方法servletContext.getRealPath("/note.txt"),"/"在eclipse项目结构中代表WebContent
③ 获取当前WEB应用的名称
servletContext.getContextPath() // "/JavaWeb01"
④ 获取当前WEB应用某个文件对应的输入流
servletContext.getResourceAsStream(String path); // path前的"/"为WEB应用的根目录
a.在eclipse项目下src下有文件db.properties
ServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
getClass().getClassLoader().getResourceAsStream("db.properties");
b.在eclipse项目下WebContent下有文件note.txt
ServletContext().getResourceAsStream("/note.txt");
⑤ 与Attribute相关的方法(后文详述)
引子:如何在Servlet中获取请求信息?
Servlet的service方法用于应答请求,每次请求都会调用service方法:
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException
ServletRequest:封装了请求信息,从中可以获取任何请求信息
ServletResponse:封装了响应信息,可以通过它想用户传递响应
上述二者都是由Servlet容器实现,并传递给service方法
三. ServletRequest
1.获取请求参数
String getParamter(String name)
根据请求参数名称获取参数值,若请求参数有多个值(checkbox)只能获取第一个值
String[] getParameterValues(String name)
用于获取请求参数有多个值的情况
Map getParamterMap()
获取参数名和参数值的键值对Map<String, String[]>
Enumeration getParameterNames()
获取请求参数名对应的Enumeration
-- 以下为HttpServletRequest的方法
2.获取请求的URL
HttpServletRequest.getRequestURL()
3.获取请求方法
HttpServletRequest.getMethod()
4.获取GET请求的查询字符串
HttpServletRequest.getQueryString()
5.获取请求的Servlet的映射路径
HttpServletRequest.getServletPath() //web.xml配置的url-pattern
6.与Attribute相关的方法(后文详述)
四. ServletResponse
1. ServletResponse.getWriter()
返回PrinterWriter对象,调用该对象的print()方法,可以把内容直接显示到浏览器上
2.ServletResponse.setContentType(String type)
设置响应类型, setContentType("application/msword") 输出word文档,具体类型可到tomcat下得web.xml文件中查询
3.ServletResponse.getOutputStream()
获取文件输出流
4.HttpServletResponse的方法在后文HttpServlet中描述,例如sendRedirect(String location)
Servlet/JSP-02 Servlet相关类的更多相关文章
- 从0开始学Java——JSP和Servlet——jsp转servlet出错的三个典型场景
由于jsp终究是要转换为servlet的java文件,然后再编译为.class文件,最后才执行,那么在这过程的任何一个步骤都可能有问题,主要包括三个方面,下面逐一分析: 一.JSP转换为Servlet ...
- Java开发工程师(Web方向) - 02.Servlet技术 - 第4章.JSP
第4章--JSP JSP JSP(Java Server Pages) - 中文名:Java服务器页面 动态网页技术标准 JSP = Html + Java + JSP tags 在服务器端执行,返回 ...
- jsp与servlet(转)
一.基本概念 1.1 Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器 ...
- Web---演示Servlet的相关类、表单多参数接收、文件上传简单入门
说明: Servlet的其他相关类: ServletConfig – 代表Servlet的初始化配置参数. ServletContext – 代表整个Web项目. ServletRequest – 代 ...
- Web---演示Servlet的相关类、下载技术、线程问题、自定义404页面
Servlet的其他相关类: ServletConfig – 代表Servlet的初始化配置参数. ServletContext – 代表整个Web项目. ServletRequest – 代表用户的 ...
- 面试之jsp、Servlet相关知识——生命周期, 区别等
1.servlet生命周期 所谓生命周期,指的是servlet容器如何创建servlet实例.分配其资源.调用其方法.并销毁其实例的整个过程. 阶段一: 实例化(就是创建servlet对象,调用构造器 ...
- jsp、Servlet相关知识介绍(转)
1.servlet生命周期 所谓生命周期,指的是servlet容器如何创建servlet实例.分配其资源.调用其方法.并销毁其实例的整个过程. 阶段一: 实例化(就是创建servlet对象,调用构造器 ...
- Servlet主要相关类核心类 容器调用的过程浅析 servlet解读 怎么调用 Servlet是什么 工作机制
WEB简介 Web项目 是 B/S结构 浏览器/服务器模式的 浏览器发起请求,服务器作出响应 请求的发起和响应使用HTTP协议进行通讯 所谓协议也就是一种固定格式 而Socket是应用 ...
- Servlet的相关类--ServletConfig(接口)
ServletConfig是一个接口,有关配置文件的 servlet的配置信息<---对应--->ServletConfig web.xml配置文件会被加载到内存中,然后解析器会对它进行解 ...
- Servlet及相关类和接口
上一篇介绍了在Web项目中web.xml文件的配置信息,本篇主要介绍里面非常重要的配置——Servlet配置,重点介绍与Servlet相关的几个接口和类,包括Servlet接口.ServletConf ...
随机推荐
- Gym 101102C---Bored Judge(区间最大值)
题目链接 http://codeforces.com/gym/101102/problem/C problem description Judge Bahosain was bored at ACM ...
- Scalaz(40)- Free :versioned up,再回顾
在上一篇讨论里我在设计示范例子时遇到了一些麻烦.由于Free Monad可能是一种主流的FP编程规范,所以在进入实质编程之前必须把所有东西都搞清楚.前面遇到的问题主要与scalaz Free的Free ...
- Windows Git中文文件名乱码
在Windows下使用git,安装包如下: https://git-for-windows.github.io/ 在使用git bash时git 默认中文文件名是 xx% 是因为 对0x80以上的字符 ...
- 【FOL】万里长征第一步
准备了好久了,中间断断续续看了些资料,也写了几个小demo练手,今天正式开始. 因为要模拟debug和release环境,手上资源又很缺,必须把一些已经拼好的图片进行切割,网络上找了半天倒是有几个切图 ...
- 快速熟悉Velocity
果然公司用的东西跟平时学的东西不太一样,我们公司前台页面并不是我们熟悉的.html或者.jsp文件,而是很多人不知道的 .vm文件,其实只要我们理解了jsp文件,vm文件也就是一些基本语法不同而已. ...
- css用背景图来替换文字来达到隐藏文字的目的
根据html代码的不同来分成两大类方法,如下 html代码: <h1 class="replace-indent">hello see</h1> 第一种方法 ...
- jQuery绑定事件的四种方式
jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点,有助于我们在写代码的时候进行正确的选择,从而写出优雅而容易维护的代码.下面我们来看下jQuery中绑定事件的方式都 ...
- 学习笔记——关于HTML(含HTML5)的块级元素和行级(内联)元素总结
1.首先我们要知道什么是块级元素和行级(内联)元素? 块级(block)元素的特点: ①总是在新行上开始: ②高度,行高以及外边距和内边距都可控制: ③宽度缺省是它的容器的100%,除非设定一个宽度: ...
- 无插件的大模型浏览器Autodesk Viewer开发培训-武汉-2014年8月28日 9:00 – 12:00
武汉附近的同学们有福了,这是全球第一次关于Autodesk viewer的教室培训. :) 你可能已经在各种场合听过或看过Autodesk最新推出的大模型浏览器,这是无需插件的浏览器模型,支持几十种数 ...
- Android Studio常用快捷键
Ctrl+U :如果你的光标在重写父类的一个方法内(如:Activity#onCreate()),这个将会跳到父类的实现上. 如果你的光标在类名上,它将会跳到父类. Ctrl+Alt+Home:它可以 ...