<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FServlet%2FResponse</id>
		<title>Java Tutorial/Servlet/Response - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FServlet%2FResponse"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Servlet/Response&amp;action=history"/>
		<updated>2026-04-08T17:46:08Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Servlet/Response&amp;diff=4946&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Servlet/Response&amp;diff=4946&amp;oldid=prev"/>
				<updated>2010-06-01T05:07:05Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:07, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Servlet/Response&amp;diff=4945&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Servlet/Response&amp;diff=4945&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Get Servlet OutputStream from Servlet Response ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import javax.servlet.*;&lt;br /&gt;
import javax.servlet.http.*;&lt;br /&gt;
public class MyServlet extends HttpServlet {&lt;br /&gt;
   &lt;br /&gt;
  public void doGet (HttpServletRequest req, HttpServletResponse res) throws IOException&lt;br /&gt;
  {&lt;br /&gt;
    ServletOutputStream out = res.getOutputStream();&lt;br /&gt;
    res.setContentType(&amp;quot;text/html&amp;quot;);&lt;br /&gt;
    out.println(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Basic Servlet&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&amp;quot;);&lt;br /&gt;
    out.println(&amp;quot;&amp;lt;body&amp;gt;Hello World&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  HTTP Response ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
//Revised from jcommon web;&lt;br /&gt;
&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import java.net.*;&lt;br /&gt;
import java.util.*;&lt;br /&gt;
&lt;br /&gt;
public class HTTPResponse {&lt;br /&gt;
  public static final HashMap&amp;lt;String,String&amp;gt; MIME_TYPES = new HashMap&amp;lt;String,String&amp;gt;();&lt;br /&gt;
  static {&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;gif&amp;quot;, &amp;quot;image/gif&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;jpeg&amp;quot;, &amp;quot;image/jpeg&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;jpg&amp;quot;, &amp;quot;image/jpeg&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;jpe&amp;quot;, &amp;quot;image/jpeg&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;bmp&amp;quot;, &amp;quot;image/bmp&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;png&amp;quot;, &amp;quot;image/png&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;tif&amp;quot;, &amp;quot;image/tiff&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;tiff&amp;quot;, &amp;quot;image/tiff&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;jnlp&amp;quot;, &amp;quot;application/x-java-jnlp-file&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;js&amp;quot;, &amp;quot;application/x-javascript&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;doc&amp;quot;, &amp;quot;application/msword&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;bin&amp;quot;, &amp;quot;application/octet-stream&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;exe&amp;quot;, &amp;quot;application/octet-stream&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;pdf&amp;quot;, &amp;quot;application/pdf&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;ai&amp;quot;, &amp;quot;application/postscript&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;eps&amp;quot;, &amp;quot;application/postscript&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;ps&amp;quot;, &amp;quot;application/postscript&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;rtf&amp;quot;, &amp;quot;application/rtf&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;class&amp;quot;, &amp;quot;application/x-java-vm&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;ser&amp;quot;, &amp;quot;application/x-java-serialized-object&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;jar&amp;quot;, &amp;quot;application/x-java-archive&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;sh&amp;quot;, &amp;quot;application/x-sh&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;tar&amp;quot;, &amp;quot;application/x-tar&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;zip&amp;quot;, &amp;quot;application/zip&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;ua&amp;quot;, &amp;quot;audio/basic&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;wav&amp;quot;, &amp;quot;audio/x-wav&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;mid&amp;quot;, &amp;quot;audio/x-midi&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;htm&amp;quot;, &amp;quot;text/html&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;html&amp;quot;, &amp;quot;text/html&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;css&amp;quot;, &amp;quot;text/css&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;txt&amp;quot;, &amp;quot;text/plain&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;mpeg&amp;quot;, &amp;quot;video/mpeg&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;mpg&amp;quot;, &amp;quot;video/mpeg&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;mpe&amp;quot;, &amp;quot;video/mpeg&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;qt&amp;quot;, &amp;quot;video/quicktime&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;mov&amp;quot;, &amp;quot;video/quicktime&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;avi&amp;quot;, &amp;quot;video/avi&amp;quot;);&lt;br /&gt;
    MIME_TYPES.put(&amp;quot;movie&amp;quot;, &amp;quot;video/x-sgi-movie&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static String SERVER = &amp;quot;JavaWebServer/1.0&amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  public static final int OK = 200;&lt;br /&gt;
  &lt;br /&gt;
  private Socket s;&lt;br /&gt;
  private int mode;&lt;br /&gt;
  private HashMap&amp;lt;String,String&amp;gt; headers;&lt;br /&gt;
  private HashSet&amp;lt;String&amp;gt; keys;&lt;br /&gt;
  &lt;br /&gt;
  public HTTPResponse(Socket s, int mode) throws IOException {&lt;br /&gt;
    this.s = s;&lt;br /&gt;
    this.mode = mode;&lt;br /&gt;
    &lt;br /&gt;
    headers = new HashMap&amp;lt;String,String&amp;gt;();&lt;br /&gt;
    keys = new HashSet&amp;lt;String&amp;gt;();&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public void addHeader(String header, String value) {&lt;br /&gt;
    keys.add(header.toLowerCase());&lt;br /&gt;
    headers.put(header, value);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private void writeHeaders() throws IOException {&lt;br /&gt;
    if (mode == OK) {&lt;br /&gt;
      writeLine(&amp;quot;HTTP/1.1 200 OK&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    if (!keys.contains(&amp;quot;server&amp;quot;)) {&lt;br /&gt;
      headers.put(&amp;quot;Server&amp;quot;, SERVER);&lt;br /&gt;
    }&lt;br /&gt;
    if (!keys.contains(&amp;quot;date&amp;quot;)) {&lt;br /&gt;
      headers.put(&amp;quot;Date&amp;quot;, String.format(&amp;quot;%EEE%, %d% %MMM% %yyyy% %HH%:%mm%:%ss% %Z%&amp;quot;,new GregorianCalendar()));&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    Iterator&amp;lt;String&amp;gt; iterator = headers.keySet().iterator();&lt;br /&gt;
    String key;&lt;br /&gt;
    String value;&lt;br /&gt;
    while (iterator.hasNext()) {&lt;br /&gt;
      key = iterator.next();&lt;br /&gt;
      value = headers.get(key);&lt;br /&gt;
      writeLine(key + &amp;quot;: &amp;quot; + value);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    writeLine(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  private void writeLine(String string) throws IOException {&lt;br /&gt;
    s.getOutputStream().write((string + &amp;quot;\r\n&amp;quot;).getBytes());&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public void writeFile(File f) throws IOException {&lt;br /&gt;
    if ((!keys.contains(&amp;quot;content-type&amp;quot;)) &amp;amp;&amp;amp; (f.getName().indexOf(&amp;quot;.&amp;quot;) &amp;gt; -1)) {&lt;br /&gt;
      String ext = f.getName().substring(f.getName().lastIndexOf(&amp;quot;.&amp;quot;) + 1).toLowerCase();&lt;br /&gt;
      if (MIME_TYPES.containsKey(ext)) {&lt;br /&gt;
        headers.put(&amp;quot;Content-Type&amp;quot;, MIME_TYPES.get(ext));&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (!keys.contains(&amp;quot;content-length&amp;quot;)) {&lt;br /&gt;
      headers.put(&amp;quot;Content-Length&amp;quot;, String.valueOf(f.length()));&lt;br /&gt;
    }&lt;br /&gt;
    writeHeaders();&lt;br /&gt;
    &lt;br /&gt;
    FileInputStream fis = new FileInputStream(f);&lt;br /&gt;
    byte[] b = new byte[512];&lt;br /&gt;
    int len;&lt;br /&gt;
    while ((len = fis.read(b)) &amp;gt; -1) {&lt;br /&gt;
      s.getOutputStream().write(b, 0, len);&lt;br /&gt;
    }&lt;br /&gt;
    s.getOutputStream().flush();&lt;br /&gt;
    s.close();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Servlet OutputStream ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import javax.servlet.*;&lt;br /&gt;
import javax.servlet.http.*;&lt;br /&gt;
import java.net.*;&lt;br /&gt;
public class MyServlet extends HttpServlet {&lt;br /&gt;
  &lt;br /&gt;
  public void doGet(HttpServletRequest req, HttpServletResponse res)&lt;br /&gt;
                               throws ServletException, IOException {&lt;br /&gt;
    ServletOutputStream out = res.getOutputStream();&lt;br /&gt;
    res.setContentType(&amp;quot;text/plain&amp;quot;); &lt;br /&gt;
    String file = req.getPathInfo();&lt;br /&gt;
    if (file == null) {&lt;br /&gt;
      out.println(&amp;quot;Extra path info was null; should be a resource to view&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    URL url = getServletContext().getResource(file);&lt;br /&gt;
    if (url == null) {&lt;br /&gt;
      out.println(&amp;quot;Resource &amp;quot; + file + &amp;quot; not found&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    URLConnection con = null;&lt;br /&gt;
    try {&lt;br /&gt;
      con = url.openConnection();&lt;br /&gt;
      con.connect();&lt;br /&gt;
    }&lt;br /&gt;
    catch (IOException e) {&lt;br /&gt;
      out.println(&amp;quot;Resource &amp;quot; + file + &amp;quot; could not be read: &amp;quot; + e.getMessage());&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Servlet Response Send Error ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import javax.servlet.*;&lt;br /&gt;
import javax.servlet.http.*;&lt;br /&gt;
import java.net.*;&lt;br /&gt;
public class MyServlet extends HttpServlet {&lt;br /&gt;
  &lt;br /&gt;
  public void doGet(HttpServletRequest req, HttpServletResponse res)&lt;br /&gt;
                               throws ServletException, IOException {&lt;br /&gt;
    res.setBufferSize(8 * 1024); // 8K buffer&lt;br /&gt;
    res.setContentType(&amp;quot;text/html&amp;quot;);&lt;br /&gt;
    PrintWriter out = res.getWriter();&lt;br /&gt;
    int size = res.getBufferSize(); // returns 8096 or greater&lt;br /&gt;
    // Record the default size, in the log&lt;br /&gt;
    log(&amp;quot;The default buffer size is &amp;quot; + size);&lt;br /&gt;
    out.println(&amp;quot;The client won&amp;quot;t see this&amp;quot;);&lt;br /&gt;
    res.reset();&lt;br /&gt;
    out.println(&amp;quot;And this won&amp;quot;t be seen if sendError() is called&amp;quot;);&lt;br /&gt;
    if (req.getParameter(&amp;quot;important_parameter&amp;quot;) == null) {&lt;br /&gt;
      res.sendError(res.SC_BAD_REQUEST, &amp;quot;important_parameter needed&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Servlet Response Send Redirect ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import javax.servlet.*;&lt;br /&gt;
import javax.servlet.http.*;&lt;br /&gt;
import java.util.*;&lt;br /&gt;
public class MyServlet extends HttpServlet {&lt;br /&gt;
   &lt;br /&gt;
 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException {&lt;br /&gt;
        &lt;br /&gt;
       //redirect the user depending on the value of the &amp;quot;go&amp;quot; param&lt;br /&gt;
        String destination = getInitParameter(&amp;quot;go&amp;quot;);&lt;br /&gt;
        String contextPath = request.getContextPath();&lt;br /&gt;
        &lt;br /&gt;
         if(destination == null || destination.equals(&amp;quot;&amp;quot;))&lt;br /&gt;
            throw new ServletException(&lt;br /&gt;
             &amp;quot;Missing or invalid &amp;quot;go&amp;quot; parameter in &amp;quot; +&lt;br /&gt;
               getClass().getName());&lt;br /&gt;
        &lt;br /&gt;
        if(destination.equals(&amp;quot;weather&amp;quot;))&lt;br /&gt;
        //ensure URL rewriting&lt;br /&gt;
            response.sendRedirect(response.encodeRedirectURL(contextPath + &amp;quot;/weather&amp;quot;) );&lt;br /&gt;
        &lt;br /&gt;
         if(destination.equals(&amp;quot;maps&amp;quot;))&lt;br /&gt;
        //ensure URL rewriting&lt;br /&gt;
            response.sendRedirect(response.encodeRedirectURL(contextPath + &amp;quot;/maps&amp;quot;) );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>