JSP是運行在web服務(wù)器下的,通常的jsp運行環(huán)境是tomcat,這里也是記錄了jsp在tomcat的存在方式和基本環(huán)境的搭建。
1、web服務(wù)器中的jsp目錄結(jié)構(gòu):
tomcat服務(wù)器下/webapps目錄是固定用來存放jsp頁面文件的
tomcat服務(wù)器下/lib目錄存放servlet等組件必須的類庫文件;還有像數(shù)據(jù)庫驅(qū)動等
tomcat服務(wù)器下/conf目錄下存放web服務(wù)器的配置文件,如:server.xml配置端口、默認主頁等
tomcat服務(wù)器下/bin目錄是啟動、停止web服務(wù)器的
tomcat服務(wù)器下/logs目錄存放web服務(wù)器運行過程中的日志信息,如:啟動日志,服務(wù)器錯誤日志
tomcat服務(wù)器下/work目錄下是用來存放JSP頁面中間文件的
tomcat服務(wù)器下/temp目錄是web服務(wù)器運行時用來存放的臨時文件
上述目錄,通常我們常用到前4個,最常用到的就是webapps目錄,因為程序文件都在這里面
2、web服務(wù)器tomcat安裝與啟動:
去java官網(wǎng)下載j2ee的jdk安裝包,默認安裝后配置classpath,path路徑
去官方網(wǎng)站下載tomcat最新版,默認安裝或者直接解壓。完成后進入安裝目錄的/bin目錄下,啟動startup.bat
瀏覽器測試tomcat,http://localhost:8080,如果有默認的tomcat頁面顯示,則安裝成功
3、搭建自定義的jsp目錄:
/webapps下新建一個jsp目錄,如:mytest目錄;在mytest目錄下新建WEB-INF目錄,WEB-INF目錄新建web.xml文件,在WEB-INF目錄下新建classes、lib等目錄
至此一個初始的jsp目錄結(jié)構(gòu)如下:
/webapps/mytest/ ##存放jsp文件,tomcat在運行時有請時加載
/webapps/mytest/WEB-INF/ ##存放mytest目錄的配置信息
/webapps/mytest/WEB-INF/classes/ ##存放mytest目錄下用到的servlet、javabean等class文件,tomcat在啟動時加載
/webapps/mytest/WEB-INF/web.xml ##配置該jsp目錄如何被web服務(wù)器使用,tomcat在啟動時加載
/webapps/mytest/WEB-INF/lib/ ##存放用到的jar類庫文件
4、測試第一個jsp頁面程序:
/webapps/mytest/下新建一個test.jsp文件,內(nèi)容如下:
- <html><body><center>
- Now time is: <%=new java.util.Date()%>
- </center></body></html>
配置/webapps/mytest/WEB-INF/web.xml文件,修改內(nèi)容如下:
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app xmlns="http://java./xml/ns/javaee"
- xmlns:xsi="http://www./2001/XMLSchema-instance"
- xsi:schemaLocation="http://java./xml/ns/javaee
- http://java./xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
-
- <display-name>My Web Application</display-name>
- <description>
- A application for test.
- </description>
-
- </web-app>
重啟tomcat服務(wù)器,瀏覽器輸入http://localhost:8080/mytest/test.jsp,如果出現(xiàn)正確的時間信息,則測試成功
JSP基礎(chǔ)環(huán)境搭建完成后,還要測試servlet、javabean的工作是否正常,主要就是配置如下:
servlet測試
1、編寫servlet文件:
/mytest/WEB-INF/classes/目錄下創(chuàng)建一個Test.java文件,內(nèi)容如下:
- 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 Test extends HttpServlet
- {
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- PrintWriter ut=response.getWriter();
- out.println("<html><body><h1>This is a servlet test.</h1></body></html>");
- out.flush();
- }
- }
2、編譯之,生成Test.class文件
3、配置/mytest/WEB-INF/web.xml文件,在<webapp>節(jié)點之間添加如下內(nèi)容:
- <servlet>
- <servlet-name>test</servlet-name>
- <display-name>Test</display-name>
- <description>A Test Servlet</description>
- <servlet-class>Test</servlet-class>
- </servlet>
-
- <servlet-mapping>
- <servlet-name>test</servlet-name>
- <url-pattern>/test</url-pattern>
- </servlet-mapping>
4、重啟tomcat,訪問http://localhost:8080/mytest/test地址,如果出現(xiàn)提示This is a servlet test.文字,則servlet測試成功
注:如果編譯出錯為javax.servlet.XXX,則需要配置環(huán)境變量,在classpath中添加路徑%tomcat%\lib\servlet-api.jar[tomcat7],或%tomcat%\lib\servlet.jar,并且把這個文件復(fù)制到%jdk%\jre\lib\ext\目錄下
javabean測試:
1、在/mytest/WEB-INF/classes/目錄下創(chuàng)建一個 TestBean.java文件,內(nèi)容如下:
- public class TestBean
- {
- private String name = null;
- public TestBean(String strName_p)
- {
- this.name=strName_p;
- }
- public void setName(String strName_p)
- {
- this.name=strName_p;
- }
- public String getName()
- {
- return this.name;
- }
- }
2、編譯之,生成TestBean.class文件
3、在/mytest/下創(chuàng)建 TestBean.jsp文件,內(nèi)容如下:
- <%@ page import="test.TestBean" %>
- <html>
- <body>
- <center>
- <%
- TestBean testBean=new TestBean("This is a test java bean.");
- %>
- Java bean name is: <%=testBean.getName()%>
- </center>
- </body>
- </html>
4、重啟tomcat,訪問http://localhost:8080/mytest/TestBean.jsp,如果顯示文字This is a test java bean.則測試成功。
總結(jié):
1、jsp文件的訪問其實web服務(wù)器接收到請求后再映射到j(luò)sp的servlet程序,有這個servlet來把jsp文件翻譯成對應(yīng).java文件【其實是另一個servlet】,然后編譯這個.java文件,再執(zhí)行對應(yīng)的.class文件
2、servlet文件的訪問,先是web服務(wù)器接收到請求后在對應(yīng)的web.xml內(nèi)查找servlet-map節(jié)點映射,查找到后再根據(jù)對應(yīng)的servlet節(jié)點找到servlet的實際文件路徑【就是經(jīng)過編譯的自定義servlet】,然后就去執(zhí)行這個.class文件
3、javabean的訪問有點像前2者的綜合,也就是jsp文件先被翻譯成.java-》.class文件,然后在執(zhí)行.class的時候又會查找并映射到對應(yīng)的servlet文件,所以javabean的頁面執(zhí)行時相對會慢點。
【注:javabean生成的文件除可以被jsp調(diào)用,還可以被servlet,其它javabean調(diào)用,類似于windows中的組件的概念】
|