Java Web開發之Servlet、JSP基礎,servletjsp

來源:互聯網
上載者:User

Java Web開發之Servlet、JSP基礎,servletjsp

有好多年不搞Java Web開發了,這幾天正好國慶放假,放鬆之餘也有興趣回頭看看Java Web開發技術的基礎。

我們都知道,Servlet是Java Web開發的重要基礎,但是由於Servlet開發相對繁瑣,代碼量龐大而且不易維護,美工無法參與介面設計開發等不足,於是就誕生了jsp。jsp是對servlet開發模型的重要升級。有了jsp,Java Web開發技術才真正被廣泛使用。

一、Servlet

在Java Web開發當中,建立一個類繼承(派生)自HttpServlet類即可建立一個Servlet。

比如:

@WebServlet(name="firstServlet",urlPatterns={"/firstServlet"})public class FirstServlet extends HttpServlet {/** * Constructor of the object. */public FirstServlet() {super();}/** * Destruction of the servlet. <br> */public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}/** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. *  * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println("  <BODY>");out.print("    This is ");out.print(this.getClass());out.println(", using the GET method");out.println("  </BODY>");out.println("</HTML>");out.flush();out.close();}/** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. *  * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println("  <BODY>");out.print("    This is ");out.print(this.getClass());out.println(", using the POST method");out.println("  </BODY>");out.println("</HTML>");out.flush();out.close();}/** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */public void init() throws ServletException {// Put your code here}}
這段代碼是在myeclipse工具當中建立servlet時自動產生的,可以看到我們建立的FirstServlet類繼承自HttpServlet。而且又實現了裡面的doGet(Get請求時調用的方法)、doPost(Post請求時調用的方法)、init(初始化對象)、destroy(銷毀對象)。值得注意的是我們採用了Annotation的方式進行了修飾,即:@WebServlet(name="firstServlet",urlPatterns={"/firstServlet"})。這是servlet3.0開始推薦的,以前採用的方式是在web.xml裡面添加servlet和servlet-mapping配置。比如:

<servlet><servlet-name>firstServlet</servlet-name><servlet-class>包名.FirstServlet</servlet-class></servlet><servlet-mapping><servlet-name>firstServlet</servlet-name><url-pattern>/firstServlet</url-pattern></servlet-mapping>

上面的配置有幾點需要說明:

1、servlet裡面的servlet-class節點需要填寫servlet類的完整名稱(包名.類名)

2、servlet-mapping下的servlet-name節點的名稱要與servlet下的servlet-name節點的名稱一致,才能找到。

3、url-pattern下的url要加"/"

啟動tomcat,在ie中輸入localhost:8080/工程名/firstServet,即可瀏覽該頁面(Get請求)。8080連接埠是tomcat預設設定的連接埠號碼,可以在tomcat/conf/下面的server.xml檔案中修改連接埠號碼。比如我們修改了預設連接埠號碼為8088,重新啟動tomcat(載入xml)以後,訪問的url即為:localhost:8088/工程名/servlet映射的urlpattern名。

 <Connector port="8088" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
最後需要說明的是,如果我們在servlet裡面修改了代碼,比如重新輸出了一段html表格,要重新編譯、部署到tomcat web容器運行,不像jsp是即時編譯的。

可以看到servlet裡面都是一行一行輸出內容(out.println方法),所以現在基本上不會採用純servlet開發Java Web項目,而是讓其作為MVC的C(Controller,控制器)來使用。

二、jsp

正是由於純servlet開發Java Web應用非常繁瑣,而且美工和程式員無法很好的合作,jsp應運而生。jsp通過頁面內嵌程式碼、標籤庫(比如JSTL,Java標準標籤庫)等手段,可以直接在頁面中混入Java代碼,從而簡化開發。但是jsp的本質還是servlet,我們可以用文字編輯器(比如:editplus、notepad++)開啟tomcat/work目錄下的工程目錄裡面的classes檔案就可以看到,實際上jsp還是被編譯產生了servlet類檔案(一個jsp對應產生一個servlet)。裡面也有init、destroy、service(這個與之前的Get、Post、Put、Delete請求不同)等方法。

下面先示範一段從MySQL資料庫中通過JDBC讀取資料顯示在頁面上的功能,讓讀者快速上手jsp。

開發環境:

1、MySQL5.7

2、MyEclipse 2014、JDK7.0

MySQL安裝後內建了一個MySQL Workbench工具,可以利用它建立資料庫。


點擊OK,出現如下介面。


輸入密碼即可登入到工作台主介面。


裡面有預設的world資料庫,可以在裡面對Tables(表)、Views(視圖)、Stored Procedures(預存程序)、Functions(函數)等進行相關操作。

當然你也可以在MySQL控制台用命令列對資料庫進行操作。


我們就使用MySQL裡面內建的world資料庫,查詢裡面的city這張表,把資料顯示出來(由於資料量比較大,只取前10條)。

先在MySQL的工具裡面用SQL查詢一下。


SQL語句測試通過,我們就可以在jsp頁面中直接使用了。

MyJsp.jsp完整代碼:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ page import="java.sql.*" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'MyJsp.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>    <%Class.forName("com.mysql.jdbc.Driver");//載入驅動Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/world", "root", "123456");//建立串連Statement stmt = conn.createStatement();//建立執行者ResultSet rs = stmt.executeQuery("select * from city limit 0,10");//返回結果集(遊標)%><table cellpadding="0" cellspacing="0" border="1" width="500" ><%while (rs.next()) {%><tr><td><%=rs.getString(1) %></td><td><%=rs.getString(2) %></td></tr><%}%></table>  </body></html>

可以看到,直接在jsp頁面中嵌入了Java代碼。由於我們使用的是JDBC查詢的MySQL資料庫,所以我們需要mysql-connector-java-5.1.9.jar這個Jar包作為驅動,直接放到該Web工程的WEB-INF/lib目錄下即可。

在瀏覽器中顯示的結果如下:


如我們所願,顯示出了前10條資料。

其實對比一下上面的頁面代碼,你會發現這種頁面內嵌程式碼的方式非常熟悉。在ASP、ASP.NET開發中都可以使用這種嵌入後台代碼的方式進行開發,所以基本上開發思想都可以互相套用。

由於篇幅原因,這篇部落格就先到這裡,下篇部落格重點講述jsp開發中的種種細節。



java web開發與jsp有什關係?

jsp是java的進階應用程式,要想學jsp,可以先瞭解一下html的基礎知識,再學習一下JDBC(串連資料庫的技術),之後就可以學習jsp編寫簡單的動態網頁了
 
學習JavaWeb,是先學習Servlet還是先學習JSP?

他們說得都太複雜,聽我的!你不是學完Java基礎了嗎?直接找本書看起,就行了,書上不管是先講什麼,都是循序漸進的,慢慢看就看懂了!

不想看書就看視頻,一步一步照著視頻看就行了!加油!
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.