mvc三塊:JavaBean servlet jsp其中jsp頁面使用戶可以輸入信息如單號輸出信息如顯示數據庫內信息。jsp通過servlet去調用Javabean訪問數據庫。servlet起到調用,轉換頁面結果而javabean訪問數據庫(以上爲我自己對本次實驗的理解。不夠準確但是比較簡單)
然後看一下本次實驗具體涉及哪些文件:
兩個javabean:
1.其中musicdao專門用來訪問數據庫這裏書寫了兩個作用。一個是查找一個是插入代碼
package com. beans;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import java.util.ArrayList;
import com.beans.musicBean;
public class musicDAO{
private static InitialContext context= null;
private DataSource dataSource = null;
public musicDAO(){
try{
if(context == null){
context = new InitialContext();
}
dataSource = (DataSource)context.lookup("java:comp/env/jdbc/sample");
}catch(NamingException e2) {
}
}
//查詢音樂信息
public musicBean searchMusic(String musicid){
Connection conn = null;
PreparedStatement pstmt = null ;
ResultSet rst = null;
musicBean music = new musicBean();
try{
conn = dataSource.getConnection();
pstmt = conn. prepareStatement( "SELECT * FROM musicarray WHERE musicid=?");
pstmt.setString(1, musicid);
rst = pstmt.executeQuery() ;
if(rst.next()){
music.setMusicid(rst. getString( "musicid"));
music.setName(rst . getString("name"));
music.setSinger(rst. getString("singer"));
return music;
}else{
return null;
}
}catch(SQLException se){
return null ;
}finally{
try{
conn. close();
}catch(SQLException se){
}
}
}
//插入一條音樂記錄
public boolean insertMusic (musicBean music){
Connection conn = null;
PreparedStatement pstmt = null;
try{
conn = dataSource.getConnection() ;
pstmt = conn.prepareStatement("INSERT INTO musicarray VALUES(?,?,?)");
pstmt.setString(1, music. getMusicid());
pstmt.setString(2, music. getName());
pstmt.setString(3, music. getSinger());
pstmt.executeUpdate();
pstmt.close();
return true ;
}catch(SQLException se){
return false;
}finally{
try{
conn. close();
}catch(SQLException se){ }
}
}
}
核心代碼:
visit數據庫
Context context=new InitialContext();
DataSource ds=(DataSource)context.lookup("java:comp/env/jdbc/sample");
Connection conn=ds.getConnection();
查找語句執行
pstmt = conn. prepareStatement( "SELECT * FROM musicarray WHERE musicid=?");
pstmt.setString(1, musicid);//獲取頁面文字
rst = pstmt.executeQuery() ;
返回信息在rst包裹
插入語句執行
pstmt = conn.prepareStatement("INSERT INTO musicarray VALUES(?,?,?)");
pstmt.setString(1, music. getMusicid());
pstmt.setString(2, music. getName());
pstmt.setString(3, music. getSinger());
pstmt.executeUpdate();
2.musicbean
是一個對象。數據中一條信息包裹musicbean裏。
代碼:
package com.beans;
import java. io.*;
public class musicBean implements Serializable{
private String musicid = null;
private String name = null;
private String singer = null;
public musicBean(){}
public musicBean(String musicid, String name,String singer){
this.musicid = musicid;
this.name = name;
this.singer = singer;
}
public String getMusicid(){return this.musicid;}
public String getName(){return name;}
public String getSinger() { return this.singer;}
public void setMusicid(String musicid){ this.musicid=musicid; }
public void setName(String name){this.name=name; }
public void setSinger(String singer){ this.singer = singer;}
}
沒什麼核心代碼。
servlet:
1.musicinsertservlet
package com.control;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.beans.musicBean;
import com.beans.musicDAO;
public class musicInsertServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public musicInsertServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
String message=null;
musicBean music=new musicBean(
request.getParameter("musicid"),
request.getParameter("name"),
request.getParameter("singer")
);
musicDAO musicdao=new musicDAO();
boolean success=musicdao.insertMusic(music);
if(success) {
message="成功插入一條記錄!";
}else {
message="插入記錄錯誤!";
}
request.setAttribute("result", message);
RequestDispatcher view=request.getRequestDispatcher("/musicInsert.jsp");
view.forward(request, response);
}
}
獲取信息
musicBean music=new musicBean(
request.getParameter("musicid"),
request.getParameter("name"),
request.getParameter("singer")
);
執行插入
musicDAO musicdao=new musicDAO();
boolean success=musicdao.insertMusic(music);
跳轉頁面
request.setAttribute("result", message);//通過rusult傳輸信息。可以在musicinsert頁面輸出message
RequestDispatcher view=request.getRequestDispatcher("/musicInsert.jsp");
view.forward(request, response);
關於setattribute
https://jingyan.baidu.com/article/4d58d5410ab9ea9dd5e9c047.html
2。musicqueryservlet
package com.control;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.beans.musicBean;
import com.beans.musicDAO;
public class musicQueryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public musicQueryServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String musicid=request.getParameter("musicid");//獲取
musicDAO musicdao=new musicDAO();//使用beans連接數據庫
musicBean music=musicdao.searchMusic(musicid);
if(music!=null) {
request.setAttribute("music", music);//
RequestDispatcher view=request.getRequestDispatcher("/display.jsp");//跳轉頁面
view.forward(request, response);
}else {
RequestDispatcher view=request.getRequestDispatcher("/errorPage.jsp");
view.forward(request, response);
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request,response);
}
}
獲取信息
String musicid=request.getParameter("musicid");//獲取
調用找尋
musicDAO musicdao=new musicDAO();//使用beans連接數據庫
musicBean music=musicdao.searchMusic(musicid);
跳轉頁面並把music(musicbean)這個傳給下給頁面展示。
request.setAttribute("music", music);
RequestDispatcher view=request.getRequestDispatcher("/display.jsp");//跳轉頁面
view.forward(request, response);
這裏接受的代碼還沒搞清楚不知道是怎麼接受的
錯誤跳轉頁面
RequestDispatcher view=request.getRequestDispatcher("/errorPage.jsp");
view.forward(request, response);
3.jsp
這個沒什麼特別難的。
1.display
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="music" class="com.beans.musicBean" scope="request"/>
<jsp:setProperty name="music" property="musicid" value="lisi"/>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Music Display</title>
</head>
<body>
id號:<jsp:getProperty property="musicid" name="music"/>
歌曲名:<jsp:getProperty property="name" name="music"/>
歌手:<jsp:getProperty property="singer" name="music"/>
</body>
</html>
核心代碼:
接受serlvlet然後下列代碼進行輸出property是對象,name是它的屬性。
<jsp:useBean id="music" class="com.beans.musicBean" scope="request"/>
<jsp:setProperty name="music" property="musicid" value="lisi"/>
<jsp:getProperty property="musicid" name="music"/>
2.errorpage
<%@ page contentType="text/html;charset=UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Error</title>
</head>
<body>
對不起,您查的歌曲不存在!
</body>
</html>
3.musicinsert
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Music Insert</title>
</head>
<body>
<h3>請輸入一個歌曲信息:</h3>
<%if(request.getAttribute("result")!=null)
out.println(request.getAttribute("result"));
%>
<form action="musicinsert.do" method="post">
<table>
<tr><td>id號</td><td><input type="text" name="musicid"></td></tr>
<tr><td>歌曲名</td><td><input type="text" name="name"></td></tr>
<tr><td>歌手</td><td><input type="text" name="singer"></td></tr>
<tr><td><input type="submit" value="提交"></td>
<td><input type="reset" value="重置"></td>
</tr>
</table>
</form>
</body>
</html>
正常的接收信息
<%if(request.getAttribute("result")!=null)
out.println(request.getAttribute("result"));
%>
4musicicquery
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Music Query</title>
</head>
<body>
請輸入一個書號:<br>
<form action="musicquery.do" method="post">
<input type="text" name="musicid"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
然後重視一下最後兩個form的格式
<form action="musicinsert.do" method="post">
<form action="musicquery.do" method="post">
具體知識點不清楚到時候學下