JAVA WEB 购物车
登录首页
商品页
搜索商品
项目架构
加入购物车servlet(addshopcar)
package com.shop.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.shop.javaBean.Item;
import com.shop.javaBean.ShopCar;
public class addshopcar extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ShopCar car = (ShopCar) request.getSession().getAttribute("car");
if(car==null) {
car = new ShopCar();
request.getSession().setAttribute("car", car);
}
Item item = new Item(request.getParameter("itemname"),request.getParameter("price"),request.getParameter("icon"));
car.additem(item);
response.sendRedirect("/shop/shopcar.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
del购物车servlet(del)
package com.shop.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.shop.javaBean.Item;
import com.shop.javaBean.ShopCar;
public class del extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
ShopCar car = (ShopCar) request.getSession().getAttribute("car");
Item item=new Item(request.getParameter("itemname"),request.getParameter("price"),request.getParameter("icon"));
car.removeitem(item);
response.sendRedirect("/shop/shopcar.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
exit购物车servlet(del)
package com.shop.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class exit extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
HttpSession session = request.getSession();
session.invalidate();
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
login购物车servlet(del)
package com.shop.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.shop.daoimpl.UserDaoImpl;
public class login extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String username=(String) request.getParameter("username");
String password=(String) request.getParameter("password");
UserDaoImpl user = new UserDaoImpl();
if(user.isLogin(username, password)) {
request.getSession().setAttribute("username", username);
request.getSession().setAttribute("password", password);
request.getSession().setAttribute("money", user.getMoney(username, password));
request.getSession().setAttribute("itemlist", user.getItem());
response.sendRedirect("/shop/item.jsp");
return;
}else {
request.setAttribute("logininfo", "用户名或密码错误");
request.getRequestDispatcher("/index.jsp").forward(request, response);
//response.sendRedirect("/shop/index.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
search购物车servlet(sea)
package com.shop.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.shop.daoimpl.UserDaoImpl;
public class sea extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String search=request.getParameter("search");
System.out.println(search);
UserDaoImpl user = new UserDaoImpl();
request.getSession().setAttribute("search", search);
request.getSession().setAttribute("seaitemlist", user.getseaItem(search));
response.sendRedirect("/shop/seaitem.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
数据库dao接口
package com.shop.daoimpl;
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.HashMap;
import java.util.List;
import java.util.Map;
import com.shop.javaBean.Item;
public class UserDaoImpl{
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=shopDB;";
String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbname="sa";
String dbpass="123456";
Connection conn;
Statement stmt;
PreparedStatement ps;
public UserDaoImpl(){
try {
Class.forName(driverName);
conn = DriverManager.getConnection(url, dbname, dbpass);
System.out.println("数据库连接成功");
} catch (SQLException e) {
System.out.println("数据库连接错误!!!");
}catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
public boolean isLogin(String username,String password) {
String sql = "select * from shopuser where username="+username+" and password="+password;
ResultSet rs;
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
if(rs.next()) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
public String getMoney(String username,String password) {
String sql = "select money from shopuser where username="+username+" and password="+password;
ResultSet rs;
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
if(rs.next()) {
return rs.getString("money");
}
} catch (SQLException e) {
e.printStackTrace();
}
return "0";
}
public Map<String,String> getPricebySname() {
String sql = "select * from shopitem ";
ResultSet rs;
Map<String,String> map=new HashMap<String,String>();
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
String sname=rs.getString("sname");
String price=rs.getString("price");
map.put(sname, price);
}
} catch (SQLException e) {
e.printStackTrace();
}
return map;
}
public List<Item> getItem() {
String sql = "select * from shopitem";
ResultSet rs;
Item item;
List<Item> list=new ArrayList<Item>();
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
String sname=rs.getString("sname");
String price=rs.getString("price");
String icon=rs.getString("icon");
item=new Item(sname,price,icon);
list.add(item);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public List<Item> getseaItem(String sea) {
String sql = "select * from shopitem";
ResultSet rs;
Item item;
List<Item> list=new ArrayList<Item>();
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
String sname=rs.getString("sname");
String price=rs.getString("price");
String icon=rs.getString("icon");
if(sname.indexOf(sea)>-1) {
item=new Item(sname,price,icon);
list.add(item);}
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
login检查 权限控制
package com.shop.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class loginFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
HttpSession session = req.getSession();
System.out.println(req.getRequestURI());
if(req.getRequestURI() .equals("/shop/")
||req.getRequestURI() .equals("/shop/index.jsp")
||req.getRequestURI() .equals("/shop/servlet/login")
||req.getRequestURI() .equals("/shop/res/bg.jpg"
)){
chain.doFilter(request, response);
return;
}else if(session.getAttribute("username")!=null&&session.getAttribute("password")!=null){
System.out.println("username不为空");
chain.doFilter(request, response);
return;
}else{
System.out.println("session 空");
resp.sendRedirect("index.jsp");
return;
}
}
public void init(FilterConfig fConfig) throws ServletException {
}
public void destroy() {
}
}
java bean
package com.shop.javaBean;
public class Item extends Object{
private String name;//名字
private String price;//价格
private String icon;//图片
public Item(String name, String price, String icon) {
this.name = name;
this.price = price;
this.icon = icon;
}
public String getName() {
return name;
}
public String getPrice() {
return price;
}
public String getIcon() {
return icon;
}
@Override
public boolean equals(Object obj) {
return true;
}
}
package com.shop.javaBean;
import java.util.ArrayList;
import java.util.List;
public class ShopCar {
List<Item> list;
public List<Item> getList() {
return list;
}
public ShopCar(){
list = new ArrayList<Item>();
}
public void additem(Item item) {
list.add(item);
}
public void removeitem(Item item) {
list.remove(item);
}
}
数据库sql server 2008 r2
USE [master]
GO
/****** Object: Database [shopDB] Script Date: 12/20/2019 21:52:19 ******/
CREATE DATABASE [shopDB] ON PRIMARY
( NAME = N'shopDB', FILENAME = N'D:\ProgramFiles\SQLserver\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\shopDB.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'shopDB_log', FILENAME = N'D:\ProgramFiles\SQLserver\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\shopDB_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [shopDB] SET COMPATIBILITY_LEVEL = 100
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [shopDB].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [shopDB] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [shopDB] SET ANSI_NULLS OFF
GO
ALTER DATABASE [shopDB] SET ANSI_PADDING OFF
GO
ALTER DATABASE [shopDB] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [shopDB] SET ARITHABORT OFF
GO
ALTER DATABASE [shopDB] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [shopDB] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [shopDB] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [shopDB] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [shopDB] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [shopDB] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [shopDB] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [shopDB] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [shopDB] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [shopDB] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [shopDB] SET DISABLE_BROKER
GO
ALTER DATABASE [shopDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [shopDB] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [shopDB] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [shopDB] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [shopDB] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [shopDB] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [shopDB] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [shopDB] SET READ_WRITE
GO
ALTER DATABASE [shopDB] SET RECOVERY FULL
GO
ALTER DATABASE [shopDB] SET MULTI_USER
GO
ALTER DATABASE [shopDB] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [shopDB] SET DB_CHAINING OFF
GO
EXEC sys.sp_db_vardecimal_storage_format N'shopDB', N'ON'
GO
USE [shopDB]
GO
/****** Object: Table [dbo].[shopuser] Script Date: 12/20/2019 21:52:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[shopuser](
[username] [varchar](50) NOT NULL,
[password] [varchar](50) NULL,
[money] [varchar](50) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[shopitem] Script Date: 12/20/2019 21:52:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[shopitem](
[sname] [varchar](50) NULL,
[price] [varchar](50) NULL,
[icon] [varchar](50) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO