接上篇html
七、sevlertjava
啊啊啊終於寫到最重要的實現部分了。Servlet = Service + Applet,表示小服務程序。Servlet 是在服務器上運行的小程序。這個詞是在 Java applet的環境中創造的,Java applet 是一種看成單獨文件跟網頁一塊兒發送的小程序,它一般用於在客戶端運行,結果獲得爲用戶進行運算或者根據用戶互做用定位圖形等服務。服務器上須要一些程序,經常是根據用戶輸入訪問數據庫的程序。這些一般是使用公共網關接口(Common Gateway Interface,CGI)應用程序完成的。然而,在服務器上運行Java,這種程序可以使用 Java 編程語言實現。在通訊量大的服務器上,JavaServlet 的優勢在於它們的執行速度更快於 CGI 程序。各個用戶請求被激活成單個程序中的一個線程,而無需建立單獨的進程,這意味着服務器端處理請求的系統開銷將明顯下降。
看不懂也不要緊,咱們只要知道,有了servlet,咱們就能夠返回所請求的數據了。sevlert內置有doGet和doPost,分別響應發出的get請求和post請求。這裏先學習一下最簡單的get,仍是不帶參數的那種sql
import com.alibaba.fastjson.JSONObject; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.sql.*; import java.util.*; import java.util.Date; @WebServlet("/hello")//註解,免於在xml註冊,/hello表示在主頁後加/hello訪問此頁面 public class test extends HttpServlet { private String message; public void init() throws ServletException{ } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {//相應不帶參數的get String dbURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=S-T"; String userName="sa"; String userPwd="111"; String sql="select * from Student"; List<student> students=new ArrayList<>(); Connection dbConn=null; try { String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; Class.forName(driverName);//反射JDBC包,這個必定要加,否則會報錯 // 設置響應內容類型 response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); dbConn= DriverManager.getConnection(dbURL,userName,userPwd); Statement statement=dbConn.createStatement(); ResultSet resultSet=statement.executeQuery(sql); while (resultSet.next()){ student st=new student(); st.setName(resultSet.getString("Sname")); st.setId(resultSet.getString("Sno")); st.setSex(resultSet.getString("Ssex")); st.setAge(resultSet.getString("Sage")); students.add(st); } response.getWriter().println(JSONObject.toJSONString(students));//注意這裏不是控制檯輸出了,是HttpServletResponse,用於返回json給http請求方 //out.println(JSONObject.toJSONString(resultSet)); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try {//關閉鏈接 if(dbConn!=null) { dbConn.close(); dbConn=null; } } catch(Exception ex) { } } } }
訪問http://localhost:8081/a/hello,獲得json數組(簡單顯示json數據,沒加狀態碼之類的。用的是之前的項目,因此和教程一不太同樣,本質上沒區別的)數據庫