Java by API/javax.servlet.http/HttpServletResponse
Содержание
- 1 HttpServletResponse: addCookie(Cookie arg0)
- 2 HttpServletResponse: encodeURL(String url)
- 3 Session Count
- 3.1 Here is your saved session data:
- 3.2 Here are some vital stats on your session:
- 3.3 Test URL Rewriting
- 3.4 HttpServletResponse.SC_BAD_REQUEST
- 3.5 HttpServletResponse.SC_MOVED_TEMPORARILY
- 3.6 HttpServletResponse: sendError(int arg0, String arg1)
- 3.7 HttpServletResponse: sendRedirect(String arg0)
- 3.8 HttpServletResponse: setContentType( text/html; charset=UTF-8 );
- 3.9 HttpServletResponse: setContentType("text/vnd.wap.wml")
- 3.10 HttpServletResponse: setHeader(String name, String value)
- 3.11 HttpServletResponse: setHeader(String name, String value) (2)
- 3.12 HttpServletResponse: setStatus(int status)
- 3.13 ServletResponse: setBufferSize(int arg0)
HttpServletResponse: addCookie(Cookie arg0)
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ShoppingCartViewerCookie extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); String sessionid = null; Cookie[] cookies = req.getCookies(); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { if (cookies[i].getName().equals("sessionid")) { sessionid = cookies[i].getValue(); break; } } } // If the session ID wasn"t sent, generate one. // Then be sure to send it to the client with the response. if (sessionid == null) { sessionid = generateSessionId(); Cookie c = new Cookie("sessionid", sessionid); res.addCookie(c); } out.println("<HEAD><TITLE>Current Shopping Cart Items</TITLE></HEAD>"); out.println("<BODY>"); // Cart items are associated with the session ID String[] items = getItemsFromCart(sessionid); // Print the current cart items. out.println("You currently have the following items in your cart:out.println("
"); if (items == null) { out.println("None"); } else {
- ");
for (int i = 0; i < items.length; i++) {
out.println("
- " + items[i]); } out.println("
} // Ask if they want to add more items or check out. out.println("<FORM ACTION=\"/servlet/ShoppingCart\" METHOD=POST>"); out.println("Would you like to
"); out.println("<INPUT TYPE=SUBMIT VALUE=\" Add More Items \">"); out.println("<INPUT TYPE=SUBMIT VALUE=\" Check Out \">"); out.println("</FORM>"); // Offer a help page. out.println("For help, click "); out.println("</BODY></HTML>"); } private static String generateSessionId() throws UnsupportedEncodingException { String uid = new java.rmi.server.UID().toString(); // guaranteed unique return URLEncoder.encode(uid,"UTF-8"); // encode any special chars } private static String[] getItemsFromCart(String sessionid) { return new String[]{"a","b"}; }
}
</source>
HttpServletResponse: encodeURL(String url)
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SessionSnoop extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); HttpSession session = req.getSession(); Integer count = (Integer) session.getAttribute("count"); if (count == null) count = new Integer(1); else count = new Integer(count.intValue() + 1); session.setAttribute("count", count); out.println("<HTML><HEAD><TITLE>Session Count</TITLE></HEAD>");out.println("<BODY>
Session Count
");out.println("You"ve visited this page " + count + ((count == 1) ? " time." : " times."));out.println("
"); out.println("
Here is your saved session data:
");Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); out.println(name + ": " + session.getAttribute(name) + "out.println("
"); }
Here are some vital stats on your session:
");out.println("Session id: " + session.getId() + " (keep it secret)out.println("
"); out.println("New session: " + session.isNew() + "
"); out.println("Timeout: " + session.getMaxInactiveInterval()); out.println("(" + session.getMaxInactiveInterval() / 60 + " minutes)
"); out.println("Creation time: " + session.getCreationTime()); out.println("(" + new Date(session.getCreationTime()) + ")
"); out.println("Last access time: " + session.getLastAccessedTime()); out.println("(" + new Date(session.getLastAccessedTime()) + ")
"); out.println("Requested session ID from cookie: " + req.isRequestedSessionIdFromCookie() + "
"); out.println("Requested session ID from URL: " + req.isRequestedSessionIdFromURL() + "
"); out.println("Requested session ID valid: " + req.isRequestedSessionIdValid() + "
");
Test URL Rewriting
");out.println("Click "); out.println("to test that session tracking works via URL"); out.println("rewriting even when cookies aren"t supported."); out.println("</BODY></HTML>"); }
}
</source>
HttpServletResponse.SC_BAD_REQUEST
<source lang="java">
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GoTo extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { // Determine the site where they want to go String site = req.getPathInfo(); String query = req.getQueryString(); // Handle a bad request if (site == null) { res.sendError(res.SC_BAD_REQUEST, "Extra path info required"); } // Cut off the leading "/" and append the query string // We"re assuming the path info URL is always absolute String url = site.substring(1) + (query == null ? "" : "?" + query); // Log the requested URL and redirect log(url); // or write to a special file res.sendRedirect(url); }
}
</source>
HttpServletResponse.SC_MOVED_TEMPORARILY
<source lang="java">
import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class SiteSelector extends HttpServlet {
Vector<String> sites = new Vector<String>(); Random random = new Random(); public void init() throws ServletException { sites.addElement("http://www.jexp.ru"); sites.addElement("http://www.servlets.ru"); sites.addElement("http://java.sun.ru/products/servlet"); sites.addElement("http://www.google.ru"); } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); int siteIndex = Math.abs(random.nextInt()) % sites.size(); String site = sites.elementAt(siteIndex); res.setStatus(res.SC_MOVED_TEMPORARILY); res.setHeader("Location", site); }
}
</source>
HttpServletResponse: sendError(int arg0, String arg1)
<source lang="java">
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 Buffering extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setBufferSize(8 * 1024); // 8K res.setContentType("text/html"); PrintWriter out = res.getWriter(); int size = res.getBufferSize(); // returns 8096 or greater log("The default buffer size is " + size); out.println("The client won"t see this"); res.reset(); out.println("Nor will the client see this!"); res.reset(); out.println("And this won"t be seen if sendError() is called"); if (req.getParameter("param") == null) { res.sendError(res.SC_BAD_REQUEST, "param needed"); } }
}
</source>
HttpServletResponse: sendRedirect(String arg0)
<source lang="java">
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GoTo extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { // Determine the site where they want to go String site = req.getPathInfo(); String query = req.getQueryString(); // Handle a bad request if (site == null) { res.sendError(res.SC_BAD_REQUEST, "Extra path info required"); } // Cut off the leading "/" and append the query string // We"re assuming the path info URL is always absolute String url = site.substring(1) + (query == null ? "" : "?" + query); // Log the requested URL and redirect log(url); // or write to a special file res.sendRedirect(url); }
}
</source>
HttpServletResponse: setContentType( text/html; charset=UTF-8 );
<source lang="java">
import java.io.BufferedReader; import java.io.IOException; import java.io.OutputStreamWriter; 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 UTF8 extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { try { BufferedReader reader = req.getReader(); res.setContentType("text/html; charset=UTF-8"); PrintWriter out = new PrintWriter(new OutputStreamWriter(res.getOutputStream(), "UTF8"), true); // Read and write 4K chars at a time // (Far more efficient than reading and writing a line at a time) char[] buf = new char[4 * 1024]; // 4Kchar buffer int len; while ((len = reader.read(buf, 0, buf.length)) != -1) { out.write(buf, 0, len); } out.flush(); } catch (Exception e) { getServletContext().log(e, "Problem filtering page to UTF-8"); } }
}
</source>
HttpServletResponse: setContentType("text/vnd.wap.wml")
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import java.util.Properties; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AreaCode extends HttpServlet {
private Object[][] data = new Object[][] { { "Yukon Territory", new int[] { 867 } }, }; Properties lookup = new Properties(); public void init() { for (int i = 0; i < data.length; i++) { Object[] record = data[i]; String state = (String) record[0]; int[] codes = (int[]) record[1]; for (int j = 0; j < codes.length; j++) { lookup.put(String.valueOf(codes[j]), state); } } } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/vnd.wap.wml"); PrintWriter out = res.getWriter(); String msg = null; String code = req.getParameter("code"); String region = null; if (code != null) { region = lookup.getProperty(code); } out.println("<?xml version=\"1.0\"?>"); out.println("<!DOCTYPE wml PUBLIC " + "\"-//WAPFORUM//DTD WML 1.1//EN\" " + "\"http://www.wapforum.org/DTD/wml_1.1.xml\">"); out.println("<wml>"); out.println("<card id=\"Code\" title=\"Code\">"); out.println(" <p>"); out.println(" Area code "" + code + ""out.println(" ");
"); if (region != null) { out.println(" is " + region + ".
"); } else { out.println(" is not valid.
"); }
out.println("</card>"); out.println("</wml>"); }
} /* <?xml version="1.0"?> <!DOCTYPE wml PUBLIC
"-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="AreaCode" title="Enter an Area Code"> <do type="accept" label="Enter"> <go href="servlet/AreaCode?code=$(code)"/> </do>
Enter an Area Code: <input type="text" name="code"/>
</card>
</wml>
- /
</source>
HttpServletResponse: setHeader(String name, String value)
<source lang="java">
import java.io.IOException; import java.io.PrintWriter; import java.text.DateFormat; import java.util.Date; import java.util.Locale; import java.util.TimeZone; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloSpain extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); res.setHeader("Content-Language", "es"); Locale locale = new Locale("es", ""); DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); fmt.setTimeZone(TimeZone.getDefault()); out.println("En Espa\u00f1ol:"); out.println("\u00a1Hola Mundo!"); out.println(fmt.format(new Date())); }
}
</source>
HttpServletResponse: setHeader(String name, String value) (2)
<source lang="java">
import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class SiteSelector extends HttpServlet {
Vector<String> sites = new Vector<String>(); Random random = new Random(); public void init() throws ServletException { sites.addElement("http://www.jexp.ru"); sites.addElement("http://www.servlets.ru"); sites.addElement("http://java.sun.ru/products/servlet"); sites.addElement("http://www.google.ru"); } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); int siteIndex = Math.abs(random.nextInt()) % sites.size(); String site = sites.elementAt(siteIndex); res.setStatus(res.SC_MOVED_TEMPORARILY); res.setHeader("Location", site); }
}
</source>
HttpServletResponse: setStatus(int status)
<source lang="java">
import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class SiteSelector extends HttpServlet {
Vector<String> sites = new Vector<String>(); Random random = new Random(); public void init() throws ServletException { sites.addElement("http://www.jexp.ru"); sites.addElement("http://www.servlets.ru"); sites.addElement("http://java.sun.ru/products/servlet"); sites.addElement("http://www.google.ru"); } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); int siteIndex = Math.abs(random.nextInt()) % sites.size(); String site = sites.elementAt(siteIndex); res.setStatus(res.SC_MOVED_TEMPORARILY); res.setHeader("Location", site); }
}
</source>
ServletResponse: setBufferSize(int arg0)
<source lang="java">
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 Buffering extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setBufferSize(8 * 1024); // 8K res.setContentType("text/html"); PrintWriter out = res.getWriter(); int size = res.getBufferSize(); // returns 8096 or greater log("The default buffer size is " + size); out.println("The client won"t see this"); res.reset(); out.println("Nor will the client see this!"); res.reset(); out.println("And this won"t be seen if sendError() is called"); if (req.getParameter("param") == null) { res.sendError(res.SC_BAD_REQUEST, "param needed"); } }
}
</source>