requestdispatcherservlet.java
来自「JAVA Servlet2.3外文书籍源码」· Java 代码 · 共 117 行
JAVA
117 行
package basicServlets;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* Title: Chapter 2
* Description: RequestManagerServlet
* Copyright: Copyright (c) 2001
* Company:
* @author Andrew Harbourne-Thomas
* @version 1.0
*/
public class RequestDispatcherServlet
extends GenericServlet implements Dispatching {
private static StringBuffer form = new StringBuffer();
/**
* This method prepares the tope of the page and the includes (using
* the RequestDispatcher) another servlet in the page
*/
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
ServletContext servletContext = getServletContext();
ServletConfig config = getServletConfig();
PrintWriter out = response.getWriter();
String servletRequested = request.getParameter("servlet");
//get the dispatcher
RequestDispatcher requestDispatcher =
servletContext.getRequestDispatcher("/" + servletRequested);
//prepare and output the page
response.setContentType("text/html");
out.println(getPageTitle(servletRequested));
//include the requested resource (if any)
if (requestDispatcher != null) {
//attach this attribute to the request to
//indicate to the RequestResponseServlet
//that the request is commited
request.setAttribute("buffer", "written");
requestDispatcher.include(request, response);
}
else if (servletRequested == null) {
out.println("Please choose a servlet");
}
else {
out.println(servletRequested + " is not recognised by the server");
}
out.println("</BODY></HTML>");
out.flush();
}
/**
* This intialises the form StringBuffer. As this doesn't change,
* by making it a static variable it is intialised only once.
*/
public void init() throws ServletException {
form.append(getForm());
}
/**
* This method returns the top of the webpage that the sevlet
* go under.
*/
private StringBuffer getPageTitle(String servletRequested) {
StringBuffer sb = new StringBuffer();
sb.append("<HTML><HEAD><title>");
if (servletRequested == null) {
sb.append("[no servlet requested]");
}
else {
sb.append(servletRequested);
}
sb.append("</title></HEAD><BODY><h1><code>");
if (servletRequested == null) {
sb.append("[no servlet was requested]</code>");
}
else {
sb.append(servletRequested).append("</code> is shown below");
}
sb.append("</h1><p>");
sb.append(form);
sb.append("<hr width=100%>");
return sb;
}
/**
* This method prepares the form for access to the servlets.
* It is called only once in the init method for efficiency.
*/
private StringBuffer getForm() {
StringBuffer sb = new StringBuffer();
ServletConfig config = getServletConfig();
sb.append("<form method=get action=\"" + REQUEST_DISPATCHER_SERVLET_PACKAGE + "\">");
sb.append("<table><tr><td>Please choose servlet (or other resource) to view:</td>");
sb.append("<td><select name=\"servlet\">");
for (int i = 0; i < RESOURCES.length ; i++) {
sb.append("<option value=\"" + RESOURCES[i] + "\" >" + RESOURCES_NAMES[i]);
}
sb.append("</select></td></tr><tr><td colspan=2 align=\"center\">");
sb.append("<input type=\"submit\" value=\"View Servlet/Resource\"></td></tr>");
sb.append("</table></form> ");
return sb;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?