1.dao包
(1)ProDao.java
package dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import entity.Pro;
import util.RowMapper;
import util.DBHelp;
public class ProDao {
private DBHelp<Pro> db = new DBHelp<Pro>();
public List<Pro> findAll(){
String sql = "select id,proname,price from t_pro";
return db.executeQueryForList(sql, new ProRowMapper());
}
public boolean save(String name,float price){
String sql = "insert into t_pro (proname ,price) values(?,?)";
return db.executeSQL(sql,name,price);
}
public void delById(int id){
String sql = "delete from t_pro where id =?";
db.executeSQL(sql,id);
}
public Pro findById(int id){
String sql = "select id,proname,price from t_pro where id=?" ;
return db.executeQueryForObject(sql,new ProRowMapper(),id);
}
public boolean update(Pro p){
String sql = "update t_pro set proname = ?,price = ? where id= ?";
return db.executeSQL(sql,p.getProname(),p.getPrice(),p.getId());
}
private class ProRowMapper implements RowMapper<Pro>{
public Pro mapRow(ResultSet rs) throws SQLException {
Pro p = new Pro();
p.setId(rs.getInt("id"));
p.setProname(rs.getString("proname"));
p.setPrice(rs.getFloat("price"));
return p;
}
}
}
(2)UserDao.java
package dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import entity.User;
import util.RowMapper;
import util.DBHelp;
public class UserDao {
private DBHelp<User> db = new DBHelp<User>();
public User findByName(String name){
String sql = "select id,username,password from t_user where username=?" ;
return db.executeQueryForObject(sql,new UserRowMapper(),name);
}
private class UserRowMapper implements RowMapper<User>{
public User mapRow(ResultSet rs) throws SQLException {
User u = new User();
u.setId(rs.getInt("id"));
u.setUsername(rs.getString("username"));
u.setPassword(rs.getString("password"));
return u;
}
}
}
2.entity包
(1)Pro.java
package entity;
public class Pro {
private int id;
private String proname;
private float price;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setProname(String proname) {
this.proname = proname;
}
public String getProname() {
return proname;
}
public void setPrice(float price) {
this.price = price;
}
public float getPrice() {
return price;
}
}
(2) User.java
package entity;
public class User {
private int id;
private String username;
private String password;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
}
3.util包
(1) DBHelp.java
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class DBHelp {
private final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=ShangPin";
private final String NAME = "sa";
private final String PWD = "123456";
/**
* 获取数据库连接对象
* @return Connection类的对象
*/
public Connection getConnection() {
Connection conn =null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL,NAME,PWD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public List<T> executeQueryForList(String sql,RowMapper<T> rm,Object...args) {
Connection conn = null;
PreparedStatement stat = null;
ResultSet rs = null;
List<T> list = new ArrayList<T>();
try {
conn = getConnection();
stat = conn.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
stat.setObject(i+1, args[i]);
}
rs = stat.executeQuery();
while(rs.next()) {
T obj = rm.mapRow(rs);
list.add(obj);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(rs, stat, conn);
}
return list;
}
public T executeQueryForObject(String sql,RowMapper<T> rm,Object...args) {
Connection conn = null;
PreparedStatement stat = null;
ResultSet rs = null;
T obj = null;
try {
conn = getConnection();
stat = conn.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
stat.setObject(i+1, args[i]);
}
rs = stat.executeQuery();
if(rs.next()) {
obj = rm.mapRow(rs);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(rs, stat, conn);
}
return obj;
}
/**
* 执行insert update delete语句
* @param sql insert or update or delte语句
* @return true代表成功 false代表失败
*/
public boolean executeSQL(String sql,Object... args) {
Connection conn = null;
PreparedStatement stat = null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL,NAME,PWD);
stat = conn.prepareStatement(sql);
//?
for (int i = 0; i < args.length; i++) {
stat.setObject(i + 1, args[i]);
}
int rows = stat.executeUpdate();
if(rows > 0) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(stat,conn);
}
return false;
}
/**
* 释放数据库资源
* @param rs
* @param stat
* @param conn
*/
public void close(ResultSet rs, Statement stat, Connection conn) {
try {
if(rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(stat != null) {
stat.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
/**
* 释放数据库资源
* @param stat
* @param conn
*/
public void close(Statement stat,Connection conn) {
close(null,stat,conn);
}
}
(2)RowMapper.java
package util;
import java.sql.ResultSet;
import java.sql.SQLException;
public interface RowMapper {
public T mapRow(ResultSet rs) throws SQLException;
}
1.add.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>
<html>
<head>
\<title>My JSP 'add.jsp' starting page</title>
</head>
<%@include file=“top.jsp” %>
<body>
<%
String code = request.getParameter(“code”);
if(code != null && “1”.equals(code)){
%>
<h3 style=“color:reed”>请填写完整</h3>
<%
} else if(“2”.equals(code)){
%>
<h3 style=“color:red”>商品价格请输入数字</h3>
<%
}
%>
<h2>添加新商品</h2><br>
<form action=“save.jsp” method=“post”>
商品名称:<input type=“text” name=“proname”><br/>
商品价格:<input type=“text” name=“price”><br/>
<input type=“submit” value=“添加”>
<input type=“reset” value=“取消”>
</form>
</body>
</html>
2. del.jsp
<%@ page language=“java” import=“java.util." pageEncoding=“utf-8”%>
<%@ page import="dao.” %>
<%
String id = request.getParameter(“id”);
ProDao dao = new ProDao();
dao.delById(Integer.valueOf(id));
response.sendRedirect(“home.jsp”);
%>
3.edit.jsp
<%@ page language=“java” import=“java.util." pageEncoding=“utf-8”%>
<%@ page import="entity.” %>
%>
<h3 style=“color:red”>请填写完整</h3>
<%} else if(“2”.equals(code)) {%>
<h3 style=“color:red”>商品价格请输入数字</h3>
<%}%>
<%
Pro p = (Pro)request.getAttribute(“pro”);
%>
<h2>修改商品</h2><br/>
<form action=“new.jsp” method=“post”>
<input type=“hidden” name=“id” value="<%= p.getId() %>">
商品名称:<input type=“text” name=“proname” value="<%= p.getProname() %>"><br/>
商品价格:<input type=“text” name=“price” value="<%= p.getPrice() %>"><br/>
<input type=“submit” value=“修改”>
</form>
</body>
</html>
4.exit.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>
<%
session.invalidate();
response.sendRedirect(“index.jsp”);
%>
5.home.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%>
<%@ page import=“entity." %>
<%@ page import="dao.” %>
<%@ page import=“java.util.List”%>
<%
User user = (User)session.getAttribute("user");
if(user != null){
ProDao prodao = new ProDao();
List<Pro> list = prodao.findAll();
request.setAttribute("proList",list);
request.getRequestDispatcher("main.jsp").forward(request,response);
return;
}else{
response.sendRedirect("index.jsp?code = 10003");
return;
}
%>
6.index.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%>
<%@include file=“top.jsp” %>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<body>
<%
String code = request.getParameter(“code”);
if(code != null && “1000000”.equals(code)){
%>
<h3 style=“color:red”>用户名或密码错误!</h3>
<%
}
%>
<form action=“login.jsp” method=“post”>
用户名:<input type="text" name="username" ><br/>
密 码:<input type="password" name="password" ><br/>
<input type="submit" name="ok">
<input type="reset" name="cancel">
</form>
</body>
</html>
7. login.jsp
<%@ page language=“java” pageEncoding=“UTF-8”%>
<%@ page import=“entity.User” %>
<%@ page import=“entity.Pro” %>
<%@ page import=“dao.UserDao” %>
<%@ page import=“dao.ProDao” %>
<%@ page import=“java.util.List” %>
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("username");
String pwd = request.getParameter("password");
if(name == null || "".equals(name) || pwd == null || "".equals(pwd)){
response.sendRedirect("index.jsp?code = 10002");
return;
}
UserDao dao = new UserDao();
User user = dao.findByName(name);
if(user != null && user.getPassword().equals(pwd)){
session.setAttribute("user",user);
response.sendRedirect("home.jsp");
return;
}else{
response.sendRedirect("index.jsp?code = 10001");
}
%>
8.main.jsp
<%@ page language=“java” import=“java.util." pageEncoding=“utf-8”%>
<%@ page import=“java.util.List” %>
<%@ page import="entity.” %>
<%@ page import=“dao.*” %>
<%@include file=“top.jsp” %>
<html>
<head>
<%
List list = (List)request.getAttribute(“proList”);
%>
</head>
<body>
<a href=“add.jsp”>添加新商品/
<table border = “1” width=“70%”>
<tr>
<th>商品</th>
<th>价格</th>
<th>操作</th>
</tr>
<%
for(Pro li:list){
%>
<tr>
<td><%= li.getProname() %></td>
<td><%= li.getPrice() %></td>
<td>
<a href=“update.jsp?id=<%= li.getId() %>”>修改</a>
<a href=“del.jsp?id=<%= li.getId() %>”>删除</a>
</td>
</tr>
<%} %>
</table>
</body>
</html>
9.new.jsp
<%@ page language=“java” import=“java.util." pageEncoding=“utf-8”%>
<%@ page import="entity.”%>
<%@ page import=“dao.*”%>
<%
request.setCharacterEncoding(“utf-8”);
String id = request.getParameter("id");
String proName = request.getParameter("proname");
String price = request.getParameter("price");
Pro p = new Pro();
p.setId(Integer.valueOf(id));
p.setPrice(Float.valueOf(price));
p.setProname(proName);
ProDao dao = new ProDao();
if(dao.update(p)){
response.sendRedirect("home.jsp");
}
%>
10.save.jsp
<%@ page language=“java” import=“java.util." pageEncoding=“utf-8”%>
<%@ page import="dao.” %>
<%
request.setCharacterEncoding(“utf-8”);
String proName = request.getParameter("proname");
String price = request.getParameter("price");
if(proName == null || "".equals(proName) || price == null || "".equals(price)){
response.sendRedirect("add.jsp ? code = 1");
return;
}
try{
float f = Float.valueOf(price);
ProDao dao = new ProDao();
if(dao.save(proName,f)){
response.sendRedirect("home.jsp");
return;
}
}catch(NumberFormatException e){
response.sendRedirect("add.jsp ? code = 2");
return;
}
%>
11.top.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>
<h1 style=“color:blue;text-align: center” >超市商品库存系统</h1>
<br>
<div style=“float: right;”><a href=“exit.jsp”>安全退出</a></div>
12.update.jsp
<%@ page language=“java” import=“dao." pageEncoding=“utf-8”%>
<%@ page import="entity.” %>
<%
String id = request.getParameter(“id”);
Pro p = new ProDao().findById(Integer.valueOf(id));
request.setAttribute(“pro”,p);
request.getRequestDispatcher(“edit.jsp”).forward(request,response);
%>