Java by API/javax.servlet.http/HttpServletResponse

Материал из Java эксперт
Перейти к: навигация, поиск

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:
"); if (items == null) { out.println("None"); } else {
out.println("
    "); 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("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() + "
");
out.println("

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 + ""
"); if (region != null) { out.println(" is " + region + ".
"); } else { out.println(" is not valid.
"); }
out.println("

");
   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>