簡單java web應用程式搭建與部署

來源:互聯網
上載者:User
文章目錄
  • 1、 準備工作
  • 2、tomcat、servlet簡介
  • 3、java web應用程式
  • 4、目錄結構
  • 5、各個檔案存放位置及原始碼
  • 6、運行
  • 7、打包成war檔案發布
  • 8、關於servlet中重新導向的區別
  • 9、參考資料

 

1、 準備工作

工具:tomcat、editplus、jdk、windows作業系統

操作:在windows作業系統上安裝jdk、tomcat、editplus,配置JAVA_HOME,Path,CLASSPATH;在CLASSPATH路徑上加上servlet-api.jar

CLASSPATH     D:\Program Files\Java\jdk1.6.0_10\lib;F:\tomcat\lib\servlet-api.jar;

也可以配置CATALINA_HOME   F:\tomcat

 

2、tomcat、servlet簡介

tomcat是完全免費得web伺服器

servlet容器也叫servlet引擎,是web伺服器或應用程式伺服器的一部分,用於在發送的請求和響應之上提供網路服務,解碼基於MIME的請求,格式化基於MIME的響應


解壓tomcat後,得到如下目錄,當然tomcat7中只有一個lib目錄。其中要用到的servlet-api.jar放在lib目錄下

servlet生命週期

 

3、java web應用程式

   一個web應用程式是由一組servlet、類、html頁面以及其他資源群組成的運行在web伺服器上的完整的應用程式。一個Context表示一個應用程式

  以一個登陸servlet為例介紹java web程式的開發流程,完成功能:使用者通過login.html登陸,登陸成功返回用戶端和伺服器的一些資訊,以及請求資訊

 

4、目錄結構

F:\tomcat\webapps\servlet_demo這是我電腦上的應用程式servlet_demo的路徑,這個路徑是上下文路徑,在該路徑下建立如下檔案:

 

5、各個檔案存放位置及原始碼

lib目錄下存放我們要用到的資源,這裡存放的是mysql的jdbc驅動

src目錄下放的是原始碼,這個在部署的時候可以不需要的

 

DataBaseConnection類是一個通用的資料庫連接工具類

