6、ServletResponse 接口
7、HttpServletResponse接口
因为这两个接口和Request的类似,之前有做个一些介绍,就不多做解释,在之后还会继续讲到一些特殊的方法。
8、ServletConfig接口
值得注意是:Servlet容器初始化一个servlet对象时,会为这个Servlet对象创建一个servletconfig对象。用于获取一些Servlet容器的配置信息。
可以对这个接口做个测试:
需要在web.xml文件添加一些配置信息,具体如下:
在标签中添加类标签,设置了初始参数,可以通过当前对象(this)的getInitParameter(“参数名”)方法获取。
然后定义的FontServlet的具体代码:
package com.java.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FontServlet extends HttpServlet {
private static final long serialVersionUID = -8664491996062336996L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 获得word请求参数
String word = req.getParameter("word");
if (word == null)
word = "Hello";
// 读取初始化参数
String color = getInitParameter("color");
String size = getInitParameter("size");
// 打印servletName:Font
System.out.println("servletName: " + getServletName());
// 设置HTTP响应的正文的MIME类型及字符编码
resp.setContentType("text/html;charset=UTF-8");
/* 输出HTML文档 */
PrintWriter out = resp.getWriter();
out.println("<html><head><title>FontServlet</TITLE></head>");
out.println("<body>");
out.println("<font size='" + size + "' color='" + color + "'>" + word
+ "</font>");
out.println("</body></html>");
out.close(); // 关闭PrintWriter
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
然后重启Tomcat,在地址栏输入:
http://localhost:8080/Servlet16_10_3/font?word=HelloWorld
结果:
9、ServletContext接口
总结该接口特点:
(1)、ServletContext是Sevlet和Servlet容器间直接通信的接口。
(2)、Servlet容器在启动WEB应用时,会为它创建一个servletcontext对象。
(3)、每个Web应用都有唯一的ServletContext对象。
(4)、Sevlet通过ServletContext来访问容器中的各种资源。
接下用ServletContext做个网页计数器。先定义一个实体类Counter(计 数器),然后再定义CounterServlet
具体代码:
package com.test.entity;
/**
* 计数器
*/
public class Counter {
// 计数值
private int count;
public Counter() {
this(0);
}
public Counter(int count) {
this.count = count;
}
public void setCount(int count) {
this.count = count;
}
public int getCount() {
return count;
}
//加值
public void add(int step) {
count += step;
}
}
package com.java.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.test.entity.Counter;
public class CounterServlet extends HttpServlet {
private static final long serialVersionUID = 4189990252715014697L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 获得ServletContext的引用
ServletContext context = getServletContext();
// 从ServletContext中读取counter属性
Counter counter = (Counter) context.getAttribute("counter");
// 如果ServletContext中没有counter属性,就创建counter属性
if (counter == null) {
counter = new Counter(1);
context.setAttribute("counter", counter);
}
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<html><head><title>CounterServlet</TITLE></head>");
out.println("<body>");
// 输出当前的counter属性
out.println("<h1>欢迎光临本站。您是第" + counter.getCount() + " 位访问者。</h1>");
out.println("</body></html>");
// 将计数器递增1
counter.add(1);
out.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
配置信息:
<servlet>
<servlet-name>counter</servlet-name>
<servlet-class>
com.java.web.servlet.CounterServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>counter</servlet-name>
<url-pattern>/counter</url-pattern>
</servlet-mapping>
通过不同浏览器测试,测试结果:
至此常用的或是常见的接口都已介绍完。