欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Tomcat與Java Web開(kāi)發(fā)技術(shù)詳解連載之二
作者:孫衛琴 發(fā)文時(shí)間:2005.06.06
2.2.4 部署HTML文件
在helloapp目錄下加入index.htm文件,這個(gè)文件僅僅用來(lái)顯示一串帶鏈接的字符"Welcome to HelloApp", 它鏈接到login.jsp文件。以下是index.htm文件的代碼:
<html> <head> <title>helloapp</title> </head> <body > <p><font size="7">Welcome to HelloApp</font></p> <p><a href="login.jsp language=English">English version </a> </body> </html>
訪(fǎng)問(wèn)index.htm的URL為 http://localhost:8080/helloapp/index.htm,該頁(yè)面的顯示結果如圖2-3所示。
圖2-3 index.htm
2.2.5 部署JSP
接下來(lái),創(chuàng )建兩個(gè)JSP文件,其中一個(gè)是login.jsp(參見(jiàn)例程2-1),它顯示登錄頁(yè)面,要求輸入用戶(hù)名和口令,這個(gè)頁(yè)面鏈接到一個(gè)名為DispatcherServlet的Servlet。 還有一個(gè)JSP文件是hello.jsp(參見(jiàn)例程2-2),這個(gè)JSP被DispatcherServlet調用,顯示Hello頁(yè)面。JSP的語(yǔ)法將在第4章詳細討論,本節側重于介紹JSP的發(fā)布過(guò)程。這兩個(gè)JSP文件都應放在helloapp目錄下。
例程2-1 login.jsp
<html> <head> <title>helloapp</title> </head> <body > <br> <form name="loginForm" method="post" action="dispatcher"> <table> <tr> <td><div align="right">User Name:</div></td> <td> <input type="text" name="username"></td> </tr> <tr> <td><div align="right">Password:</div></td> <td><input type="password" name="password"></td> </tr> <tr> <td></td> <td><input type="Submit" name="Submit" value="Submit"></td> </tr> </table> </form> </body> </html>
例程2-2 hello.jsp
<html> <head> <title>helloapp</title> </head> <body> <b>Welcome: <%= request.getAttribute("USER") %></b> </body> </html>
login.jsp中生成了一個(gè)loginForm表單,它有兩個(gè)字段:username和passoword。訪(fǎng)問(wèn)login.jsp的URL為http://localhost:8080/helloapp/login.jsp,它生成的頁(yè)面如圖2-4所示。
圖2-4 login.jsp網(wǎng)頁(yè)
2.2.6 部署Servlet
下面,創(chuàng )建一個(gè)Servlet文件,名為DispatcherServlet.java(參見(jiàn)例程2-3),它調用HttpServletRequest對象的getParameter方法讀取客戶(hù)提交的loginForm表單數據,獲取用戶(hù)名和口令,然后將用戶(hù)名和口令保存在HttpServletRequest對象的屬性中,再把請求轉發(fā)給hello.jsp。
例程2-3 DispatcherServlet.java
package mypack; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class DispatcherServlet extends HttpServlet { private String target = "/hello.jsp"; public void init(ServletConfig config) throws ServletException { super.init(config); } public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // If it is a get request forward to doPost() doPost(request, response); } public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Get the username from the request String username = request.getParameter("username"); // Get the password from the request String password = request.getParameter("password"); // Add the user to the request request.setAttribute ("USER", username); request.setAttribute ("PASSWORD", password); // Forward the request to the target named ServletContext context = getServletContext(); System.out.println ("Redirecting to " + target); RequestDispatcher dispatcher = context.getRequestDispatcher(target); dispatcher.forward(request, response); } public void destroy() { } }
編譯并發(fā)布DispatcherServlet的步驟如下。
(1)編譯DispatcherServlet.java。編譯時(shí),需要將Java Servlet API的JAR文件(servlet-api.jar)設置為classpath,servlet-api.jar文件位于/common/lib目錄下。
(2)把編譯出來(lái)的class文件拷貝到/helloapp/WEB_INF/classes目錄下。DispatcherServlet.class的存放位置為/helloapp/WEB_INF/classes/mypack/DispatcherServlet。
在本例中,聲明將DispatcherServlet類(lèi)放在包mypack下,所以應該在/WEB_INF/classes目錄下先創(chuàng )建子目錄/mypack,然后在子目錄下放DispatcherServlet.class文件。
(3)接下來(lái)在web.xml中為DispatcherServlet類(lèi)加上和元素。
<web-app> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>mypack.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/dispatcher</url-pattern> </servlet-mapping> </web-app>
元素的屬性描述參見(jiàn)表2-4。
在本例配置中,沒(méi)有為DispatcherServlet設置load-on-startup屬性,因此當Web應用啟動(dòng)時(shí),Servlet容器不會(huì )加載這個(gè)Servlet,只有當Web客戶(hù)首次訪(fǎng)問(wèn)這個(gè)Servlet時(shí)才加載它。
表2-4 元素的屬性
屬 性 說(shuō) 明
servlet-name 定義Servlet的名字
servlet-class 指定實(shí)現這個(gè)Servlet的類(lèi)
init-param 定義Servlet的初始化參數 (包括參數名和參數值),一個(gè)元素中可以有多個(gè)
load-on-startup 指定當Web應用啟動(dòng)時(shí), 裝載Servlet的次序。 當這個(gè)值為正數或零, Servlet容器先加載數值小的Servlet, 再依次加載其他數值大的Servlet。 如果這個(gè)值為負數或者沒(méi)有設定, 那么Servlet容器將在Web客戶(hù)首次 訪(fǎng)問(wèn)這個(gè)Servlet時(shí)加載它
元素用來(lái)指定和映射。是指訪(fǎng)問(wèn)Servlet的相對URL路徑。
根據以上屬性,訪(fǎng)問(wèn)DispatcherServlet的URL為http://localhost:8080/ helloapp/dispatcher,DispatcherServlet接受到客戶(hù)請求后,再把請求轉發(fā)給hello.jsp,hello.jsp生成的頁(yè)面如圖2-5所示。
圖2-5 DispatcherServlet調用hello.jsp生成的網(wǎng)頁(yè)
2.2.7 部署JSP Tag Library
最后,在Web應用中加入Tag Library(標簽庫)。Tag Library向用戶(hù)提供了自定義JSP標簽的功能。我們將定義一個(gè)名為mytaglib的標簽庫,它包含了一個(gè)簡(jiǎn)單的hello標簽,這個(gè)標簽能夠將JSP頁(yè)面中所有的解析為字符串"hello"。以下是創(chuàng )建和發(fā)布mytaglib標簽庫的步驟。
(1)編寫(xiě)用于處理hello標簽的類(lèi)HelloTag.java,例程2-4列出了HelloTag.java的源代碼。
例程2-4 HelloTag.java
package mypack; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspTagException; import javax.servlet.jsp.tagext.TagSupport; public class HelloTag extends TagSupport { public void HelloTag() { } // Method called when the closing hello tag is encountered public int doEndTag() throws JspException { try { // We use the pageContext to get a Writer // We then print the text string Hello pageContext.getOut().print("Hello"); } catch (Exception e) { throw new JspTagException(e.getMessage()); } // We want to return SKIP_BODY because this Tag does not support // a Tag Body return SKIP_BODY; } public void release() { // Call the parent‘s release to release any resources // used by the parent tag. // This is just good practice for when you start creating // hierarchies of tags. super.release(); } }
編譯HelloTag.java時(shí),需要將jsp-api.jar文件添加到classpath中,這個(gè)JAR文件位于/common/lib目錄下。編譯生成的HelloTag.class存放位置為/WEB-INF/classes/mypack/HelloTag.class。
(2)創(chuàng )建Tag Library的描述文件mytaglib.tld文件,在這個(gè)文件中定義mytaglib標簽庫和hello標簽。這個(gè)文件存放位置為/WEB-INF/mytaglib.tld。例程2-5列出了mytaglib.tld的源代碼。
例程2-5 mytaglib.tld
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1 //EN" "http://java.sun.com/j2ee/dtds /web-jsptaglibrary_1_1.dtd"> <!-- a tag library descriptor --> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>mytaglib</shortname> <uri>/mytaglib</uri> <tag> <name>hello</name> <tagclass>mypack.HelloTag</tagclass> <bodycontent>empty</bodycontent> <info>Just Says Hello</info> </tag> </taglib>
(3)在web.xml文件中加入元素,例程2-6列出了修改后的web.xml文件。
例程2-6 加入元素的web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC ‘-//Sun Microsystems, Inc. //DTD Web Application 2.3//EN‘ ‘http://java.sun.com/j2ee /dtds/web-app_2_3.dtd‘> <web-app> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>mypack.DispatcherServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/dispatcher</url-pattern> </servlet-mapping> <taglib> <taglib-uri>/mytaglib</taglib-uri> <taglib-location>/WEB-INF/mytaglib.tld </taglib-location> </taglib> </web-app>
中包含兩個(gè)屬性和。其中指定Tag Library標示符;指定Tag Library的描述文件(TLD)的位置。
(4)在hello.jsp文件中加入hello標簽。首先,在hello.jsp中加入引用mytaglib的taglib指令:
<%@ taglib uri="/mytaglib" prefix="mm" %>
以上taglib指令中,prefix用來(lái)指定引用mytaglib標簽庫時(shí)的前綴,修改后的hello.jsp文件參見(jiàn)例程2-7。
例程2-7 加入Tag標簽的hello.jsp
<%@ taglib uri="/mytaglib" prefix="mm" %> <html> <head> <title>helloapp</title> </head> <b><mm:hello/> : <%= request.getAttribute("USER") %></b> </body> </html>
hello.jsp修改后,再依次訪(fǎng)問(wèn)index.htm→login.jsp→DispatcherServlet→hello.jsp,最后生成的網(wǎng)頁(yè)如圖2-6所示。
圖2-6 帶hello標簽的hello.jsp生成的網(wǎng)頁(yè)
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
學(xué)習SpringMVC系列教程(一)Spring MVC入門(mén)
jsp 自定義標簽 二
JSP 自定義標簽
JavaWeb應用簡(jiǎn)介
第一個(gè)Struts 應用:helloapp
Spring MVC版hello_world親測可用版(含詳細步驟)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久