一、需求分析
用JSP/Servlet技术开发一个网上书店,主要完成以下功能:
用户:注册与登录,用户信息的修改
图书:图书显示,图书的购买,购物车的管理。图书的添加,删除,查询
二、系统设计
1)创建相关的数据库表;
2)使用MVC架构或者JSP+JavaBean,至少一个功能模块使用MVC;
3)在JSP中综合使用EL 表达式,JSTL标记库,JavaBean ;
4)使用过滤器完成请求参数编码的设置或登录权限的控制;
5)正确完成Servlet和过滤器的配置
6)使用数据库连接池进行数据库连
三、程序流程图
四、各功能实现代码
4.1管理员功能实现
4.1.1管理员类
4.1.2管理员类dao接口
4.1.3管理员类dao接口的实现方法(操作数据库)
package bean;
import utils.JDBCUtil;
import java.sql.*;
public class adminDaoImpl implements adminDao{
public void addadmin(admin a) {
//连接数据库
Connection conn = null;
PreparedStatement psql=null;
ResultSet rs=null;
try {
conn = JDBCUtil.getConnection();
String sql = "insert into admin value (?,?)";
conn = JDBCUtil.getConnection();
psql=conn.prepareStatement(sql);
psql.setString(1,a.getName());
psql.setString(2,a.getPassword());
int i = psql.executeUpdate();
if(i>0){
System.out.println("插入成功!");
}else {
System.out.println("插入失败!");
}
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.close(psql, conn);
}
}
public admin queryadmin(String username) {
//连接数据库
Connection conn = null;
Statement statement=null;
ResultSet rs=null;
admin a=new admin();
try {
conn = JDBCUtil.getConnection();
statement = conn.createStatement();
String sql = "select * from admin where name ='" + username + "'";
rs=statement.executeQuery(sql);
while(rs.next()){
a.setName(rs.getString("name"));
a.setPassword(rs.getString("password"));
}
rs.close();
conn.close();
return a;
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.close(statement, conn);
}
return a;
}
}
4.1.4管理员登录页面
4.1.5管理员注册页面
4.1.5管理员登录的service方法
import bean.UserDaoImpl;
import bean.adminDao;
import bean.adminDaoImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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;
@WebServlet(name = "adminLoginServlet",urlPatterns = "/adminLoginServlet")
public class adminLoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码和响应类型
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
HttpSession session =request.getSession(true);
// 1.获得用户名和密码
// 2.验证用户名和密码是否正确 "zhou" "123456"
String adminname=request.getParameter("adminName");
String password=request.getParameter("adminPasswd");
//获得响应的输出流
PrintWriter pw=response.getWriter();
adminDao dao = new adminDaoImpl();
String name=dao.queryadmin(adminname).getName();
String passwd=dao.queryadmin(adminname).getPassword();
if(adminname.equals(name)&&password.equals(passwd)){
session.setAttribute("admin",name);
request.getRequestDispatcher("/adminnavcation.jsp").forward(request,response);
}else {
//验证失败
pw.println("<font color='green'><h2>登录失败</h2></font>");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
管理员注册的方法
import utils.JDBCUtil;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@WebServlet(name = "adminRegistServlet",urlPatterns = "/adminRegistServlet")
public class adminRegistServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("html/text;charset=utf-8");
//1.获取数据
String name = request.getParameter("name");
String password = request.getParameter("password");
//2.判断用户名不能为空
if (name==null||"".equals(name)){
System.out.println("用户名不能为空!");
String s = "用户名不能为空";
response.getWriter().write(s);
}
//连接数据库,插入数据
Connection conn = null;
PreparedStatement psta = null;
String sql = "insert into admin value (?,?)";
try {
conn = JDBCUtil.getConnection();
psta = conn.prepareStatement(sql);
psta.setString(1,name);
psta.setString(2,password);
psta.execute();
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.close(psta,conn);
}
response.sendRedirect("adminlogin.html");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
4.1.6管理员登陆后的显示的主界面
4.1.7管理员添加商品的方法
import utils.JDBCUtil;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@WebServlet(name = "adminaddbooksServlet",urlPatterns = "/adminaddbooksServlet")
public class adminaddbooksServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("html/text;charset=utf-8");
//1.获取数据
String name = request.getParameter("name");
String writer = request.getParameter("writer");
String type=request.getParameter("type");
String id=request.getParameter("id");
int number= Integer.parseInt(request.getParameter("number"));
int price= Integer.parseInt(request.getParameter("price"));
//2.判断用户名不能为空
/*if (name==null||"".equals(name)&&writer==null||"".equals(writer)&&type==null||"".equals(type)&&id==null||"".equals(id)&&number==0||"".equals(price)&&writer==null||"".equals(price)){
String s = "书籍信息要写完整";
response.getWriter().write(s);
response.sendRedirect("addbooks.html");
}*/
//连接数据库,插入数据
Connection conn = null;
PreparedStatement psta = null;
String sql = "insert into book value (?,?,?,?,?,?)";
try {
conn = JDBCUtil.getConnection();
psta = conn.prepareStatement(sql);
psta.setString(1,name);
psta.setString(2,writer);
psta.setString(3,type);
psta.setString(4,id);
psta.setInt(5,number);
psta.setInt(6,price);
psta.execute();
/*int i = psta.executeUpdate(sql);
if(i>0){
//request.getRequestDispatcher("adminlogin.html").forward(request,response);
response.sendRedirect("adminnavcation.jsp");
}else {
System.out.println("插入失败!");
}*/
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil.close(psta,conn);
}
response.sendRedirect("adminnavcation.jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(