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

📄 right10_3_9_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" height="2708">             <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;JSPtest.jsp&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;</p>            <p class="pt9-black"> <span class="zhongdian">2.JSP文件:JSPtest.jsp<a name="02"></a></span><br>              <br>                &lt;%@ page contentType=&quot;text/html; charset=gb2312&quot;               %&gt;<br>                &lt;html&gt;<br>                &lt;head&gt;<br>                &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;               charset=gb2312&quot;&gt;<br>                &lt;title&gt;Your Info&lt;/title&gt;<br>                &lt;/head&gt;<br>                &lt;body&gt;<br>                &lt;h3&gt;Data You Posted&lt;/h3&gt;<br>                &lt;%<br>                  String name = request.getParameter(&quot;Name&quot;);<br>                  String sex = request.getParameter(&quot;Sex&quot;);<br>                %&gt;<br>                &lt;table&gt;<br>                &lt;tr&gt;<br>                &lt;td&gt;你的姓名:&lt;/td&gt;<br>                &lt;td&gt;&lt;%=name%&gt;&lt;/td&gt;<br>                &lt;/tr&gt;<br>                &lt;tr&gt;<br>                &lt;td&gt;你的性别:&lt;/td&gt;<br>                &lt;td&gt;&lt;% if(sex.equals(&quot;1&quot;)) out.print(&quot;男&quot;);<br>                  else out.print(&quot;女&quot;);%&gt;&lt;/td&gt;<br>                &lt;/tr&gt;<br>                &lt;/table&gt;<br>                &lt;/body&gt;<br>                &lt;/html&gt;</p>            <p class="pt9-black">  这个例子的执行结果和前面是一摸一样的。在以前Servlet分析的基础上,读者看懂这个例子应该没什么问题,这里就不对语法做过多分析了。下面我们来分析一下这个例子的几个特点。<br>              <br>                首先最明显的一点就是,使用JSP之后文件变得更短,格式更清晰了,这也是要使用JSP的一个最主要的原因,使用Servlet来打印大量的HTML语句是很费事的,而JSP的主体是HTML,嵌入的Java语句只负责动态效果,所以使用比Servlet方便的多。在下面我们会分析如何使Servlet和JSP互相配合,取长补短,获得更好的应用效果。<br>              <br>                另外一个就是JSP使用的时候不需要单独配置每一个文件,只要是扩展名为jsp,JSP引擎会自动识别。而Servlet是必须进行配置后才能投入使用的,这也是处于安全性的考虑,直接访问.class文件是不允许的,因为不能保证它是一个合法的Servlet。而JSP是没有经过编译的文本,即使是编译成了Servlet,也肯定是符合Servlet规范的,尽管可能不符合HTML语法,所以它是安全的。<br>              <br>                还有就是中文问题在这里的到了简化,本地的中文字符串不需要编码转换就能够正常在客户端显示。这里关键的一点是在头部设置页属性&lt;%@               page contentType=&quot;text/html; charset=gb2312&quot; %&gt;,其中charset=gb2312就是告诉JSP引擎本地编码是gb2312,然后JSP引擎就会自动进行转换,不需要手工转了。但是,并不是说就这么一劳永逸了,中文问题在JSP页面之间传参的时候还是存在的,读者只要掌握了编码的转换方式,应付任何中文问题就是转来转去的问题,因此读者应该从根本上理解中文问题,这才是一劳永逸的办法。<br>              <br>                这时候如果我们把静态页面的GET改成POST会是什么后果呢?我们会发现,不象HttpServlet,这个JSP还是能够正常工作的,这是因为JSP的实现在最低层是Servlet,但跟HttpServlet又是有所区别的,所以它不存在客户端请求的分类问题,它只有一个_jspService(HttpServletRequest               request, HttpServletResponse response)方法由JSP引擎实现,所以写JSP不必象Servlet那样关心那么多杂碎的事情。<br>              <br>                下面是Resin生成的临时Java文件,是上面的例子转换成Servlet之后的样子,有兴趣的读者可以读一下,如果真正读通懂了,一定会受益匪浅的。</p>            <p class="pt9-black">  <font color="339900">// Resin(tm) generated               JSP</font><br>                package _jsp;<br>                import java.io.*;<br>                import javax.servlet.*;<br>                import javax.servlet.jsp.*;<br>                import javax.servlet.jsp.tagext.*;<br>                import javax.servlet.http.*;</p>            <p class="pt9-black">  public class _JSPtest__jsp extends com.caucho.jsp.JavaPage{<br>                  <br>                  public void<br>                  _jspService(javax.servlet.http.HttpServletRequest request,<br>                      javax.servlet.http.HttpServletResponse response)<br>                   throws IOException, javax.servlet.ServletException<br>                  {<br>                   javax.servlet.jsp.PageContext pageContext = com.caucho.jsp.QJspFactory.create().getPageContext(this,               request, response, null, true, 8192, true);<br>                   javax.servlet.jsp.JspWriter out = (javax.servlet.jsp.JspWriter)               pageContext.getOut();<br>                   com.caucho.jsp.ByteWriteStream _jsp_raw_out;<br>                   _jsp_raw_out = (com.caucho.jsp.ByteWriteStream) out;<br>                   javax.servlet.ServletConfig config = getServletConfig();<br>                   javax.servlet.Servlet page = this;<br>                   javax.servlet.http.HttpSession session = pageContext.getSession();<br>                   javax.servlet.ServletContext application = pageContext.getServletContext();<br>                try {<br>                   _jsp_raw_out.write(_jsp_string0, 0, _jsp_string0.length);<br>              <br>                   String name = request.getParameter(&quot;Name&quot;);<br>                   String sex = request.getParameter(&quot;Sex&quot;);<br>                   _jsp_raw_out.write(_jsp_string1, 0, _jsp_string1.length);<br>                     out.print((name));<br>                     _jsp_raw_out.write(_jsp_string2, 0, _jsp_string2.length);<br>                      if(sex.equals(&quot;1&quot;)) out.print(&quot;男&quot;);<br>                      else out.print(&quot;女&quot;);_jsp_raw_out.write(_jsp_string3,               0, _jsp_string3.length);<br>                  } catch (Exception e) {<br>                   pageContext.handlePageException(e);<br>                  } finally {<br>                    JspFactory.getDefaultFactory().releasePageContext(pageContext);<br>                  }<br>                }</p>            <p class="pt9-black">   private java.util.ArrayList _caucho_depends;<br>                private java.util.ArrayList _caucho_cache;<br>                private com.caucho.java.LineMap _caucho_line_map;</p>            <p class="pt9-black">   public boolean _caucho_isModified()<br>                {<br>                 if (com.caucho.util.CauchoSystem.getVersionId() != -1983231406)<br>                  return true;<br>                 for (int i = 0; i &lt; _caucho_depends.size(); i++) {<br>                  com.caucho.jsp.Depend depend;<br>                  depend = (com.caucho.jsp.Depend) _caucho_depends.get(i);<br>                  if (depend.isModified())<br>                    return true;<br>                }<br>                return false;<br>                }</p>            <p class="pt9-black">   public long _caucho_lastModified()<br>                {<br>                 return 0;<br>                }</p>            <p class="pt9-black">   public com.caucho.java.LineMap _caucho_getLineMap()<br>                {<br>                 return _caucho_line_map;<br>                }</p>            <p class="pt9-black">   public void _caucho_init(HttpServletRequest               req, HttpServletResponse res)<br>                {<br>                 res.setContentType(&quot;text/html; charset=GB2312&quot;);<br>                }</p>            <p class="pt9-black">   public void init(ServletConfig config,<br>                    com.caucho.java.LineMap lineMap,<br>                    com.caucho.vfs.Path pwd)<br>                throws ServletException<br>                {<br>                 super.init(config);<br>                 _caucho_line_map = new com.caucho.java.LineMap(&quot;_JSPtest__jsp.java&quot;,               &quot;/JSPtest.jsp&quot;);<br>                 _caucho_line_map.add(1, 1);<br>                 _caucho_line_map.add(1, 28);<br>                 _caucho_line_map.add(9, 29);<br>                 _caucho_line_map.add(16, 33);<br>                 _caucho_line_map.add(20, 35);<br>                 _caucho_depends = new java.util.ArrayList();<br>                 _caucho_depends.add(new com.caucho.jsp.Depend(pwd.lookup(&quot;/D:/gzf@WeiHai/Resin/doc/JSPtest.jsp&quot;),               <br>                 996991110000L));<br>                }</p>            <p><span class="pt9-black">   private static byte []_jsp_string0;<br>                private static byte []_jsp_string1;<br>                private static byte []_jsp_string2;<br>                private static byte []_jsp_string3;<br>                static {<br>                  try {<br>                    _jsp_string0 = &quot;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;meta               http-equiv=\&quot;Content-Type\&quot; content=\&quot;text/html;    charset=gb2312\&quot;&gt;\r\n&lt;title&gt;Your               Info&lt;/title&gt;\r\n&lt;/head&gt;\r\n&lt;body&gt;\r\n&lt;h3&gt;Data               You Posted&lt;/h3&gt;\r\n&quot;.getBytes(&quot;GB2312&quot;);<br>                    _jsp_string1 = &quot;\r\n&lt;table&gt;\r\n&lt;tr&gt;\r\n&lt;td&gt;你的姓名:&lt;/td&gt;\r\n&lt;td&gt;&quot;.getBytes(&quot;GB2312&quot;);<br>                    _jsp_string2 = &quot;&lt;/td&gt;\r\n&lt;/tr&gt;\r\n&lt;tr&gt;\r\n&lt;td&gt;你的性别:&lt;/td&gt;\r\n&lt;td&gt;&quot;.getBytes(&quot;GB2312&quot;);<br>                    _jsp_string3 = &quot;&lt;/td&gt;\r\n&lt;/tr&gt;\r\n&lt;/table&gt;\r\n&lt;/body&gt;\r\n&lt;/html&gt;\r\n&quot;.getBytes(&quot;GB2312&quot;);<br>                  } catch (UnsupportedEncodingException e) {<br>                   e.printStackTrace();<br>                  }<br>                }<br>              }<br>              <br>                到这里为止,JSP这部分已经讲解完毕,读者对JSP应该有了一个概念上的认识,应该有能力书写简单的JSP文件。如果对某些概念还不是很清楚,也不必着急,多多练习就会有更深的体会。下面我们会对JSP和Servlet的关系做进一步的讨论,希望能帮助读者更好的理解Servlet和JSP。</span></p>            </td>        </tr>      </table>    </td>  </tr></table></body></html>

⌨️ 快捷键说明

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