java web

Champion.XL發表於2020-12-12

JSP(前端頁面)+Servlet(控制器)+JavaBean(資料獲取與封裝元件),建立DAO獲取資料庫資料,建立VO封裝取回的資料,並用EL表示式展示在頁面中。實現一個資料庫的模糊查詢。(java web實驗報告)

1.首項給大家看一下我這個web實驗的目錄
submit_inform.jsp程式碼主要使用來提交表單資料給servlet和顯示session裡面的資料到前端頁面上。servlet包裡面的Test_servlet.jsp主要使用來中轉資料。Beans包裡面的DAO.jsp用來訪問資料庫,Student.java 程式碼主要是用來建立VO封裝取回來的資料。 filter包裡面的程式碼主要用來處理中文亂碼的問題。

2.軟體準備:MyEclipse和MySQL資料庫

2-1.MySQL資料庫:
首先我在MySQL資料庫裡面建立一張名為:t_student的表:
表的主鍵我設定的是stuno
3.核心代程式碼:
3-1.jsp程式碼

 <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<body>
<form action="Test_servlet" method="POST">
    	請輸入學生資訊:<input type="text" name="stuinfo">
    	<input type="submit" value="查詢">
</form>   
<!-- 這裡的stuinfor標識的是session裡面的student資料,這裡直接使用stuinfor去獲取session裡面的資料 -->
	<c:forEach items="${stuinfor }" var="student">
		姓名:${student.stuname }
		學號:${student.stuno }<br>	
	</c:forEach>
</body>
</html>

jsp程式碼中我使用了forEach核心標籤去遍歷session中的資料,這裡我直接使用的是taglib指令去宣告jsp程式碼使用的標籤庫。
大家也可以直接匯入相應的java包在lib目錄下。
我這裡直接使用的指令就沒有導包,有一點,大家在連線MySQL資料可是,需要下載相應的廠商驅動,然後匯入到lib目錄下
3-2.servlet程式碼(doGet方法):

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//接受表單傳來的資料
		try {
		request.setCharacterEncoding("UTF-8");
		String stuinfor = request.getParameter("stuinfo");
		DAO dao = new DAO();
	    ArrayList<String> student = dao.queryAllStudents(stuinfor);
		HttpSession session = request.getSession();
//		                這裡我將student資料儲存在session中並用stuinfor(相當於student資料的一個名字叫做stuinfor)來標識它,以後需要用到student資料就直接使用stuinfor
		session.setAttribute("stuinfor", student);
		response.sendRedirect("submit_inform.jsp");
		}
		catch (Exception e) {
			// TODO 自動生成的 catch 塊
			e.printStackTrace();
		}
}

這個程式碼裡,我將取回的資料放在了session中;然後注意一點記得重定向一下:

response.sendRedirect("submit_inform.jsp");

3-3.Beans包程式碼(連線資料庫)
DAO.jsp程式碼

package Beans;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
public class DAO {
	public ArrayList<String> queryAllStudents(String stuinfor) throws Exception{
		java.sql.Connection conn = null;
		ArrayList students = new ArrayList();
		try{
			//獲取連線
			Class.forName("com.mysql.jdbc.Driver");
  			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8",
  			user,password);
  			String sql = "select * from t_student where stuno like '%"+stuinfor+"%' or stuname like '%"+stuinfor+"%' or stusex like '%"+stuinfor+"%'";
  			Statement stat = conn.createStatement();
  			ResultSet rs = stat.executeQuery(sql);
  			while(rs.next()){
  				Students student = new Students();
  				student.setStuno(rs.getString("stuno"));
  				student.setStuname(rs.getString("stuname"));
  				students.add(student);  				
  			}
  			rs.close();
  			stat.close();
		}catch(SQLException e){
			e.printStackTrace();
		}finally{
			try{
				//關閉連線
				if(conn!=null){
					conn.close();
					conn=null;
				}
			}catch(Exception ex){
				
			}
		}
	return students;
}
}
DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8",
  			user,password);

這段程式碼中的user是自己建立資料庫時的使用者名稱,password是密碼(這裡根據自己的情況而定)
Student.jsp程式碼

package Beans;

public class Students {

	private String stuno;
	private String stuname;
//	給每個成員變數定義setter/getter方法
	public String getStuno() {
		return stuno;
	}
	public void setStuno(String stuno) {
		this.stuno = stuno;
	}
	public String getStuname() {
		return stuname;
	}
	public void setStuname(String stuname) {
		this.stuname = stuname;
	}

}

4.結果截圖
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
5.總結
jsp:主要是用來使用者展示資料,輸入資料的地方 servlet:我覺得是一個資料中轉站 javabean:實際操作的地方(本次實驗主要是建立了一個DAO.jsp去訪問資料庫)
這篇文章是我第一次寫部落格所寫,有很多不足地方,忘大家批評指正。有什麼問題,大家也可以留言,歡迎大家一起交流學習!!!!

相關文章