import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;/** * 該工具類用於資料庫連接,返回一個Statement對象,使用者可以根據此對象執行sql語句擷取結果 */public class DataBaseConnection {public static final String ACCESS_DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";public static final String MYSQL_DRIVER = "com.mysql.jdbc.Driver";public static final String ORACLE_DRIVER = "oracle.jdbc.driver.OracleDriver";public static final String SQLSERVER_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";private Statement st = null;private Connection connection = null;public Statement getStatement(String driver, String url, String user,String password) {try {// 1、載入驅動程式Class.forName(driver);// 2、通過url建立串連,串連到資料庫connection = DriverManager.getConnection(url, user, password);// 3、建立語句,connection可以看出纜道,Statement可以看出纜車st = connection.createStatement();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return st;}public void close() {try {if (st != null)st.close();if (connection != null)connection.close();} catch (SQLException e) {e.printStackTrace();}}}

 

LoginServlet類用於處理表單資料,判斷使用者名稱密碼是否正確,如果正確則返回資訊,錯誤轉到登陸介面

import javax.servlet.RequestDispatcher;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Enumeration;public class LoginServlet extends HttpServlet {protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 設定響應MIME類型resp.setContentType("text/html;charset=utf-8");// 獲得輸出資料流PrintWriter out = resp.getWriter();if (isRight(req, resp)) {// 擷取用戶端資訊和伺服器資訊String clientAddress = req.getRemoteAddr();int clientPort = req.getRemotePort();String clientHost = req.getRemoteHost();String serverAddress = req.getLocalAddr();int serverPort = req.getLocalPort();String serverHost = req.getLocalName();// 輸出資訊到客戶瀏覽器out.print("<html><head><title>");out.print("登陸成功!</title></head><body><center>");out.print("<p>客戶機IP:" + clientAddress + "  客戶機連接埠:" + clientPort + "  客戶機主機名稱:" + clientHost);out.print("<p>伺服器IP:" + serverAddress + "  伺服器連接埠:" + serverPort + "  伺服器主機名稱:" + serverHost);// 擷取http請求資訊Enumeration headNames = req.getHeaderNames();out.print("<p>http請求資訊<br><table border=\"1\">");while (headNames.hasMoreElements()) {String headName = (String) headNames.nextElement();String value = req.getHeader(headName);out.print("<tr><td>" + headName + "</td><td>" + value + "</td></tr>");}out.print("</table>");// 獲得上下文,一個上下文代碼一個web應用ServletContext context = getServletContext();// 統計訪問量,context.getAttribute("count");這個Attribute是屬於整個web應用程式的// 該應用程式的每個servlet都可以訪問此屬性Integer count = (Integer) context.getAttribute("count");if (count == null)count = 1;elsecount++;context.setAttribute("count", count);out.print("<p><br>當前訪問量:" + count);out.print("</body></html>");} else {// 請求轉寄// RequestDispatcher由servlet容器所建立,用於封裝一個由路徑所標識的資源// 1.參數表示相對於當前servlet路徑,也可以是上下文路徑// RequestDispatcher rd=req.getRequestDispatcher("success.html");// 2.參數是相對上下文路徑,必須要以/開始//RequestDispatcher rd = getServletContext().getRequestDispatcher("/success.html");// 控制權交給轉寄到的servlet,out輸出的內容將會被清除,其他後面的代碼也不會執行    //rd.forward(req, resp);// 控制權交給轉寄到的servlet,執行完後返回當前servlet並繼續執行// rd.include(req, resp);// 響應發送到指定頁面,和rd.forward(req, resp);有區別resp.sendRedirect("login.html");}out.close();}// 通過查詢資料庫,判斷輸入的使用者名稱密碼是否正確private boolean isRight(HttpServletRequest req, HttpServletResponse resp) {// 擷取表單資料String user = req.getParameter("user");String password = req.getParameter("password");// 擷取初始參數,下面是獲得串連資料庫的參數String driverClass = getInitParameter("driverClass");String url = getInitParameter("url");String username = getInitParameter("username");String pw = getInitParameter("password");DataBaseConnection dbConnection = new DataBaseConnection();Statement st = dbConnection.getStatement(driverClass, url, username, pw);try {ResultSet result = st.executeQuery("select * from user");while (result.next()) {if (result.getString("username").equals(user) && result.getString("password").equals(password))return true;}result.close();st.close();} catch (SQLException e) {e.printStackTrace();}dbConnection.close();return false;}}

登陸頁面login.html

<html>  <head>      <title>登陸</title>  </head>  <body>  <center>  <form action="login" method="post">  使用者名稱:<input type="text" name="user" id="user"><p>  密碼:<input type="password" name="password" id="password"><p>  <input type="submit" value="登陸">  <input type="reset" value="重設">  </form>  </body></html>

資料庫資訊

 

6、運行

第5步弄完之後,開啟tomcat和資料庫,在地址欄輸入:http://localhost:8080/servlet_demo 就會進入登陸介面

 

當然也可以通過telnet來運行:

先串連:
telnet localhost 8080
然後訪問:
GET /servlet_demo/login HTTP/1.1
Host:localhost

連續按兩下斷行符號

 

7、打包成war檔案發布

dos視窗切換到 F:\tomcat\webapps\servlet_demo  。執行命令:jar -cvf servlet_demo.war *     。在目前的目錄下就有了servlet_demo.war 檔案,可以用壓縮軟體直接開啟該檔案,也可以用命令:jar -tf servlet_demo.war開啟該檔案。

刪除webapps目錄下得servlet_demo應用,把servlet_demo.war檔案放入目錄下,這樣就部署好了,運行跟第6步一樣了。。。

 

8、關於servlet中重新導向的區別

9、參考資料

《java web開發詳解》

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.