ServletAPI 2.5的源代码
1.ServletResponse类的源代码如下:
package javax.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Locale;
public abstract interface ServletResponse
{
public abstract String getCharacterEncoding();
public abstract String getContentType();
public abstract ServletOutputStream getOutputStream()
throws IOException;
public abstract PrintWriter getWriter()
throws IOException;
public abstract void setCharacterEncoding(String paramString);
public abstract void setContentLength(int paramInt);
public abstract void setContentType(String paramString);
public abstract void setBufferSize(int paramInt);
public abstract int getBufferSize();
public abstract void flushBuffer()
throws IOException;
public abstract void resetBuffer();
public abstract boolean isCommitted();
public abstract void reset();
public abstract void setLocale(Locale paramLocale);
public abstract Locale getLocale();
}
2.HttpServletResponse 类的源代码如下:
package javax.servlet.http;
import java.io.IOException;
import javax.servlet.ServletResponse;
public abstract interface HttpServletResponse extends ServletResponse
{
public static final int SC_CONTINUE = 100;//SC是 status code的简写
public static final int SC_SWITCHING_PROTOCOLS = 101;
public static final int SC_OK = 200;
public static final int SC_CREATED = 201;
public static final int SC_ACCEPTED = 202;
public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
public static final int SC_NO_CONTENT = 204;
public static final int SC_RESET_CONTENT = 205;
public static final int SC_PARTIAL_CONTENT = 206;
public static final int SC_MULTIPLE_CHOICES = 300;
public static final int SC_MOVED_PERMANENTLY = 301;
public static final int SC_MOVED_TEMPORARILY = 302;
public static final int SC_FOUND = 302;
public static final int SC_SEE_OTHER = 303;
public static final int SC_NOT_MODIFIED = 304;
public static final int SC_USE_PROXY = 305;
public static final int SC_TEMPORARY_REDIRECT = 307;
public static final int SC_BAD_REQUEST = 400;
public static final int SC_UNAUTHORIZED = 401;
public static final int SC_PAYMENT_REQUIRED = 402;
public static final int SC_FORBIDDEN = 403;
public static final int SC_NOT_FOUND = 404;
public static final int SC_METHOD_NOT_ALLOWED = 405;
public static final int SC_NOT_ACCEPTABLE = 406;
public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
public static final int SC_REQUEST_TIMEOUT = 408;
public static final int SC_CONFLICT = 409;
public static final int SC_GONE = 410;
public static final int SC_LENGTH_REQUIRED = 411;
public static final int SC_PRECONDITION_FAILED = 412;
public static final int SC_REQUEST_ENTITY_TOO_LARGE = 413;
public static final int SC_REQUEST_URI_TOO_LONG = 414;
public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
public static final int SC_EXPECTATION_FAILED = 417;
public static final int SC_INTERNAL_SERVER_ERROR = 500;
public static final int SC_NOT_IMPLEMENTED = 501;
public static final int SC_BAD_GATEWAY = 502;
public static final int SC_SERVICE_UNAVAILABLE = 503;
public static final int SC_GATEWAY_TIMEOUT = 504;
public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
public abstract void addCookie(Cookie paramCookie);
public abstract boolean containsHeader(String paramString);
public abstract String encodeURL(String paramString);
public abstract String encodeRedirectURL(String paramString);
/**
* @deprecated
*/
public abstract String encodeUrl(String paramString);
/**
* @deprecated
*/
public abstract String encodeRedirectUrl(String paramString);
public abstract void sendError(int paramInt, String paramString)
throws IOException;
public abstract void sendError(int paramInt)
throws IOException;
public abstract void sendRedirect(String paramString)
throws IOException;
public abstract void setDateHeader(String paramString, long paramLong);
public abstract void addDateHeader(String paramString, long paramLong);
public abstract void setHeader(String paramString1, String paramString2);
public abstract void addHeader(String paramString1, String paramString2);
public abstract void setIntHeader(String paramString, int paramInt);
public abstract void addIntHeader(String paramString, int paramInt);
public abstract void setStatus(int paramInt);
/**
* @deprecated
*/
public abstract void setStatus(int paramInt, String paramString);
}
2.1HttpServletResponse 对象所想描述的结构如下(http响应格式图):
其中,消息头,可以通过“meta ”标签equiv属性来模拟,如下
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
……
但是其优先级没有相应头高。
另外,如果页面本身编码为utf-8,浏览器将会识别出来,并强制设置为utf-8编码。"Content-Type""将不起作用。
3.ServletOutputStream和PrintWriter
ServletResponse类提供了如下两个方法:
public abstract ServletOutputStream getOutputStream()
throws IOException;
public abstract PrintWriter getWriter()
throws IOException;
Servlet程序向ServletOutputStream或PrintWriter对象中写入的数据将被Servlet引擎获取,Servlet引擎,将这些数据当作响应消息的正文,然后再与响应状态行,响应头组合输出到客户端(通常为IE,Chrome等浏览器)。
ServletOutputStream主要针对字节,而PrintWriter针对字符串。另外getOutputStream和getWriter在一个service方法中不能同时调用。
参考:《深入体验Java_Web开发内幕-核心基础\》
- 大小: 10.5 KB
分享到:
相关推荐
标题"javaee源代码"表明这是JavaEE相关的源码集合,可能包含了实现JavaEE规范的各种组件的源文件。这对于学习和理解JavaEE的工作原理非常有价值,因为通常在实际开发中我们使用的是预编译好的库文件,而源代码可以让...
此压缩包“JAVAEE_api_中英文对照版”提供了一个宝贵的资源,帮助开发者理解和使用Java EE中的各种组件和接口。 在Java EE API中,最重要的部分包括: 1. **Servlet**:Servlet是Java编程语言中的一个接口,用于...
源代码对于学习和理解其工作原理至关重要,特别是对于调试和定制功能时。 在描述中提到,有些在线提供的`javaee.jar`版本可能不包含`javax.servlet`的源码。`javax.servlet`是Java Servlet API的一部分,它是JavaEE...
给顶一个JSP程序源代码,如下:** ```jsp ``` - **问题描述:**在two.jsp中可以输出参数location值的代码片段是什么? - **答案解析:** - D、("location")%> 正确答案。`request.getParameter`方法用于获取...
`javax.servlet`和`javax.servlet.http`这两个包提供了Servlet和Filter接口,以及HttpServletRequest和HttpServletResponse等类,使得开发者能够构建动态Web应用程序。 2. **JSP API**:JavaServer Pages(JSP)是...
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); Part part=req.getPart("file"); //获取页面的name /...
【描述】:这个压缩包文件包含了一个基于JavaEE平台的人力资源管理系统的源代码。系统利用了原生的Servlet技术进行开发,旨在提供一套全面的人力资源管理解决方案。通过这个项目,开发者可以学习到如何使用Servlet来...
在JavaEE实验中,我们深入理解了JDBC连接池的概念,学习了如何配置数据源,以及如何使用PreparedStatement和ResultSet来执行SQL查询和处理结果。 EJB则是JavaEE中用于构建业务逻辑组件的高级框架,提供了实体Bean...
Servlet API包括`javax.servlet`和`javax.servlet.http`包,其中`HttpServletRequest`和`HttpServletResponse`接口是处理HTTP请求和响应的核心类。 2. **JSP(JavaServer Pages)**:JSP是一种视图技术,用于创建...
选项D表示添加HttpServletRequest和HttpServletResponse参数到execute()方法可以直接访问,这是正确的做法。 3. **Struts2动态方法调用**:Struts2允许动态方法调用来直接调用Action的特定方法。选项A配置启用动态...
- `<%-- --%>`:只在源代码中可见的注释。 - **3.4.5 动作标识** - `<jsp:include>`:包含动态文件。 - `<jsp:forward>`:转发到另一个资源。 - `<jsp:param>`:传递参数。 - **3.4.6 内置对象** - `out`:输出...
这个压缩包"韩顺平javaEE之servlet部分的源码文件.rar"包含了他在讲解servlet部分时使用的源代码,这些源码不仅有助于理解servlet的工作原理,还能帮助我们学习如何实际应用。 首先,让我们来了解一下Servlet。...
它将数据访问逻辑从应用逻辑中分离出来,有助于简化、标准化对数据源的操作,并提高代码的可复用性。 5. 过滤器(Filter):在Java EE中,Filter是用于对Web请求进行过滤处理的一种组件。在提供的文件中,...
本资源包含了一份详细的J2EE试题集,涵盖了从基础到进阶的各种知识点,并附有答案,非常适合进行J2EE相关考试的复习。以下是对这些知识点的详细阐述: 1. **Java基础** - Java是一种面向对象的编程语言,具有平台...
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().println("Hello, World!"); } } ``` 然后,我们需要在`src/...
- **Servlet源代码**(部分): ```java package myservlets; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class SampleServlet extends ...
标签"源码"暗示我们可以通过查看ServletDemo的源代码来学习如何编写和配置Servlet。"工具"可能指的是用于开发和调试Servlet的应用,如Eclipse、IntelliJ IDEA等集成开发环境,以及Tomcat、Jetty等Servlet容器。 ...
之后,我们可以创建源代码目录结构。在项目根目录下,新建`src/main/java`用于存放Java源代码,`src/main/resources`存放资源文件,`src/main/webapp`存放Web应用的静态文件,如HTML、CSS、JavaScript,以及WEB-INF...
1. **Servlet类**:这是Java源代码文件,扩展名为.java,实现了javax.servlet.Servlet或javax.servlet.http.HttpServlet接口。例如,可能有一个名为`MyServlet`的类,它重写了`service()`方法来处理HTTP请求。 2. *...