Experiment 4 JDBC technology
1. The purpose of the experiment:
1. Familiar with the installation and configuration method of MySQL; familiar with the basic programming method of JDBC; master the method of adding, deleting, modifying and checking the database in the web program;
2. Understand how to perform database programming in the comprehensive application of JSP + JavaBean + Servlet.
2. Experimental principle:
<Omitted>
3. Experimental content:
1. Design the persistent JavaBean class, design the database table structure, and store the JavaBean object. And write user interface to realize the CRUD process of data.
2. User login (JSP + JavaBean + MySQL)
将连接数据库验证用户名和密码的代码封装在 JavaBean 中,很大程度上减少了 JSP 文件中的 Java 代码量,实现了业务逻辑和表现形式的分离。系统由用户表 user、用户类 User 和 3 个 JSP 页面构成(用户登录页面 input.jsp、处理用户登录页面login.jsp,欢迎页面 welcome.jsp)
代码:
bean
package 实验四.bean;
public class User {
private Integer uid;
private String username;
private String password;
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
dao
package 实验四.dao;
import 实验四.bean.User;
import java.sql.*;
public class UserDao {
private Connection conn = null;
public UserDao(){
}
private void initConnection() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/cms";
this.conn = DriverManager.getConnection(url, "root", "root");
}
public User selectUserbyusername(String username) throws Exception {
User users = null;
this.initConnection();
String sql = "select username,password from t_user1" +
" where username=?";
PreparedStatement ps = this.conn.prepareStatement(sql);
ps.setString(1,username);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
users = new User();
users.setUsername(rs.getString("username"));
users.setPassword(rs.getString("password"));
}
this.conn.close();
return users;
}
}
input.jsp
<%@ page import="实验四.dao.UserDao" %>
<%@ page import="实验四.bean.User" %><%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2019/12/12
Time: 21:58
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String uname=request.getParameter("username");
String password = request.getParameter("password");
UserDao userDao = new UserDao();
User user = userDao.selectUserbyusername(uname);
if(user!=null&&user.getUsername().equals(uname)&&
user.getPassword().equals(password)){
/* out.print(uname);
out.print(password);*/
%>
<%-- <jsp:forward page="welcome.jsp"></jsp:forward>--%>
登录成功<a href="welcome.jsp">转发到成功界面</a>
<%
}else{
%>
登录失败,<a href="login1.jsp">返回登录页面</a>
<%
}
%>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2019/12/12
Time: 21:59
To change this template use File | Settings | File Templates.
--%>
login.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<h3>用户登录</h3>
<form action="input.jsp" method="post">
<%--请输入用户 id: <input type="text" name="uid"><br>--%>
请输入用户姓名:<input type="text" name="username"><br>
请输入用户密码:<input type="text" name="password"><br>
<input type="submit" value="登录">
<input type="reset" value="重置">
</form>
</body>
</html>
welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>欢迎你,登陆成功!</h2>
</body>
</html>
3. Shopping trolley (JSP + JavaBean + MySQL)
商品表 item。Item.java 中定义和商品表对应的类 Item, Database.java 中定义所有访问数据库的类的父类 Database,ItemDao.java 中定义用于访问数据库商品表的类 ItemDao,ItemDao 类是 Database 类的子类,Cart.java 中定义了购物小车类 Cart。shopping.jsp 是商品列表页面,cart.jsp 是购物小车页面。
4. Design a shopping cart that conforms to the MVC design pattern. (JSP + JavaBean + Servlet + MySQL)
Book:
package 实验四.bean;
public class Book {
private String id;
private String bookname;
private double bookprice;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public double getBookprice() {
return bookprice;
}
public void setBookprice(double bookprice) {
this.bookprice = bookprice;
}
}
Bookdao:
package 实验四.dao;
import bean.Book;
import java.sql.*;
import java.util.ArrayList;
public class BookDao {
public ArrayList<Book> queryBooksByName(String bookname) throws Exception {
Connection conn = null;
ArrayList<Book> books= new ArrayList<Book>();
try {
//获取连接
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/cms";
conn = DriverManager.getConnection(url, "root", "root");
// 运行SQL语句
String sql = "SELECT ID,BOOK_NAME,BOOK_PRICE from T_BOOK WHERE BOOK_NAME LIKE '%" + bookname + "%' ";
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
while (rs.next()) {
//实例化VO
Book book = new Book();
book.setId(rs.getString("ID"));
book.setBookname(rs.getString("BOOK_NAME"));
book.setBookprice(rs.getDouble("BOOK_PRICE"));
books.add(book);
}
rs.close();
stat.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {// 关闭连接
if (conn != null) {
conn.close();
conn = null;
}
} catch (Exception ex) {
}
}
return books;
}
}
Addbookservlet:
package 实验四.servlet;
import bean.Book;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
public class AddBookServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
HashMap books = (HashMap) session.getAttribute("books");
if(books == null){
books = new HashMap();
}
String id = request.getParameter("id");
String bookname = request.getParameter("bookname");
double bookprice = Double.valueOf(request.getParameter("bookprice"));
Book book = new Book();
book.setId(id);
book.setBookname(bookname);
book.setBookprice(bookprice);
books.put(id, book);
session.setAttribute("books", books);
// ServletContext application = this.getServletContext();
// RequestDispatcher rd = application.getRequestDispatcher("/servlet/QueryServlet");
// rd.forward(request, response);
response.sendRedirect("/query");
}
}
Queryservlet:
package 实验四.servlet;
import bean.Book;
import dao.BookDao;
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.IOException;
import java.util.ArrayList;
public class QueryServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//PrintWriter out = response.getWriter();
String bookname=request.getParameter("name");
BookDao bookDao = new BookDao();
try {
ArrayList<Book> books = bookDao.queryBooksByName(bookname);
request.setAttribute("books", books);
request.getRequestDispatcher("/addbook.jsp").forward(request,response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Removeservlet:
package 实验四.servlet;
import bean.Book;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
public class RemoveServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String id = request.getParameter("id");
HttpSession session = request.getSession();
HashMap books = (HashMap)session.getAttribute("books");
Book book = (Book)books.get(id);
//移除相应图书
books.remove(id);
response.sendRedirect("/query");
}
}
9_1.jsp:
<%@ page import="java.util.ArrayList" %>
<%@ page import="bean.Book" %><%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2019/11/13
Time: 12:30
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form name="loginForm" action="query" method="post">
请输入需要查询的图书名字:<input type="text" name="name"/>
<input type="submit" value="查询">
</form>
<hr>
<%
ArrayList books = (ArrayList) request.getAttribute("books");
if(books!=null&&books.size()>0){
%>
<table >
<tr>
<h3>所查到的图书信息:</h3>
</tr>
<tr >
<td>图书名称</td>
<td>图书价格</td>
<td>操作</td>
</tr>
<tr>
<td>
<%
for(int i=0;i<books.size();i++){
Book book = (Book) books.get(i);
%>
<tr>
<td><%=book.getBookname()%></td>
<td><%=book.getBookprice()%></td>
<td><a href="add?id=<%=book.getId()%>&bookname=<%=book.getBookname()%>&bookprice=<%=book.getBookprice()%>">添加到购物车</a>
</td>
</tr>
<%
}
%>
</table>
<%
}
%>
<a href="/9_2.jsp">查看购物车</a>
</body>
</html>
9_2.jsp:
<%@ page import="java.util.Set" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="bean.Book" %>
<%@ page import="java.util.HashMap" %><%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2019/11/13
Time: 12:58
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<table border="1">
<tr bgcolor="pink">
<td>书本名称</td>
<td>书本价格</td>
<td>书本编号</td>
<td>删除</td>
</tr>
<%
HashMap books = (HashMap) session.getAttribute("books");
Set set = books.keySet();
Iterator ite = set.iterator();
Book book = new Book();
double count =0;
while (ite.hasNext()) {
String id = (String) ite.next();
book = (Book) books.get(id);
%>
<tr bgcolor="yellow">
<td><%=book.getBookname()%></td>
<td><%=book.getBookprice()%></td>
<td><%=book.getId()%></td>
<td><a href="/remove?id=<%=book.getId()%>">删除</a>
</td>
</tr>
<%
count +=book.getBookprice();
}
%>
总计:<%=count%> 元.
</table>
<a href="9_1.jsp">继续买书</a>
</body>
</html>
4. Experimental requirements:
1. Carefully execute each step and make a good record.
2. Briefly record the experimental results to form an experimental report, which includes:
the purpose of the experiment;
the content of the experiment (brief record);
the problems and solutions that occurred in the
experiment ; (emphasis) the experiment experience (emphasis)
V 3. Experimental hours: 2 hours