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">
具体知识点不清楚到时候学下