├── .gitignore
├── README.md
├── WebContent
├── META-INF
│ └── MANIFEST.MF
├── WEB-INF
│ ├── lib
│ │ └── javasqlxt.jar
│ └── web.xml
├── about.jsp
├── error_404.jsp
├── goods
│ └── info.jsp
├── index.jsp
├── search.jsp
├── site
│ ├── footer.jsp
│ ├── head.jsp
│ ├── header.jsp
│ └── personal
│ │ ├── auditing.jsp
│ │ ├── history.jsp
│ │ ├── info.jsp
│ │ ├── like.jsp
│ │ ├── mess.jsp
│ │ ├── push.jsp
│ │ ├── pushed.jsp
│ │ └── shopcart.jsp
├── src
│ ├── bootstrap3
│ │ ├── css
│ │ │ ├── bootstrap-theme.css
│ │ │ ├── bootstrap-theme.css.map
│ │ │ ├── bootstrap-theme.min.css
│ │ │ ├── bootstrap.css
│ │ │ ├── bootstrap.css.map
│ │ │ └── bootstrap.min.css
│ │ ├── fonts
│ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ └── glyphicons-halflings-regular.woff2
│ │ └── js
│ │ │ ├── bootstrap.js
│ │ │ ├── bootstrap.min.js
│ │ │ └── npm.js
│ ├── css
│ │ ├── main.css
│ │ └── sign.css
│ └── jquery2
│ │ ├── jquery.js
│ │ └── jquery.min.js
├── static
│ ├── goods_img
│ │ ├── 1.jpg
│ │ ├── 10.jpg
│ │ ├── 11.jpg
│ │ ├── 12.jpg
│ │ ├── 13.jpg
│ │ ├── 14.jpg
│ │ ├── 15.jpg
│ │ ├── 16.jpg
│ │ ├── 17.jpg
│ │ ├── 18.jpg
│ │ ├── 19.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── 5.jpg
│ │ ├── 6.jpg
│ │ ├── 7.jpg
│ │ ├── 8.jpg
│ │ └── 9.jpg
│ ├── image
│ │ ├── ac_24.png
│ │ └── ac_31.png
│ └── user_img
│ │ ├── 0
│ │ ├── 1
│ │ ├── 9
│ │ ├── 10
│ │ ├── 123
│ │ └── 1019
├── test
│ └── tips.txt
└── user
│ ├── agreement.jsp
│ ├── login.jsp
│ ├── personal.jsp
│ ├── register.jsp
│ └── sendmess.jsp
├── doc
├── 合肥学院二手物品交易网站.ppt
└── 需求分析 - 合肥学院物品交易网站的实现.doc
├── sql
└── hfuu_shop.sql
└── src
└── src
├── dbHandle
├── CollectHandle.java
├── GoodsHandle.java
├── MessHandle.java
├── OrderHandle.java
├── ShopCartHandle.java
└── UserHandle.java
├── dbc
└── DatabaseConnection.java
├── servlet
├── AuditingServlet.java
├── AutoLogin.java
├── BuyAllShopcartServlet.java
├── CharSet.java
├── CollectServlet.java
├── ExitLoginServlet.java
├── GoodsCheckServlet.java
├── LoginServlet.java
├── MessCheckServlet.java
├── OrderCheckServlet.java
├── RegisterServlet.java
├── RemoveCollectServlet.java
├── RemoveMessServlet.java
├── RemoveShopCartServlet.java
├── ShoppingCartServlet.java
├── UpdateUserImgServlet.java
└── UpdateUserInfoServlet.java
├── tools
├── GetCookie.java
├── IntHolder.java
├── LoginVerify.java
├── MD5.java
└── StaticVar.java
└── vo
├── Goods.java
├── Mess.java
├── Order.java
└── User.java
/.gitignore:
--------------------------------------------------------------------------------
1 | build/*
2 | .settings/*
3 | .project
4 | .classpath
5 | bin/*
6 | /build/
7 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## 使用原生Jsp和Servlet实现的简单二手物品交易网站
2 |
3 | 引用了`jquery`和`bootstrap`,已经包含在`WebContent/src/`中了
4 |
5 | 使用了eclipse默认的的文件结构, 测试和部署的简单方法是使用eclipse导出war文件, 其他ide自行更改文件结构。sql/hfuu_shop.sql包含了完整的数据库结构和测试数据。
6 |
7 | 功能实现:
8 |
9 | - 商品发布
10 | - 商品浏览、购买
11 | - 购物车(批量购买)
12 | - 消息系统
13 | - 自动消息通知(审核结果、商品变动)
14 | - 站内私信
15 | - 个人中心
16 | - 管理员商品审核
17 | - 消息发送/接收
18 | - 购买历史
19 | - 发布历史
20 | - 收藏夹
21 | - 个人信息
22 | - 物品搜索
23 | - 物品、消息、收藏夹的分页
24 |
--------------------------------------------------------------------------------
/WebContent/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Class-Path:
3 |
4 |
--------------------------------------------------------------------------------
/WebContent/WEB-INF/lib/javasqlxt.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/veekxt/hfuu_shop/e7466f87487b4e6a5817e8cd42bbbaa2401d51eb/WebContent/WEB-INF/lib/javasqlxt.jar
--------------------------------------------------------------------------------
/WebContent/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
2 |
127 |
128 |129 | ${good.getName()} 130 |
131 |
132 |
类型:<%=typeName %>
134 |
135 |
137 | 价格:${good.price}
138 |
139 |
143 | 发布者:
144 | ${Procuteuser.getName()}
146 | (联系:${Procuteuser.getEmail()}
147 |
148 | 或
149 | 站内信)
150 |
151 |
153 | 发布时间:<%=dateStr %>
154 |
155 |
157 | 物品说明:<%=good.getContent().replaceAll("<", "<").replaceAll(">", ">").replaceAll("\n", "
") %>
158 |
用户 | 65 |发布于 | 66 |物品名 | 67 |详情 | 68 |操作 | 69 |
---|---|---|---|---|
76 | <% 77 | if(userHandle.findById(goods.getProducter_id()).getName()==null){ 78 | out.print(userHandle.findById(goods.getProducter_id()).getEmail()); 79 | } 80 | else{ 81 | out.print(userHandle.findById(goods.getProducter_id()).getName()); 82 | } 83 | %> 84 | | 85 |<%=new SimpleDateFormat("yyyy/MM/dd HH:mm").format(goods.getCreatDate())%> | 86 |<%=""+goods.getName()+""%> 87 | | 88 |[详情] 90 | | 91 |92 | | 100 | 99 |
<% 118 | if(user.getId()==1){ 119 | out.print(mess.getMessText()); 120 | }else{ 121 | out.print(mess.getMessText().replaceAll("<", "<").replaceAll(">", ">")); 122 | } 123 | %>124 |
物品:
");
76 | for(int i=0;i
购买成功!
"); 80 | } 81 | if(listErr.size()>0){ 82 | resOut.println("物品:
");
83 | for(int i=0;i
购买失败
"); 87 | } 88 | } 89 | 90 | shopCartHandle.close(); 91 | } 92 | 93 | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 94 | doGet(request, response); 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /src/src/servlet/CharSet.java: -------------------------------------------------------------------------------- 1 | package src.servlet; 2 | 3 | import java.io.IOException; 4 | import javax.servlet.Filter; 5 | import javax.servlet.FilterChain; 6 | import javax.servlet.FilterConfig; 7 | import javax.servlet.ServletException; 8 | import javax.servlet.ServletRequest; 9 | import javax.servlet.ServletResponse; 10 | import javax.servlet.annotation.WebFilter; 11 | 12 | @WebFilter("/CharSet") 13 | public class CharSet implements Filter { 14 | public CharSet() { 15 | } 16 | 17 | public void destroy() { 18 | } 19 | //过滤器:设置编码,统一使用UTF-8 20 | public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 21 | request.setCharacterEncoding("UTF-8"); 22 | response.setCharacterEncoding("UTF-8"); 23 | chain.doFilter(request, response); 24 | } 25 | 26 | public void init(FilterConfig fConfig) throws ServletException { 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/src/servlet/CollectServlet.java: -------------------------------------------------------------------------------- 1 | package src.servlet; 2 | 3 | import java.io.IOException; 4 | import javax.servlet.ServletException; 5 | import javax.servlet.annotation.WebServlet; 6 | import javax.servlet.http.HttpServlet; 7 | import javax.servlet.http.HttpServletRequest; 8 | import javax.servlet.http.HttpServletResponse; 9 | 10 | import src.dbHandle.*; 11 | import src.tools.LoginVerify; 12 | import src.vo.Goods; 13 | import src.vo.User; 14 | 15 | /** 16 | * Servlet implementation class collectServlet 17 | */ 18 | @WebServlet("/CollectServlet") 19 | public class CollectServlet extends HttpServlet { 20 | private static final long serialVersionUID = 1L; 21 | 22 | /** 23 | * @see HttpServlet#HttpServlet() 24 | */ 25 | public CollectServlet() { 26 | super(); 27 | // TODO Auto-generated constructor stub 28 | } 29 | 30 | /** 31 | * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 32 | */ 33 | //添加一个物品到收藏夹 34 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 35 | if (LoginVerify.isLogin(request)) { 36 | User user = (User) request.getSession().getAttribute("loginUser"); 37 | int userId = user.getId(); 38 | int goodsId = Integer.parseInt(request.getParameter("goodsId")); 39 | CollectHandle collectHandle = new CollectHandle(); 40 | GoodsHandle goodsHandle = new GoodsHandle(); 41 | Goods goods=null; 42 | try { 43 | goods=goodsHandle.findById(goodsId); 44 | } catch (Exception e1) { 45 | e1.printStackTrace(); 46 | }finally { 47 | goodsHandle.close(); 48 | } 49 | try { 50 | if(goods!=null && goods.getStates()==2 && collectHandle.doCreate(userId, goodsId)){ 51 | response.getWriter().print("success"); 52 | } 53 | else{ 54 | response.getWriter().print("error"); 55 | } 56 | } catch (Exception e) { 57 | e.printStackTrace(); 58 | response.getWriter().print("error"); 59 | }finally { 60 | collectHandle.close(); 61 | } 62 | } else { 63 | response.getWriter().print("unLogin"); 64 | } 65 | } 66 | 67 | /** 68 | * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 69 | */ 70 | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 71 | // TODO Auto-generated method stub 72 | doGet(request, response); 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /src/src/servlet/ExitLoginServlet.java: -------------------------------------------------------------------------------- 1 | package src.servlet; 2 | 3 | import java.io.IOException; 4 | import javax.servlet.ServletException; 5 | import javax.servlet.annotation.WebServlet; 6 | import javax.servlet.http.Cookie; 7 | import javax.servlet.http.HttpServlet; 8 | import javax.servlet.http.HttpServletRequest; 9 | import javax.servlet.http.HttpServletResponse; 10 | 11 | @WebServlet("/ExitLoginServlet") 12 | public class ExitLoginServlet extends HttpServlet { 13 | private static final long serialVersionUID = 1L; 14 | 15 | public ExitLoginServlet() { 16 | super(); 17 | } 18 | //退出登录,移除cookies和session属性 19 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 20 | request.getSession().setAttribute("isLogined", false); 21 | Cookie[] cookies=request.getCookies(); 22 | for(int i=0;i