⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 right10_2_2.htm

📁 清华大学JAVA教程
💻 HTM
字号:
<html><head><title>JAVA编程语言</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><link rel="stylesheet" href="../../../css/text.css" type="text/css"></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">  <tr>     <td valign="top">       <table width="90%" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#FFFFFF">        <tr>          <td valign="top">             <p class="pt9-black">  <span class="zhongdian">1. 静态HTML文本:ourform.html<a name="01"></a><br>              </span><br>                &lt;html&gt;<br>                &lt;head&gt;<br>                &lt;title&gt;Our Form&lt;/title&gt;<br>                &lt;/head&gt;<br>                &lt;body&gt;<br>                &lt;h3&gt;Our Form&lt;/h3&gt;<br>                &lt;form name=&quot;ourform&quot; method=&quot;GET&quot; action=&quot;FormDemo&quot;&gt;<br>                &lt;table&gt;<br>                  &lt;tr&gt;<br>                    &lt;td&gt;姓名:&lt;/td&gt;<br>                    &lt;td&gt;&lt;input type=text name=&quot;Name&quot;&gt;&lt;/td&gt;<br>                  &lt;/tr&gt;<br>                  &lt;tr&gt;<br>                    &lt;td&gt;性别:&lt;/td&gt;<br>                    &lt;td&gt;&lt;select name=&quot;Sex&quot;&gt;<br>                      &lt;option value=&quot;1&quot; selected&gt;男&lt;/option&gt;<br>                      &lt;option value=&quot;2&quot;&gt;女&lt;/option&gt;<br>                    &lt;/select&gt;&lt;/td&gt;<br>                  &lt;/tr&gt;<br>                &lt;/table&gt;<br>                &lt;/form&gt;<br>                &lt;/body&gt;<br>                &lt;/html&gt;<br>              <br>                在IE下显示效果如图所示:<br>              <img src="../../../images/tu/ch10/10_2_2.gif" width="440" height="140">               <br>              <br>                <font color="000099">不熟悉HTML的读者可以参考有关HTML的书籍,尤其要注意的form的两个属性method和action</font><br>              <br>               <span class="zhongdian">2. FormDemo.java<a name="02"></a></span><br>              <br>                <font color="339900">//FormDemo.java</font><br>                import java.io.*;<br>                import javax.servlet.*;<br>                import javax.servlet.http.*;</p>            <p class="pt9-black">  public class FormDemo extends HttpServlet {<br>                 public void doGet(HttpServletRequest request, HttpServletResponse               response)<br>                  throws IOException, ServletException <font color="339900">//处理GET请求的方法</font><br>                 {<br>                  response.setContentType(&quot;text/html&quot;); <br>                  <font color="339900">//先设置Header,在这里只设置ContentType一项</font><br>                  PrintWriter out = response.getWriter(); <br>                  <font color="339900">//得到文本输出Writer</font><br>              <br>                  String name = request.getParameter(&quot;Name&quot;); <br>                  <font color="339900">//得到表单值Name</font><br>                  String sex = request.getParameter(&quot;Sex&quot;); <br>                  <font color="339900">//得到表单值Sex</font><br>                  name = new String(name.getBytes(),&quot;ISO-8859-1&quot;); <br>                  <font color="339900">//转换到正确的编码</font><br>              <br>                  <font color="339900">//打印得到的表单值</font><br>                  out.println(&quot;&lt;html&gt;&quot;);<br>                  out.println(&quot;&lt;head&gt;&quot;);<br>                  out.println(&quot;&lt;meta http-equiv=\&quot;Content-Type\&quot;               content=\&quot;text/html; charset=gb2312\&quot;&gt;&quot;);<br>                  out.println(&quot;&lt;title&gt;Your Info&lt;/title&gt;&quot;);<br>                  out.println(&quot;&lt;/head&gt;&quot;);<br>                  out.println(&quot;&lt;body&gt;&quot;);<br>                  out.println(&quot;&lt;h3&gt;Data You Posted&lt;/h3&gt;&quot;);<br>                  out.println(&quot;&lt;table&gt;&quot;);<br>                  out.println(&quot;&lt;tr&gt;&quot;);<br>                  out.println(new String(new String(&quot;&lt;td&gt;你的姓名:&lt;/td&gt;&quot;).getBytes(),&quot;ISO-8859-1&quot;));<br>                  out.println(&quot;&lt;td&gt;&quot;+name+&quot;&lt;/td&gt;&quot;);<br>                  out.println(&quot;&lt;/tr&gt;&quot;);<br>                  out.println(&quot;&lt;tr&gt;&quot;);<br>                  out.println(new String(new String(&quot;&lt;td&gt;你的性别:&lt;/td&gt;&quot;).getBytes(),&quot;ISO-8859-1&quot;));<br>                  out.print(&quot;&lt;td&gt;&quot;);<br>                  if(sex.equals(&quot;1&quot;)) out.println(new String(new String(&quot;男&lt;/td&gt;&quot;).getBytes(),&quot;ISO-8859-1&quot;));<br>                  else out.println(new String(new String(&quot;女&lt;/td&gt;&quot;).getBytes(),&quot;ISO-8859-1&quot;));<br>                  out.println(&quot;&lt;/tr&gt;&quot;);<br>                  out.println(&quot;&lt;/table&gt;&quot;);<br>                  out.println(&quot;&lt;/body&gt;&quot;);<br>                  out.println(&quot;&lt;/html&gt;&quot;);<br>                  out.close(); <font color="339900">//关闭Writer</font><br>                 }<br>                }<br>              <br>                这个Servlet也是比较简单的,首先从提交的表单中得到需要的两个值,然后用HTML向客户端打印这些信息。<br>                <br>                值得注意的是,在这个例子中,所有出现打印中文的地方,我们都使用了字符编码的转换来正确打印中文。前面的例子我们都没有涉及中文,在这里我们有必要提一下Servlet的中文问题。我们知道在同一台机器上,所有的编码方式都是一样的,一般中文平台是gb2312,英文平台是ISO-8859-1,但是网络上的两台机器并不能保证他们的编码方式都是一样的,这时候就有可能出现乱码的问题。在进行HTTP网络传输的时候,统一采用的编码方式是ISO-8859-1,这时候如果还是按照本地编码来传输就会出现问题,这也是Servlet在实现网络传输的时候一个不完美的地方,它不会自动进行本地编码到ISO-8859-1的转换,所以直接打印的话就会出现乱码。原理上讲任何出现打印字符串的地方,都是需要进行编码转换的,但是西文字符在不同字符集下对应相同的编码,以在打印西文字符的时候就不需要转换了。在Servlet后继的规范中可能会改变这种麻烦的状况。不同的是,从网络提交的表单数据,Servlet是自动把它转换成本地编码的,所以程序中得到的name字符串变量是gb2312编码的,同样需要进行转换后才能在客户端正确打印。<br>              <br>                字符编码转换常用的方法是<br>                String native_encoded = &quot;中文字符串&quot;; <br>                          <font color="339900">//本地编码的字符串</font><br>                Byte[] byte_array = native_encoded.getBytes(); <br>                          <font color="339900">//得到本地编码的字节数组</font><br>                String net_encoded = new String(native_encoded, &quot;ISO-8859-1&quot;);	              <br>                          <font color="339900">//生成ISO-8859-1编码的字符串</font><br>              <br>                这样得到的net_encoded字符串就可以用来向客户端打印而不出错了。<br>                还有一点要注意的是,为了在客户端正常显示中文,必须在HTML头部设置charset=gb2312。<br>              <br>                当我们按下提交按钮后,我们得到的结果如下:<br>              <img src="../../../images/tu/ch10/10_2_2_1.gif" width="440" height="167">               <br>              <br>                如果我们把ourform.html中的method由GET改成POST,会有什么样的结果呢?由于我们没有重写doPost方法,所以在Resin下,我们得到如下的结果:<br>              <img src="../../../images/tu/ch10/10_2_2_2.gif" width="440" height="161">               <br>              <br>                <font color="000099">有兴趣的读者可以修改FormDemo类来响应POST方法。<br>              <br>                通过以上的几个例子,读者对Servlet如何响应HTTP请求,并从提交的表单中获取数据应该有了一个大概的了解,但是要构建Web应用程序,光有这几点是不够的,下面我们要讲解的Servlet的会话和生命周期对于构建Web应用是及其重要的两个特性。</font></p>            </td>        </tr>      </table>    </td>  </tr></table></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -