代码注释

xhy_branch
xhy 8 months ago
parent f47e45e9b3
commit 2667721825

@ -0,0 +1,95 @@
package com.itbaizhan.util;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import com.itbaizhan.orm.Tgoods;
import com.itbaizhan.orm.TorderItem;
public class Cart {
// 购物车属性
// 使用一个 Map 存储购物项Map 的 key 是商品的 idvalue 是购物项 TorderItem
protected Map<String, TorderItem> items;
/**
*
* items null HashMap
*/
public Cart() {
if (items == null) {
items = new HashMap<String, TorderItem>(); // 初始化购物车,使用 HashMap 存储购物项
}
}
/**
*
*
*
* @param goodsId ID
* @param orderItem
*/
public void addGoods(String goodsId, TorderItem orderItem) {
// 判断购物车中是否已经存在该商品
if (items.containsKey(goodsId)) { // 如果购物车中已存在该商品
// 获取原有的购物项,更新商品的数量
TorderItem _orderItem = items.get(goodsId); // 获取购物车中原有的购物项
_orderItem.setGoods_quantity(_orderItem.getGoods_quantity() + orderItem.getGoods_quantity()); // 更新数量
items.put(goodsId, _orderItem); // 更新购物车中的该商品项
} else { // 如果购物车中没有该商品
items.put(goodsId, orderItem); // 将新的购物项添加到购物车
}
}
/**
*
* ID
*
* @param goodsId ID
*/
public void delGoods(String goodsId) {
items.remove(goodsId); // 从购物车中删除指定商品
}
/**
*
*
* @param goodsId ID
* @param quantity
*/
public void updateCart(String goodsId, int quantity) {
// 获取购物车中的购物项,并更新数量
TorderItem orderItem = items.get(goodsId);
orderItem.setGoods_quantity(quantity); // 更新数量
items.put(goodsId, orderItem); // 更新购物车中的该商品项
}
/**
*
*
*
* @return
*/
public int getTotalPrice() {
int totalPrice = 0; // 初始化总价为 0
// 遍历购物车中的所有商品
for (Iterator it = items.values().iterator(); it.hasNext();) {
TorderItem orderItem = (TorderItem) it.next(); // 获取当前购物项
Tgoods goods = orderItem.getGoods(); // 获取商品信息
int quantity = orderItem.getGoods_quantity(); // 获取商品数量
totalPrice += goods.getTejia() * quantity; // 计算该商品的总价并累加到总价
}
return totalPrice; // 返回购物车中商品的总价
}
/**
*
* Map key IDvalue
*
* @return
*/
public Map<String, TorderItem> getItems() {
return items; // 返回购物车中的所有商品
}
}

@ -0,0 +1,78 @@
package com.itbaizhan.util;
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;
public class EncodingFilter implements Filter {
// 用于存储编码格式
protected String encoding = null;
// 用于存储 Filter 的配置信息
protected FilterConfig filterConfig = null;
/**
*
*/
public void destroy() {
this.encoding = null; // 清空编码设置
this.filterConfig = null; // 清空过滤器配置
}
/**
*
*
*
* @param request 访
* @param response
* @param chain FilterChain Servlet
* @throws IOException IO
* @throws ServletException Servlet
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// 获取请求的编码格式
String encoding = selectEncoding(request);
// 如果编码格式不为空,则设置请求和响应的编码格式
if (encoding != null) {
request.setCharacterEncoding(encoding); // 设置请求的编码
response.setCharacterEncoding(encoding); // 设置响应的编码
}
// 将请求和响应传递给下一个过滤器或目标资源
chain.doFilter(request, response);
}
/**
*
* web.xml
*
* @param filterConfig
* @throws ServletException
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
// 获取 web.xml 中配置的编码格式参数
this.encoding = filterConfig.getInitParameter("encoding");
}
/**
*
*
*
* @param request
* @return
*/
protected String selectEncoding(ServletRequest request) {
// 返回初始化时配置的编码格式
return (this.encoding);
}
}

@ -0,0 +1,164 @@
package com.itbaizhan.action;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
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 com.itbaizhan.orm.Tgoods;
import com.itbaizhan.orm.Torder;
import com.itbaizhan.orm.TorderItem;
import com.itbaizhan.orm.Tuser;
import com.itbaizhan.service.liuService;
import com.itbaizhan.util.Cart;
// 继承自HttpServlet类这是一个典型的Servlet类用于处理客户端请求
public class buy_servlet extends HttpServlet {
// service方法处理所有客户端请求
// req: HttpServletRequest请求对象res: HttpServletResponse响应对象
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String type = req.getParameter("type"); // 获取URL传来的type参数决定执行的操作
// 判断type的值调用不同的操作方法
if (type.endsWith("addToCart")) {
addToCart(req, res); // 如果操作是添加到购物车
}
if (type.endsWith("orderSubmit")) {
orderSubmit(req, res); // 如果操作是提交订单
}
if (type.endsWith("myorder")) {
myorder(req, res); // 如果操作是查看我的订单
}
if (type.endsWith("orderDetail")) {
orderDetail(req, res); // 如果操作是查看订单明细
}
}
// 添加商品到购物车
public void addToCart(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String goods_id = req.getParameter("goods_id"); // 获取商品ID
int quantity = Integer.parseInt(req.getParameter("quantity")); // 获取商品数量
// 根据商品ID获取商品详情
Tgoods goods = liuService.getGoods(goods_id);
// 创建订单项对象,设置商品和商品数量
TorderItem orderItem = new TorderItem();
orderItem.setGoods(goods);
orderItem.setGoods_quantity(quantity);
// 获取session中的购物车对象
HttpSession session = req.getSession();
Cart cart = (Cart) session.getAttribute("cart");
// 将商品添加到购物车
cart.addGoods(goods_id, orderItem);
// 更新session中的购物车
session.setAttribute("cart", cart);
// 设置成功信息和跳转路径
req.setAttribute("message", "操作成功");
req.setAttribute("path", "site/cart/mycart.jsp"); // 跳转到购物车页面
// 跳转到成功页面
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res); // 跳转到目标页面
}
// 提交订单
public void orderSubmit(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String songhuodizhi = req.getParameter("songhuodizhi"); // 获取送货地址
String fukuanfangshi = req.getParameter("fukuanfangshi"); // 获取付款方式
// 从session中获取购物车对象和当前用户信息
HttpSession session = req.getSession();
Cart cart = (Cart) session.getAttribute("cart");
Tuser user = (Tuser) session.getAttribute("user");
// 创建订单对象并设置相关属性
Torder order = new Torder();
order.setId(String.valueOf(new Date().getTime())); // 设置订单ID使用当前时间戳
order.setBianhao(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date())); // 设置订单编号
order.setShijian(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); // 设置下单时间
order.setZhuangtai("no"); // 订单状态,默认是“未支付”
order.setHuifu(""); // 订单回复信息
order.setSonghuodizhi(songhuodizhi); // 送货地址
order.setFukuanfangshi(fukuanfangshi); // 付款方式
order.setJine(cart.getTotalPrice()); // 总金额
order.setUser_id(user.getId()); // 用户ID
// 保存订单到数据库
liuService.saveOrder(order);
// 遍历购物车中的商品项,保存订单项信息
for (Iterator it = cart.getItems().values().iterator(); it.hasNext();) {
TorderItem orderItem = (TorderItem) it.next(); // 获取购物车中的每一项商品
String id = String.valueOf(new Date().getTime()); // 创建一个新的订单项ID
String order_id = order.getId(); // 获取订单ID
String goods_id = orderItem.getGoods().getId(); // 获取商品ID
int goods_quantity = orderItem.getGoods_quantity(); // 获取商品数量
// 保存订单项信息
liuService.saveOrderItem(id, order_id, goods_id, goods_quantity);
}
// 清空购物车
cart.getItems().clear();
session.setAttribute("cart", cart);
// 将订单信息传递到页面
req.setAttribute("order", order);
req.getRequestDispatcher("site/order/orderSubmit.jsp").forward(req, res); // 跳转到订单提交页面
}
// 查看我的订单
public void myorder(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
HttpSession session = req.getSession();
Tuser user = (Tuser) session.getAttribute("user");
// 从数据库获取当前用户的所有订单
req.setAttribute("orderList", liuService.orderList(user.getId()));
req.getRequestDispatcher("site/order/myorder.jsp").forward(req, res); // 跳转到我的订单页面
}
// 查看订单明细
public void orderDetail(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String order_id = req.getParameter("order_id"); // 获取订单ID
// 打印订单ID调试用
System.out.println(order_id + "DD");
// 从数据库获取订单项信息
req.setAttribute("orderItemList", liuService.orderItemList(order_id));
req.getRequestDispatcher("site/order/orderDetail.jsp").forward(req, res); // 跳转到订单明细页面
}
// 跳转到目标页面
public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) {
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI);
try {
dispatch.forward(request, response); // 转发请求到目标页面
} catch (ServletException | IOException e) {
e.printStackTrace(); // 异常处理
}
}
// 初始化Servlet配置
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
// 销毁Servlet通常用来释放资源
public void destroy() {
}
}

@ -0,0 +1,88 @@
package com.itbaizhan.service;
import javax.servlet.http.HttpSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import com.itbaizhan.util.Cart;
/**
* (cartService)
*
*
* 使 session
*/
public class cartService {
/**
*
*
* @param goodsId ID
* @param quantity
* @return ("yes" )
*/
public String modiNum(String goodsId, int quantity) {
String result = ""; // 初始化操作结果为空
// 获取 WebContext 上下文
WebContext ctx = WebContextFactory.get(); // 通过 DWR (Direct Web Remoting) 获取 WebContext
HttpSession session = ctx.getSession(); // 获取当前会话对象
// 获取购物车对象
Cart cart = (Cart) session.getAttribute("cart");
// 更新购物车中的商品数量
cart.updateCart(goodsId, quantity);
// 更新 session 中的购物车对象
session.setAttribute("cart", cart);
// 设置操作结果为 "yes" 表示成功
result = "yes";
return result;
}
/**
*
*
* @param goodsId ID
* @return ("yes" )
*/
public String delGoodsFromCart(String goodsId) {
// 获取 WebContext 上下文
WebContext ctx = WebContextFactory.get(); // 通过 DWR 获取 WebContext
HttpSession session = ctx.getSession(); // 获取当前会话对象
// 获取购物车对象
Cart cart = (Cart) session.getAttribute("cart");
// 从购物车中删除指定商品
cart.delGoods(goodsId);
// 更新 session 中的购物车对象
session.setAttribute("cart", cart);
return "yes"; // 返回成功标志
}
/**
*
*
* @return ("yes" )
*/
public String clearCart() {
// 获取 WebContext 上下文
WebContext ctx = WebContextFactory.get(); // 通过 DWR 获取 WebContext
HttpSession session = ctx.getSession(); // 获取当前会话对象
// 获取购物车对象
Cart cart = (Cart) session.getAttribute("cart");
// 清空购物车中的所有商品
cart.getItems().clear();
// 更新 session 中的购物车对象
session.setAttribute("cart", cart);
return "yes"; // 返回成功标志
}
}

@ -0,0 +1,61 @@
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script language="javascript">
function c()//判断是否有菜品类别信息输入
{
if(document.formAdd.name.value=="")
{
alert("请输入类别名称");
return false;
}
document.formAdd.submit();//输入菜品类别信息,提交
}
</script>
</head>
<body leftmargin="2" topmargin="9" background='<%=path %>/img/allbg.gif'>
<form action="<%=path %>/catelog?type=catelogAdd" name="formAdd" method="post">
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="4" background="<%=path %>/img/tbg.gif">&nbsp;&nbsp;</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
类别名称:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="text" name="name" size="40"/>
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
&nbsp;
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="button" value="提交" onclick="c()"/>&nbsp;
<input type="reset" value="重置"/>&nbsp;
</td>
</tr>
</table>
</form>
</body>
</html>

@ -0,0 +1,70 @@
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script language="javascript">
function catelogDel(id)//确定删除确定后跳转界面删除菜品类别的id
{
if(confirm('您确定删除吗?'))
{
window.location.href="<%=path %>/catelog?type=catelogDel&id="+id;
}
}
function catelogAdd()//菜品类别添加
{
var url="<%=path %>/admin/catelog/catelogAdd.jsp";
window.location.href=url;
}
</script>
</head>
<body leftmargin="2" topmargin="2" background='<%=path %>/img/allbg.gif'>
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="4" background="<%=path %>/img/tbg.gif">&nbsp;&nbsp;</td>
</tr>
<tr align="center" bgcolor="#FAFAF1" height="22">
<td width="10%">序号</td>
<td width="80%">类别名称</td>
<td width="10%">操作</td>
</tr>
<c:forEach items="${requestScope.catelogList}" var="catelog" varStatus="sta"><!-- 依次读取菜品信息 -->
<tr align='center' bgcolor="#FFFFFF" height="22">
<td bgcolor="#FFFFFF" align="center">
${sta.index+1}
</td>
<td bgcolor="#FFFFFF" align="center">
${catelog.name}
</td>
<td bgcolor="#FFFFFF" align="center">
<input type="button" value="删除" onclick="catelogDel(${catelog.id})"/>
</td>
</tr>
</c:forEach>
</table>
<table width='98%' border='0'style="margin-top:8px;margin-left: 8px;">
<tr>
<td>
<input type="button" value="添加菜品类别" style="width: 120px;" onclick="catelogAdd()" />
</td>
</tr>
</table>
</body>
</html>

@ -0,0 +1,126 @@
package com.itbaizhan.action;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.itbaizhan.dao.DB;
import com.itbaizhan.orm.Tcatelog;
// 继承HttpServlet类处理关于菜品类别的增删改查操作
public class catelog_servlet extends HttpServlet {
// service方法是Servlet的核心方法接收请求并分发到不同的功能方法
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String type = req.getParameter("type"); // 获取请求的type参数判断要执行的操作类型
// 根据type值决定执行相应的功能
if (type.endsWith("catelogAdd")) {
catelogAdd(req, res); // 添加菜品类别
}
if (type.endsWith("catelogMana")) {
catelogMana(req, res); // 菜品类别管理
}
if (type.endsWith("catelogDel")) {
catelogDel(req, res); // 删除菜品类别
}
}
// 添加菜品类别
public void catelogAdd(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
// 获取请求参数并设置类别的ID使用当前时间戳
String id = String.valueOf(new Date().getTime());
String name = req.getParameter("name").trim(); // 获取类别名称并去除空格
String del = "no"; // 设置删除标记默认为“no”表示未删除
// 编写SQL插入语句将菜品类别信息插入到数据库中
String sql = "insert into t_catelog(id,name,del) values(?,?,?)";
Object[] params = { id, name, del }; // 参数化SQL查询防止SQL注入
// 创建DB对象并执行SQL语句
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行SQL语句
mydb.closed(); // 关闭数据库连接
// 设置操作成功消息
req.setAttribute("msg", "操作成功");
String targetURL = "/common/msg.jsp"; // 跳转页面路径
dispatch(targetURL, req, res); // 跳转到成功提示页面
}
// 菜品类别管理,展示所有未删除的类别
public void catelogMana(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
List catelogList = new ArrayList(); // 存储所有菜品类别的列表
// 查询所有未删除的菜品类别
String sql = "select * from t_catelog where del='no'";
Object[] params = {}; // 查询没有参数
DB mydb = new DB(); // 创建DB对象用于执行查询操作
try {
mydb.doPstm(sql, params); // 执行SQL查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
// 循环处理查询结果
while (rs.next()) { // 如果有更多数据,继续处理
Tcatelog catelog = new Tcatelog(); // 创建Tcatelog对象用于存储每个类别的信息
catelog.setId(rs.getString("id")); // 设置类别ID
catelog.setName(rs.getString("name")); // 设置类别名称
catelogList.add(catelog); // 将类别对象添加到列表中
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace(); // 处理异常
}
mydb.closed(); // 关闭数据库连接
// 将类别列表传递到前端页面
req.setAttribute("catelogList", catelogList);
req.getRequestDispatcher("admin/catelog/catelogMana.jsp").forward(req, res); // 跳转到类别管理页面
}
// 删除菜品类别将del字段设置为“yes”表示删除
public void catelogDel(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
// 获取请求中传递的类别ID并执行SQL更新语句
String sql = "update t_catelog set del='yes' where id=" + req.getParameter("id");
Object[] params = {}; // 删除操作没有额外的参数
DB mydb = new DB(); // 创建DB对象
mydb.doPstm(sql, params); // 执行更新操作
mydb.closed(); // 关闭数据库连接
// 设置操作成功消息
req.setAttribute("msg", "操作成功");
String targetURL = "/common/msg.jsp"; // 跳转页面路径
dispatch(targetURL, req, res); // 跳转到成功提示页面
}
// 跳转到指定页面
public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) {
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); // 获取RequestDispatcher对象
try {
dispatch.forward(request, response); // 将请求转发到目标页面
} catch (ServletException | IOException e) {
e.printStackTrace(); // 处理异常
}
}
// 初始化Servlet配置
public void init(ServletConfig config) throws ServletException {
super.init(config); // 调用父类的初始化方法
}
// 销毁Servlet通常用来释放资源
public void destroy() {
// 可以进行资源释放的操作(此处为空)
}
}

@ -0,0 +1,157 @@
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false" %>
<%@ taglib uri="http://java.fckeditor.net" prefix="FCK"%>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script type="text/javascript" src="<%=path %>/js/popup.js"></script>
<script type='text/javascript' src='<%=path %>/dwr/interface/loginService.js'></script>
<script type='text/javascript' src='<%=path %>/dwr/engine.js'></script>
<script type='text/javascript' src='<%=path %>/dwr/util.js'></script>
<script language="javascript">
var i=0;
function catelogAll()//获得所有菜品类别函数
{
if(i==0)
{
document.getElementById("indicator").style.display="block";
loginService.catelogAll(callback);
i=1;
}
}
function callback(data)
{
document.getElementById("indicator").style.display="none";
DWRUtil.addOptions("catelog_id",data,"id","name");
}
function up() //上传图片函数 通过Popup.js打开对话框
{
var pop=new Popup({ contentType:1,isReloadOnClose:false,width:400,height:200});//pop类型为1内嵌iframe关闭后不重新加载页面
pop.setContent("contentUrl","<%=path %>/upload/upload.jsp");//跳转到上传界面
pop.setContent("title","文件上传");
pop.build();
pop.show();
}
function check()//检查信息是否输入完整
{
if(document.formAdd.catelog_id.value==0)
{
alert("请选择类别");
return false;
}
if(document.formAdd.bianhao.value=="")
{
alert("请输入编号");
return false;
}
if(document.formAdd.mingcheng.value=="")
{
alert("请输入名称");
return false;
}
return true;
}
</script>
</head>
<body leftmargin="2" topmargin="9" background='<%=path %>/img/allbg.gif'>
<form action="<%=path %>/goods?type=goodsAdd" name="formAdd" method="post">
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="4" background="<%=path %>/img/tbg.gif">&nbsp;&nbsp;</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
类别:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<table border="0">
<tr>
<td>
<select name="catelog_id" id="catelog_id" style="width: 250px;" onclick="catelogAll()">
<option value="0">请选择类别</option>
</select>
</td>
<td>
<img id="indicator" src="<%=path %>/images/loading.gif" style="display:none"/>
<!-- 插入载入动画 -->
</td>
</tr>
</table>
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
编号:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="text" name="bianhao" style="width: 250px;"/>
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
名称:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="text" name="mingcheng" style="width: 250px;"/>
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
介绍:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<FCK:editor instanceName="jieshao" basePath="/fckeditor" width="550" height="200" value="" toolbarSet="Basic">
</FCK:editor> <!-- 添加fck编辑器名字叫介绍基于路径/fckeditor初值为空基础形式 -->
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
图片:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="text" name="fujian" id="fujian" style="width: 250px;" readonly="readonly"/>
<input type="button" value="上传" onclick="up()"/> <!-- 上传触发up函数 -->
<input type="hidden" name="fujian" id="fujian"/>
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
价格:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="text" name="shichangjia" value="100" style="width: 250px;" onpropertychange="onchange1(this.value)" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"/>
<!--插入菜品的价格框onpropertychange当输入框属性变化时触发onchange1属性修改数据库菜品价格 下一句为按键之后触发将输入值为非数字的字符替换为空,粘贴之后触发将输入值为非数字的字符替换为空-->
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
&nbsp;
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="submit" value="提交" onclick="return check()"/>&nbsp;
<input type="reset" value="重置"/>&nbsp;
</td>
</tr>
</table>
</form>
</body>
</html>

@ -0,0 +1,24 @@
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<table align="center">
<tr>
<td>
<c:out value="${requestScope.goods.jieshao}" escapeXml="false"></c:out> <!--输出菜品的介绍信息将其中的xml文档解析出来 -->
</td>
</tr>
</table>
</body>
</html>

@ -0,0 +1,118 @@
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script type="text/javascript" src="<%=path %>/js/popup.js"></script>
<script language="JavaScript" src="<%=path %>/js/public.js" type="text/javascript"></script>
<script language="javascript">
function goodsDel(id)//删除之后跳转到删除成功界面并删除菜品的id传入菜品删除的界面
{
if(confirm('您确定删除吗?'))
{
window.location.href="<%=path %>/goods?type=goodsDel&id="+id;
}
}
function goodsPre(id)//添加菜品信息函数
{
window.location.href="<%=path %>/goods?type=goodsPre&id="+id;
}
function goodsAdd()//跳转到goodsAdd.jsp,完成菜品的添加
{
var url="<%=path %>/admin/goods/goodsAdd.jsp";
window.location.href=url;
}
function over(picPath)//鼠标移到图片二字时显示图片的函数,并定义了图片的显示格式
{
if (picPath=="")picPath="/img/default.jpg";
x = event.clientX;
y = event.clientY;
document.all.tip.style.display = "block";
document.all.tip.style.top = y;
document.all.tip.style.left = x+10;
document.all.photo.src = ".."+picPath;
}
function out()//鼠标移开图片二字的时候什么也不显示
{
document.all.tip.style.display = "none";
}
function goodsDetailHou(id)//商品具体的描述信息
{
var url="<%=path %>/goods?type=goodsDetailHou&id="+id;
var n="";
var w="480px";
var h="500px";
var s="resizable:no;help:no;status:no;scroll:yes"; //不可改变大小,无帮助栏,无状态栏,有滚动条
openWin(url,n,w,h,s);//打开一个这样的窗口 高500宽480不可改变大小无帮助栏无状态栏有滚动条
}
</script>
</head>
<body leftmargin="2" topmargin="2" background='<%=path %>/img/allbg.gif'>
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="42" background="<%=path %>/img/tbg.gif">&nbsp;&nbsp;</td>
</tr>
<tr align="center" bgcolor="#FAFAF1" height="22">
<td width="5%">序号</td>
<td width="7%">编号</td>
<td width="15%">名称</td>
<td width="7%">介绍</td>
<td width="7%">图片</td>
<td width="7%">价格</td>
<td width="7%">操作</td>
</tr>
<c:forEach items="${requestScope.goodsList}" var="goods" varStatus="sta">
<tr align='center' bgcolor="#FFFFFF">
<td bgcolor="#FFFFFF" align="center">${sta.index+1}</td>
<td bgcolor="#FFFFFF" align="center">${goods.bianhao}</td>
<td bgcolor="#FFFFFF" align="center">${goods.mingcheng}</td>
<td bgcolor="#FFFFFF" align="center"><a href="#" onclick="goodsDetailHou(${goods.id})" class="pn-loperator">商品描述</a></td>
<!--a href="#"表示联接到当前页面-->
<td bgcolor="#FFFFFF" align="center"><div onmouseover = "over('<%=path %>/${goods.fujian}')" onmouseout = "out()" style="cursor:hand;">图片</div></td>
<!-- 当鼠标移上去显示菜品的图片,鼠标移开时什么也不显示 -->
<td bgcolor="#FFFFFF" align="center">${goods.shichangjia}</td> <!--市场价,即菜品的价格 -->
<td bgcolor="#FFFFFF" align="center">
<input type="button" value="删除" onclick="goodsDel(${goods.id})"/>
<input type="button" value="编辑" onclick="goodsPre(${goods.id})"/>
</td>
</tr>
</c:forEach>
</table>
<table width='98%' border='0'style="margin-top:8px;margin-left: 8px;">
<tr>
<td>
<input type="button" value="添加菜品信息" style="width: 120px;" onclick="goodsAdd()" />
</td>
</tr>
</table>
<div id="tip" style="position:absolute;display:none;border:0px;width:80px; height:80px;">
<!-- 通过绝对定位来对图片定位,下面进一步定义图片的显示格式 -->
<TABLE id="tipTable" border="0" bgcolor="#ffffee">
<TR align="center">
<TD><img id="photo" src="" height="150" width="150"></TD>
</TR>
</TABLE>
</div>
</body>
</html>

@ -0,0 +1,159 @@
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false" %>
<%@ taglib uri="http://java.fckeditor.net" prefix="FCK"%>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script type="text/javascript" src="<%=path %>/js/popup.js"></script>
<script type='text/javascript' src='<%=path %>/dwr/interface/loginService.js'></script>
<script type='text/javascript' src='<%=path %>/dwr/engine.js'></script>
<script type='text/javascript' src='<%=path %>/dwr/util.js'></script>
<script language="javascript">
var i=0;//获取菜品的所有类别
function catelogAll()
{
if(i==0)
{
document.getElementById("indicator").style.display="block";
loginService.catelogAll(callback);
i=1;
}
}
function callback(data)
{
document.getElementById("indicator").style.display="none";
DWRUtil.addOptions("catelog_id",data,"id","name");//创建一系列属性 查询出来的数据分别填充 菜品类别id菜品的id菜品的名字
}
function up() //上传图片函数 通过Popup.js打开对话框
{
var pop=new Popup({ contentType:1,isReloadOnClose:false,width:400,height:200}); //pop类型为1内嵌iframe关闭后不重新加载页面
pop.setContent("contentUrl","<%=path %>/upload/upload.jsp");
pop.setContent("title","文件上传"); //跳转到上传界面
pop.build();
pop.show();
}
function check() //检查信息是否输入完整
{
if(document.formAdd.catelog_id.value==0)
{
alert("请选择类别");
return false;
}
if(document.formAdd.bianhao.value=="")
{
alert("请输入编号");
return false;
}
if(document.formAdd.mingcheng.value=="")
{
alert("请输入名称");
return false;
}
return true;
}
</script>
</head>
<body leftmargin="2" topmargin="9" background='<%=path %>/img/allbg.gif'>
<form action="<%=path %>/goods?type=goodsEdit" name="formAdd" method="post">
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="4" background="<%=path %>/img/tbg.gif">&nbsp;&nbsp;</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
类别:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<table border="0">
<tr>
<td>
<select name="catelog_id" id="catelog_id" style="width: 250px;" onclick="catelogAll()">
<option value="0">请选择类别</option> <!--下拉菜单 -->
</select>
</td>
<td>
<img id="indicator" src="<%=path %>/images/loading.gif" style="display:none"/> <!--插入载入动画 -->
</td>
</tr>
</table>
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
编号:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="text" name="bianhao" style="width: 250px;" value="${requestScope.goods.bianhao }"/> <!--获取菜品的编号-->
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
名称:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="text" name="mingcheng" style="width: 250px;" value="${requestScope.goods.mingcheng }"/>
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
介绍:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<FCK:editor instanceName="jieshao" basePath="/fckeditor"
width="550" height="200" value="${requestScope.goods.jieshao }" toolbarSet="Basic">
</FCK:editor> <!-- 插入fck基本格式的编辑器 -->
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
图片:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="text" name="fujian" id="fujian" value="${requestScope.goods.fujian }" style="width: 250px;" readonly="readonly"/><!--规定图片为只读属性-->
<input type="button" value="上传" onclick="up()"/>
<input type="hidden" name="fujian" id="fujian"/>
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
价格:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="text" name="shichangjia" value="${requestScope.goods.shichangjia }" style="width: 250px;" onpropertychange="onchange1(this.value)" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"/>
<!--插入菜品的价格框onpropertychange当输入框属性变化时触发onchange1属性修改数据库菜品价格 下一句为按键之后触发将输入值为非数字的字符替换为空,粘贴之后触发将输入值为非数字的字符替换为空 -->
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
&nbsp;
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="hidden" name="id" value="${requestScope.goods.id }"/>
<input type="submit" value="提交" onclick="return check()"/>&nbsp;
<input type="reset" value="重置"/>&nbsp;
</td>
</tr>
</table>
</form>
</body>
</html>

@ -0,0 +1,312 @@
package com.itbaizhan.action;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.itbaizhan.dao.DB;
import com.itbaizhan.orm.Tgoods;
import com.itbaizhan.service.liuService;
public class goods_servlet extends HttpServlet {
// 处理所有的请求根据type来区分不同的操作
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String type = req.getParameter("type");
// 判断type并调用相应的方法进行处理
if (type.endsWith("goodsAdd")) {
goodsAdd(req, res); // 添加商品
}
if (type.endsWith("goodsMana")) {
goodsMana(req, res); // 商品管理
}
if (type.endsWith("goodsDel")) {
goodsDel(req, res); // 删除商品
}
if (type.endsWith("goodsDetailHou")) {
goodsDetailHou(req, res); // 后台查看商品详细信息
}
if (type.endsWith("goodsPre")) {
goodsPre(req, res); // 商品信息添加前的准备工作
}
if (type.endsWith("goodsEdit")) {
goodsEdit(req, res); // 编辑商品信息
}
if (type.endsWith("goodsNew")) {
goodsNew(req, res); // 获取最新商品
}
if (type.endsWith("goodsByCatelog")) {
goodsByCatelog(req, res); // 按商品类别查看商品
}
if (type.endsWith("goodsDetailQian")) {
goodsDetailQian(req, res); // 前台查看商品详细信息
}
if (type.endsWith("goodsRes")) {
goodsRes(req, res); // 根据商品名称搜索商品
}
}
// 添加商品
public void goodsAdd(HttpServletRequest req, HttpServletResponse res) {
String id = String.valueOf(new Date().getTime()); // 使用当前时间戳作为商品 ID
String catelog_id = req.getParameter("catelog_id");
String bianhao = req.getParameter("bianhao");
String mingcheng = req.getParameter("mingcheng");
String jieshao = req.getParameter("jieshao");
String fujian = req.getParameter("fujian");
int shichangjia = Integer.parseInt(req.getParameter("shichangjia"));
int tejia = Integer.parseInt(req.getParameter("shichangjia")); // 可能是设置的特价,暂时设置为与市场价一样
String del = "no"; // 标记商品未删除
// SQL语句插入商品数据
String sql = "insert into t_goods(id, catelog_id, bianhao, mingcheng, jieshao, fujian, shichangjia, tejia, del) values(?,?,?,?,?,?,?,?,?)";
Object[] params = {id, catelog_id, bianhao, mingcheng, jieshao, fujian, shichangjia, tejia, del};
// 使用数据库操作类执行插入操作
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行SQL插入
mydb.closed(); // 关闭数据库连接
// 返回操作成功信息并跳转至指定页面
req.setAttribute("msg", "操作成功");
String targetURL = "/common/msg.jsp";
dispatch(targetURL, req, res); // 转发到操作成功页面
}
// 商品管理,查看所有商品
public void goodsMana(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
List goodsList = new ArrayList();
String sql = "select * from t_goods where del='no'"; // 查询所有未删除的商品
Object[] params = {};
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询操作
ResultSet rs = mydb.getRs();
while (rs.next()) {
Tgoods goods = new Tgoods(); // 创建Tgoods对象并填充数据
goods.setId(rs.getString("id"));
goods.setCatelog_id(rs.getString("catelog_id"));
goods.setBianhao(rs.getString("bianhao"));
goods.setMingcheng(rs.getString("mingcheng"));
goods.setJieshao(rs.getString("jieshao"));
goods.setFujian(rs.getString("fujian"));
goods.setShichangjia(rs.getInt("shichangjia"));
goods.setTejia(rs.getInt("tejia"));
goods.setDel(rs.getString("del"));
goodsList.add(goods); // 将商品添加到列表中
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
// 将商品列表传递到前端页面
req.setAttribute("goodsList", goodsList);
req.getRequestDispatcher("admin/goods/goodsMana.jsp").forward(req, res);
}
// 删除商品
public void goodsDel(HttpServletRequest req, HttpServletResponse res) {
String id = req.getParameter("id");
String sql = "update t_goods set del='yes' where id=" + id; // 更新商品的del字段为'yes'表示删除
Object[] params = {};
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行删除操作
mydb.closed();
req.setAttribute("msg", "操作成功");
String targetURL = "/common/msg.jsp";
dispatch(targetURL, req, res); // 转发到操作成功页面
}
// 后台查看商品详细信息
public void goodsDetailHou(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String id = req.getParameter("id");
req.setAttribute("goods", liuService.getGoods(id)); // 从服务层获取商品详细信息
req.getRequestDispatcher("admin/goods/goodsDetailHou.jsp").forward(req, res);
}
// 商品信息添加前的准备工作
public void goodsPre(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
Tgoods goods = new Tgoods();
String sql = "select * from t_goods where id=?";
Object[] params = {req.getParameter("id")};
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询操作
ResultSet rs = mydb.getRs();
while (rs.next()) {
goods.setId(rs.getString("id"));
goods.setCatelog_id(rs.getString("catelog_id"));
goods.setBianhao(rs.getString("bianhao"));
goods.setMingcheng(rs.getString("mingcheng"));
goods.setJieshao(rs.getString("jieshao"));
goods.setFujian(rs.getString("fujian"));
goods.setShichangjia(rs.getInt("shichangjia"));
goods.setTejia(rs.getInt("tejia"));
goods.setDel(rs.getString("del"));
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed();
req.setAttribute("goods", goods); // 将商品信息传递到前端页面
req.getRequestDispatcher("admin/goods/goodsPre.jsp").forward(req, res);
}
// 编辑商品信息
public void goodsEdit(HttpServletRequest req, HttpServletResponse res) {
String id = req.getParameter("id");
String catelog_id = req.getParameter("catelog_id");
String bianhao = req.getParameter("bianhao");
String mingcheng = req.getParameter("mingcheng");
String jieshao = req.getParameter("jieshao");
String fujian = req.getParameter("fujian");
int shichangjia = Integer.parseInt(req.getParameter("shichangjia"));
int tejia = Integer.parseInt(req.getParameter("shichangjia"));
// 更新商品信息
String sql = "update t_goods set catelog_id=?, bianhao=?, mingcheng=?, jieshao=?, fujian=?, shichangjia=?, tejia=? where id=?";
Object[] params = {catelog_id, bianhao, mingcheng, jieshao, fujian, shichangjia, tejia, id};
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行更新操作
mydb.closed();
req.setAttribute("msg", "操作成功");
String targetURL = "/common/msg.jsp";
dispatch(targetURL, req, res); // 转发到操作成功页面
}
// 获取最新商品
public void goodsNew(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
List goodsList = new ArrayList();
String sql = "select * from t_goods where del='no' order by id desc"; // 按商品ID降序排列查询所有未删除的商品
Object[] params = {};
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询操作
ResultSet rs = mydb.getRs();
while (rs.next()) {
Tgoods goods = new Tgoods(); // 创建Tgoods对象并填充数据
goods.setId(rs.getString("id"));
goods.setCatelog_id(rs.getString("catelog_id"));
goods.setBianhao(rs.getString("bianhao"));
goods.setMingcheng(rs.getString("mingcheng"));
goods.setJieshao(rs.getString("jieshao"));
goods.setFujian(rs.getString("fujian"));
goods.setShichangjia(rs.getInt("shichangjia"));
goods.setTejia(rs.getInt("tejia"));
goods.setDel(rs.getString("del"));
goodsList.add(goods); // 将商品添加到列表中
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
// 限制最新商品显示数量最多为4个
if (goodsList.size() > 4) {
goodsList = goodsList.subList(0, 4); // 截取前4个商品
}
// 将商品列表传递到前端页面
req.setAttribute("goodsList", goodsList);
req.getRequestDispatcher("site/goods/goodsNew.jsp").forward(req, res); // 转发到前端页面显示最新商品
}
// 根据商品类别查看商品
public void goodsByCatelog(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String catelog_id = req.getParameter("catelog_id");
// 从服务层获取指定类别的商品列表
req.setAttribute("goodsList", liuService.goodsByCatelog(catelog_id));
req.getRequestDispatcher("site/goods/goodsByCatelog.jsp").forward(req, res); // 转发到前端页面显示商品类别
}
// 前台查看商品详细信息
public void goodsDetailQian(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String id = req.getParameter("id");
// 从服务层获取商品的详细信息
req.setAttribute("goods", liuService.getGoods(id));
req.getRequestDispatcher("site/goods/goodsDetailQian.jsp").forward(req, res); // 转发到前端页面显示商品详细信息
}
// 根据商品名称搜索商品
public void goodsRes(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String mingcheng = req.getParameter("mingcheng");
List goodsList = new ArrayList();
String sql = "select * from t_goods where del='no' and mingcheng like '%" + mingcheng.trim() + "%'"; // 根据商品名称进行模糊查询
Object[] params = {};
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询操作
ResultSet rs = mydb.getRs();
while (rs.next()) {
Tgoods goods = new Tgoods(); // 创建Tgoods对象并填充数据
goods.setId(rs.getString("id"));
goods.setCatelog_id(rs.getString("catelog_id"));
goods.setBianhao(rs.getString("bianhao"));
goods.setMingcheng(rs.getString("mingcheng"));
goods.setJieshao(rs.getString("jieshao"));
goods.setFujian(rs.getString("fujian"));
goods.setShichangjia(rs.getInt("shichangjia"));
goods.setTejia(rs.getInt("tejia"));
goods.setDel(rs.getString("del"));
goodsList.add(goods); // 将商品添加到列表中
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
// 将商品列表传递到前端页面
req.setAttribute("goodsList", goodsList);
req.getRequestDispatcher("site/goods/goodsRes.jsp").forward(req, res); // 转发到前端页面显示搜索结果
}
// 转发请求到指定页面
public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) {
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI);
try {
dispatch.forward(request, response); // 转发请求到目标页面
} catch (ServletException e) {
e.printStackTrace(); // 捕获并打印异常
} catch (IOException e) {
e.printStackTrace(); // 捕获并打印异常
}
}
// 初始化方法初始化Servlet时调用
public void init(ServletConfig config) throws ServletException {
super.init(config); // 调用父类的init()方法进行初始化
}
// 销毁方法在Servlet销毁时调用
public void destroy() {
// 在Servlet销毁时执行清理工作如果有的话
}
}

@ -0,0 +1,62 @@
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script language="javascript">
function c()//没有输入任何信息,提示请输入信息内容。
{
if(document.formAdd.huifu.value=="")
{
alert("请输入信息内容");
return false;
}
document.formAdd.submit();//否则,将回复信息发送
}
</script>
</head>
<body leftmargin="2" topmargin="9" background='<%=path %>/img/allbg.gif'>
<form action="<%=path %>/order?type=huifuAdd" name="formAdd" method="post">
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="4" background="<%=path %>/img/tbg.gif">&nbsp;&nbsp;</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="10%" bgcolor="#FFFFFF" align="right">
信息内容:
</td>
<td width="90%" bgcolor="#FFFFFF" align="left">
<input type="text" name="huifu" size="40"/>
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="10%" bgcolor="#FFFFFF" align="right">
&nbsp;
</td>
<td width="90%" bgcolor="#FFFFFF" align="left">
<input type="hidden" name="id" value="<%=request.getParameter("id") %>"/>
<input type="button" value="提交" onclick="c()"/>&nbsp; <!-- 提交时触发c函数判断是否未回复内容 -->
<input type="reset" value="重置"/>&nbsp;
</td>
</tr>
</table>
</form>
</body>
</html>

@ -0,0 +1,76 @@
package com.itbaizhan.action;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.itbaizhan.service.liuService;
public class index_servlet extends HttpServlet
// 导航页面服务端小程序
{
/**
* service
*
* 1.
* 2. session便使
* 3. index.jsp
*/
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
// 从liuService类中获取商品分类数据并将其保存到session中
req.getSession().setAttribute("catelogList", liuService.catelogList());
// 转发请求到首页index.jsp页面这个页面会使用“catelogList”来展示商品分类
req.getRequestDispatcher("site/index.jsp").forward(req, res);
}
/**
* dispatch
* URI
* URIJSP
*/
public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response)
{
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); // 获取请求转发器
try
{
// 转发请求到目标页面
dispatch.forward(request, response);
return;
}
catch (ServletException e)
{
e.printStackTrace(); // 捕获并打印ServletException
}
catch (IOException e)
{
e.printStackTrace(); // 捕获并打印IOException
}
}
/**
* initServlet
* Servlet
* init()
*/
public void init(ServletConfig config) throws ServletException
{
super.init(config); // 调用父类的init()方法进行初始化
}
/**
* destroyServlet
*
* 使
*/
public void destroy()
{
// 销毁时执行清理工作,如果需要
}
}

@ -0,0 +1,344 @@
package com.itbaizhan.service;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.itbaizhan.dao.DB;
import com.itbaizhan.orm.Tcatelog;
import com.itbaizhan.orm.Tgoods;
import com.itbaizhan.orm.Torder;
import com.itbaizhan.orm.TorderItem;
import com.itbaizhan.orm.Txinyong;
/**
* liuService
*
*
*/
public class liuService {
/**
* ID
*
* @return List ID
*/
public static List catelogList() {
List catelogList = new ArrayList(); // 初始化菜品种类列表
String sql = "select * from t_catelog where del='no'"; // 查询未被删除的菜品种类
Object[] params = {}; // 设置查询参数为空
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行 SQL 查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) { // 遍历结果集
Tcatelog catelog = new Tcatelog(); // 创建 Tcatelog 对象
catelog.setId(rs.getString("id")); // 设置菜品类别 ID
catelog.setName(rs.getString("name")); // 设置菜品类别名称
catelogList.add(catelog); // 将菜品类别添加到列表
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
return catelogList; // 返回菜品类别列表
}
/**
*
*
* @param id ID
* @return Tgoods
*/
public static Tgoods getGoods(String id) {
Tgoods goods = new Tgoods(); // 初始化商品对象
String sql = "select * from t_goods where id=?"; // 查询指定商品的 SQL 语句
Object[] params = { id }; // 设置查询参数为商品 ID
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
rs.next(); // 移动到第一行(只查询一条记录)
// 设置商品属性
goods.setId(rs.getString("id"));
goods.setCatelog_id(rs.getString("catelog_id"));
goods.setBianhao(rs.getString("bianhao"));
goods.setMingcheng(rs.getString("mingcheng"));
goods.setJieshao(rs.getString("jieshao"));
goods.setFujian(rs.getString("fujian"));
goods.setShichangjia(rs.getInt("shichangjia"));
goods.setTejia(rs.getInt("tejia"));
goods.setDel(rs.getString("del"));
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
return goods; // 返回商品对象
}
/**
* ID 8
*
* @return
*/
public static List goodsNew() {
List goodsList = new ArrayList(); // 初始化商品列表
String sql = "select * from t_goods where del='no' order by id desc"; // 查询未删除的商品,按 ID 降序排列
Object[] params = {}; // 设置查询参数为空
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) { // 遍历结果集
Tgoods goods = new Tgoods(); // 创建 Tgoods 对象
// 设置商品属性
goods.setId(rs.getString("id"));
goods.setCatelog_id(rs.getString("catelog_id"));
goods.setBianhao(rs.getString("bianhao"));
goods.setMingcheng(rs.getString("mingcheng"));
goods.setJieshao(rs.getString("jieshao"));
goods.setFujian(rs.getString("fujian"));
goods.setShichangjia(rs.getInt("shichangjia"));
goods.setTejia(rs.getInt("tejia"));
goods.setDel(rs.getString("del"));
goodsList.add(goods); // 将商品添加到列表
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
// 限制返回最多 8 个商品
if (goodsList.size() > 8) {
goodsList = goodsList.subList(0, 8);
}
return goodsList; // 返回最新商品列表
}
/**
* ID
*
* @param catelog_id ID
* @return
*/
public static List goodsByCatelog(String catelog_id) {
List goodsList = new ArrayList(); // 初始化商品列表
String sql = "select * from t_goods where del='no' and catelog_id=? order by id desc"; // 根据类别 ID 查询商品
Object[] params = { catelog_id }; // 设置查询参数为菜品类别 ID
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) { // 遍历结果集
Tgoods goods = new Tgoods(); // 创建 Tgoods 对象
// 设置商品属性
goods.setId(rs.getString("id"));
goods.setCatelog_id(rs.getString("catelog_id"));
goods.setBianhao(rs.getString("bianhao"));
goods.setMingcheng(rs.getString("mingcheng"));
goods.setJieshao(rs.getString("jieshao"));
goods.setFujian(rs.getString("fujian"));
goods.setShichangjia(rs.getInt("shichangjia"));
goods.setTejia(rs.getInt("tejia"));
goods.setDel(rs.getString("del"));
goodsList.add(goods); // 将商品添加到列表
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
return goodsList; // 返回商品列表
}
/**
*
*
* @param order
*/
public static void saveOrder(Torder order) {
String sql = "insert into t_order(id,bianhao,shijian,zhuangtai,huifu,songhuodizhi,fukuanfangshi,jine,user_id) values(?,?,?,?,?,?,?,?,?)";
Object[] params = { order.getId(), order.getBianhao(), order.getShijian(), order.getZhuangtai(),
order.getHuifu(), order.getSonghuodizhi(), order.getFukuanfangshi(), order.getJine(), order.getUser_id() };
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行插入操作
mydb.closed(); // 关闭数据库连接
}
/**
*
*
* @param id ID
* @param order_id ID
* @param goods_id ID
* @param goods_quantity
*/
public static void saveOrderItem(String id, String order_id, String goods_id, int goods_quantity) {
String sql = "insert into t_orderitem(id,order_id,goods_id,goods_quantity) values(?,?,?,?)";
Object[] params = { id, order_id, goods_id, goods_quantity };
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行插入操作
mydb.closed(); // 关闭数据库连接
}
/**
*
*
* @param goods_id ID
* @param goods_quantity
*/
public static void updateGoodsKucun(String goods_id, int goods_quantity) {
String sql = "update t_goods set kucun=kucun-? where id=?";
Object[] params = { goods_quantity, goods_id };
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行更新操作
mydb.closed(); // 关闭数据库连接
}
/**
*
*
* @param user_id ID
* @return
*/
public static List orderList(String user_id) {
List orderList = new ArrayList(); // 初始化订单列表
String sql = "select * from t_order where user_id=?"; // 查询该用户的所有订单
Object[] params = { user_id }; // 设置查询参数为用户 ID
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) { // 遍历结果集
Torder order = new Torder(); // 创建 Torder 对象
// 设置订单属性
order.setId(rs.getString("id"));
order.setBianhao(rs.getString("bianhao"));
order.setShijian(rs.getString("shijian"));
order.setZhuangtai(rs.getString("zhuangtai"));
order.setHuifu(rs.getString("huifu"));
order.setSonghuodizhi(rs.getString("songhuodizhi"));
order.setFukuanfangshi(rs.getString("fukuanfangshi"));
order.setJine(rs.getInt("jine"));
order.setUser_id(rs.getString("user_id"));
orderList.add(order); // 将订单添加到列表
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
return orderList; // 返回订单列表
}
/**
*
*
* @param order_id ID
* @return
*/
public static List orderItemList(String order_id) {
List orderitemList = new ArrayList(); // 初始化订单商品列表
String sql = "select * from t_orderitem where order_id=?"; // 查询订单中包含的商品
Object[] params = { order_id }; // 设置查询参数为订单 ID
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) { // 遍历结果集
TorderItem orderItem = new TorderItem(); // 创建 TorderItem 对象
// 设置订单商品属性
orderItem.setId(rs.getString("id"));
orderItem.setGoods(getGoods(rs.getString("goods_id"))); // 获取商品信息
orderItem.setGoods_quantity(rs.getInt("goods_quantity")); // 设置商品数量
orderitemList.add(orderItem); // 将订单商品添加到列表
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
return orderitemList; // 返回订单商品列表
}
/**
*
*
* @param loginname
* @return "yizhan" "meizhan"
*/
public static String panduan_zhanghao(String loginname) {
String s = "meizhan"; // 默认返回“没占用”
String sql = "select * from t_user where del='no' and loginname=?"; // 查询账号是否存在
Object[] params = { loginname.trim() }; // 设置查询参数为账号
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) { // 如果查询到结果,表示账号已存在
s = "yizhan"; // 账号已占用
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
return s; // 返回账号是否已占用
}
/**
*
*
* @param user_id ID
* @return
*/
public static List getxinyongList(String user_id) {
List xinyongList = new ArrayList(); // 初始化信用信息列表
String sql = "select * from t_xinyong where user_id=?"; // 查询该用户的信用信息
Object[] params = { user_id }; // 设置查询参数为用户 ID
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) { // 遍历结果集
Txinyong xinyong = new Txinyong(); // 创建 Txinyong 对象
// 设置信用信息属性
xinyong.setId(rs.getString("id"));
xinyong.setShuxing(rs.getString("shuxing"));
xinyong.setNeirong(rs.getString("neirong"));
xinyong.setShijian(rs.getString("shijian"));
xinyong.setUser_id(rs.getString("user_id"));
xinyongList.add(xinyong); // 将信用信息添加到列表
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
return xinyongList; // 返回信用信息列表
}
}

@ -0,0 +1,62 @@
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page isELIgnored="false" %>
<%@ taglib uri="http://java.fckeditor.net" prefix="FCK"%>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<base target="_self"/>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script language="javascript">
function c()//无内容提示请输入回复内容
{
if(document.formAdd.huifu.value=="")
{
alert("请输入回复内容");
return false;
}
document.formAdd.submit();//有内容将内容提交
}
</script>
</head>
<body leftmargin="2" topmargin="9" background='<%=path %>/img/allbg.gif'>
<form action="<%=path %>/liuyan?type=liuyanHuifu" name="formAdd" method="post">
<table width="98%" align="center" border="0" cellpadding="4" cellspacing="1" bgcolor="#CBD8AC" style="margin-bottom:8px">
<tr bgcolor="#EEF4EA">
<td colspan="3" background="<%=path %>/img/wbg.gif" class='title'><span>信息交流</span></td>
</tr>
<tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='red';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
回复内容:
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="text" name="huifu" size="80"/>
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='red';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22">
<td width="25%" bgcolor="#FFFFFF" align="right">
&nbsp;
</td>
<td width="75%" bgcolor="#FFFFFF" align="left">
<input type="hidden" name="id" value="<%=request.getParameter("id") %>"/> <!-- 获得id属性 -->
<input type="button" value="提交" onclick="c()"/>&nbsp; <!-- 触发之前定义的是否有内容的判断 -->
<input type="reset" value="重置"/>&nbsp;
</td>
</tr>
</table>
</form>
</body>
</html>

@ -0,0 +1,80 @@
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script language="JavaScript" src="<%=path %>/js/public.js" type="text/javascript"></script>
<script language="javascript">
function liuyanDel(id)//确认是否删除
{
if(confirm('您确定删除吗?'))
{
window.location.href="<%=path %>/liuyan?type=liuyanDel&id="+id;//跳转页面,进行留言删除
}
}
function liuyanHuifu(id)//留言回复函数
{
var strUrl = "<%=path %>/admin/liuyan/liuyanHuifu.jsp?id="+id;
var ret = window.open(strUrl,"","dialogWidth:700px; dialogHeight:400px; dialogLeft: status:no; directories:yes;scrollbars:yes;Resizable=no;");
//建立一个模型对话框对话框高度为400宽度为700无状态栏窗口无滚动栏不可调整大小
window.location.reload(); //重新加载页面
}
</script>
</head>
<body leftmargin="2" topmargin="2" background='<%=path %>/img/allbg.gif'>
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="14" background="<%=path %>/img/tbg.gif">&nbsp;&nbsp;</td>
</tr>
<tr align="center" bgcolor="#FAFAF1" height="22">
<td width="4%">序号</td>
<td width="20%">信息内容</td>
<td width="8%">发布时间</td>
<td width="8%">回复信息</td>
<td width="8%">回复时间</td>
<td width="8%">操作</td>
</tr>
<c:forEach items="${requestScope.liuyanList}" var="liuyan" varStatus="sta">
<tr align='center' bgcolor="#FFFFFF" height="22">
<td bgcolor="#FFFFFF" align="center">
${sta.index+1 } <!-- 设置序号从1开始 -->
</td>
<td bgcolor="#FFFFFF" align="center">
${liuyan.neirong }
</td>
<td bgcolor="#FFFFFF" align="center">
${liuyan.liuyanshi }
</td>
<td bgcolor="#FFFFFF" align="center">
${liuyan.huifu }
</td>
<td bgcolor="#FFFFFF" align="center">
${liuyan.huifushi }
</td>
<td bgcolor="#FFFFFF" align="center">
<input type="button" value="删除" onclick="liuyanDel(${liuyan.id })"/><!-- 执行liuyanDelid-->
<input type="button" value="回复" onclick="liuyanHuifu(${liuyan.id })"/><!-- 执行liuyanHuifuid-->
</td>
</tr>
</c:forEach>
</table>
</body>
</html>

@ -0,0 +1,299 @@
package com.itbaizhan.action;
import java.io.IOException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
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 com.itbaizhan.dao.DB;
import com.itbaizhan.orm.TLiuyan;
import com.itbaizhan.orm.Tuser;
public class liuyan_servlet extends HttpServlet
{
/**
* service
*
*/
public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException
{
// 获取请求的type参数来确定操作类型
String type = req.getParameter("type");
// 根据请求的操作类型,调用相应的方法
if(type.endsWith("liuyanAdd"))
{
liuyanAdd(req, res); // 留言添加
}
if(type.endsWith("liuyanMana"))
{
liuyanMana(req, res); // 留言管理
}
if(type.endsWith("liuyanDel"))
{
liuyanDel(req, res); // 留言删除
}
if(type.endsWith("liuyanHuifu"))
{
liuyanHuifu(req, res); // 留言回复
}
if(type.endsWith("liuyanAll"))
{
liuyanAll(req, res); // 获取所有留言
}
if(type.endsWith("liuyanDetail"))
{
liuyanDetail(req, res); // 留言详细信息
}
}
/**
* liuyanAdd
*
*/
public void liuyanAdd(HttpServletRequest req,HttpServletResponse res)
{
HttpSession session = req.getSession();
Tuser user = (Tuser)session.getAttribute("user"); // 从session中获取当前登录用户
// 获取留言内容
String neirong = req.getParameter("neirong");
String liuyanshi = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); // 当前时间
String user_id = user.getId(); // 获取用户ID
String huifu = ""; // 默认无回复
String huifushi = ""; // 默认无回复时间
// 构建SQL插入语句
String sql = "insert into t_liuyan(neirong, liuyanshi, user_id, huifu, huifushi) values(?,?,?,?,?)";
Object[] params = {neirong, liuyanshi, user_id, huifu, huifushi};
DB mydb = new DB(); // 创建DB对象
mydb.doPstm(sql, params); // 执行SQL语句
mydb.closed(); // 关闭数据库连接
req.setAttribute("msg", "留言完毕"); // 设置提示信息
String targetURL = "/common/msg.jsp"; // 定义跳转页面
dispatch(targetURL, req, res); // 请求转发到提示页面
}
/**
* liuyanMana
*
*/
public void liuyanMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
List liuyanList = new ArrayList();
String sql = "select * from t_liuyan order by liuyanshi"; // 获取所有留言的SQL语句
Object[] params = {};
DB mydb = new DB(); // 创建DB对象
try
{
mydb.doPstm(sql, params); // 执行SQL查询
ResultSet rs = mydb.getRs(); // 获取结果集
while(rs.next()) // 遍历结果集
{
TLiuyan liuyan = new TLiuyan(); // 创建留言对象
liuyan.setId(rs.getInt("id"));
liuyan.setNeirong(rs.getString("neirong"));
liuyan.setLiuyanshi(rs.getString("liuyanshi"));
liuyan.setUser_id(rs.getString("user_id"));
liuyan.setHuifu(rs.getString("huifu"));
liuyan.setHuifushi(rs.getString("huifushi"));
liuyanList.add(liuyan); // 将留言添加到列表中
}
rs.close(); // 关闭结果集
}
catch(Exception e)
{
e.printStackTrace(); // 打印异常
}
mydb.closed(); // 关闭数据库连接
req.setAttribute("liuyanList", liuyanList); // 将留言列表设置到请求属性中
req.getRequestDispatcher("admin/liuyan/liuyanMana.jsp").forward(req, res); // 转发到留言管理页面
}
/**
* liuyanDelID
*
*/
public void liuyanDel(HttpServletRequest req,HttpServletResponse res)
{
String sql = "delete from t_liuyan where id=" + Integer.parseInt(req.getParameter("id")); // 删除留言的SQL语句
Object[] params = {};
DB mydb = new DB(); // 创建DB对象
mydb.doPstm(sql, params); // 执行删除操作
mydb.closed(); // 关闭数据库连接
req.setAttribute("msg", "留言信息删除完毕"); // 设置删除成功的提示信息
String targetURL = "/common/msg.jsp"; // 定义跳转页面
dispatch(targetURL, req, res); // 请求转发到提示页面
}
/**
* liuyanHuifu
*
*/
public void liuyanHuifu(HttpServletRequest req,HttpServletResponse res)
{
String huifu = req.getParameter("huifu"); // 获取回复内容
String huifushi = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); // 回复时间
int id = Integer.parseInt(req.getParameter("id")); // 获取留言ID
// 更新留言的回复内容和时间
String sql = "update t_liuyan set huifu=?, huifushi=? where id=?";
Object[] params = {huifu, huifushi, id};
DB mydb = new DB(); // 创建DB对象
mydb.doPstm(sql, params); // 执行更新操作
mydb.closed(); // 关闭数据库连接
req.setAttribute("msg", "回复完毕"); // 设置回复成功的提示信息
String targetURL = "/common/msg.jsp"; // 定义跳转页面
dispatch(targetURL, req, res); // 请求转发到提示页面
}
/**
* liuyanAll
*
*/
public void liuyanAll(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
List liuyanList = new ArrayList();
String sql = "select * from t_liuyan order by liuyanshi"; // 获取所有留言的SQL语句
Object[] params = {};
DB mydb = new DB(); // 创建DB对象
try
{
mydb.doPstm(sql, params); // 执行SQL查询
ResultSet rs = mydb.getRs(); // 获取结果集
while(rs.next()) // 遍历结果集
{
TLiuyan liuyan = new TLiuyan(); // 创建留言对象
liuyan.setId(rs.getInt("id"));
liuyan.setNeirong(rs.getString("neirong"));
liuyan.setLiuyanshi(rs.getString("liuyanshi"));
liuyan.setUser_id(rs.getString("user_id"));
liuyan.setHuifu(rs.getString("huifu"));
liuyan.setHuifushi(rs.getString("huifushi"));
liuyanList.add(liuyan); // 将留言添加到列表中
}
rs.close(); // 关闭结果集
}
catch(Exception e)
{
e.printStackTrace(); // 打印异常
}
mydb.closed(); // 关闭数据库连接
req.setAttribute("liuyanList", liuyanList); // 将留言列表设置到请求属性中
req.getRequestDispatcher("site/liuyan/liuyanAll.jsp").forward(req, res); // 转发到留言展示页面
}
/**
* liuyanDetailID
* ID
*/
public void liuyanDetail(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
int id = Integer.parseInt(req.getParameter("id")); // 获取留言ID
// 获取留言的详细信息
req.setAttribute("liuyan", get_liuyan(id));
// 转发到留言详细页面显示内容
req.getRequestDispatcher("site/liuyan/liuyanDetail.jsp").forward(req, res);
}
/**
* get_liuyanID
* @param id ID
* @return
*/
public TLiuyan get_liuyan(int id)
{
TLiuyan liuyan = new TLiuyan(); // 创建留言对象
// 查询特定ID的留言数据
String sql = "select * from t_liuyan where id=?";
Object[] params = {id};
DB mydb = new DB(); // 创建DB对象
try
{
mydb.doPstm(sql, params); // 执行SQL查询
ResultSet rs = mydb.getRs(); // 获取结果集
while(rs.next()) // 遍历结果集
{
liuyan.setId(rs.getInt("id"));
liuyan.setNeirong(rs.getString("neirong"));
liuyan.setLiuyanshi(rs.getString("liuyanshi"));
liuyan.setUser_id(rs.getString("user_id"));
liuyan.setHuifu(rs.getString("huifu"));
liuyan.setHuifushi(rs.getString("huifushi"));
}
rs.close(); // 关闭结果集
}
catch(Exception e)
{
e.printStackTrace(); // 打印异常
}
mydb.closed(); // 关闭数据库连接
return liuyan; // 返回留言对象
}
/**
* dispatch
* @param targetURI URI
* @param request
* @param response
*/
public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response)
{
// 获取目标URI的RequestDispatcher
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI);
try
{
dispatch.forward(request, response); // 请求转发
}
catch (ServletException e)
{
e.printStackTrace(); // 打印异常
}
catch (IOException e)
{
e.printStackTrace(); // 打印异常
}
}
/**
* initServlet
* @param config Servlet
*/
public void init(ServletConfig config) throws ServletException
{
super.init(config); // 调用父类的初始化方法
}
/**
* destroyServlet
* Servlet
*/
public void destroy()
{
// 在此方法中可以释放一些资源,如数据库连接等。
}
}

@ -0,0 +1,166 @@
package com.itbaizhan.service;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import com.itbaizhan.dao.DB;
import com.itbaizhan.orm.TAdmin;
import com.itbaizhan.orm.Tcatelog;
import com.itbaizhan.orm.Tuser;
import com.itbaizhan.util.Cart;
public class loginService {
/**
*
*
* session
*
* @param userName
* @param userPw
* @param userType 012
* @return "yes" "no"
*/
public String login(String userName, String userPw, int userType) {
String result = "no"; // 默认登录失败
if (userType == 0) { // 系统管理员登录
String sql = "select * from t_admin where userName=? and userPw=?";
Object[] params = { userName, userPw };
DB mydb = new DB();
mydb.doPstm(sql, params);
try {
ResultSet rs = mydb.getRs(); // 获取查询结果集
boolean mark = (rs == null || !rs.next() ? false : true); // 判断查询结果是否为空
if (!mark) {
result = "no"; // 登录失败
} else {
result = "yes"; // 登录成功
TAdmin admin = new TAdmin();
admin.setUserId(rs.getInt("userId"));
admin.setUserName(rs.getString("userName"));
admin.setUserPw(rs.getString("userPw"));
WebContext ctx = WebContextFactory.get(); // 获取 WebContext 对象
HttpSession session = ctx.getSession();
session.setAttribute("userType", 0); // 设置用户类型为管理员
session.setAttribute("admin", admin); // 将管理员信息存入 session
}
rs.close();
} catch (SQLException e) {
System.out.println("登录失败!");
e.printStackTrace();
} finally {
mydb.closed();
}
}
if (userType == 1) { // 会员登录
String sql = "select * from t_user where loginname=? and loginpw=? and del='no'";
Object[] params = { userName, userPw };
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行 SQL 查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
boolean mark = (rs == null || !rs.next() ? false : true); // 判断查询结果是否为空
if (!mark) {
result = "no"; // 登录失败
} else {
result = "yes"; // 登录成功
Tuser user = new Tuser();
user.setId(rs.getString("id"));
user.setLoginname(rs.getString("loginname"));
user.setLoginpw(rs.getString("loginpw"));
user.setName(rs.getString("name"));
user.setDel(rs.getString("del"));
WebContext ctx = WebContextFactory.get(); // 获取 WebContext 对象
HttpSession session = ctx.getSession();
session.setAttribute("userType", 1); // 设置用户类型为会员
session.setAttribute("user", user); // 将用户信息存入 session
// 创建一个空的购物车对象,存入 session
Cart cart = new Cart();
session.setAttribute("cart", cart);
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed();
}
if (userType == 2) {
// 用户类型为 2 的登录逻辑可以在这里添加(暂未实现)
}
return result; // 返回登录结果
}
/**
*
*
*
* @param userPwNew
* @return "yes"
*/
public String adminPwEdit(String userPwNew) {
System.out.println("DDDD");
try {
Thread.sleep(700); // 确保线程运行顺序
} catch (InterruptedException e) {
e.printStackTrace();
}
WebContext ctx = WebContextFactory.get(); // 获取 WebContext 对象
HttpSession session = ctx.getSession();
TAdmin admin = (TAdmin) session.getAttribute("admin"); // 获取当前登录的管理员对象
String sql = "update t_admin set userPw=? where userId=?";
Object[] params = { userPwNew, admin.getUserId() }; // 设置更新的参数
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行更新操作
return "yes"; // 返回修改成功的结果
}
/**
*
*
*
* @return
*/
public List catelogAll() {
try {
Thread.sleep(700); // 确保线程运行顺序
} catch (InterruptedException e) {
e.printStackTrace();
}
List catelogList = new ArrayList(); // 初始化菜品类别列表
String sql = "select * from t_catelog where del='no'"; // 查询未删除的菜品类别
Object[] params = {};
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) { // 遍历结果集
Tcatelog catelog = new Tcatelog();
catelog.setId(rs.getString("id")); // 设置菜品类别 ID
catelog.setName(rs.getString("name")); // 设置菜品类别名称
catelogList.add(catelog); // 将菜品类别添加到列表
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
mydb.closed(); // 关闭数据库连接
return catelogList; // 返回菜品类别列表
}
}

@ -0,0 +1,121 @@
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script language="JavaScript" src="<%=path %>/js/public.js" type="text/javascript"></script>
<script language="javascript">
function orderDetail(order_id)//订单明细信息
{
var url="<%=path %>/buy?type=orderDetail&order_id="+order_id; //跳转页面
var n="";
var w="600px";//宽度
var h="500px";//高度
var s="resizable:no;help:no;status:no;scroll:yes"; //不可调整大小 无帮助栏 无状态栏 有滚动条
openWin(url,n,w,h,s);
}
function orderDel(id)
{
if(confirm('您确定删除吗?'))
{
window.location.href="<%=path %>/order?type=orderDel&id="+id; //?后传入参数,&为参数间的分隔符
}
}
function orderShouli(id)
{
if(confirm('您确定受理订单吗?'))
{
window.location.href="<%=path %>/order?type=orderShouli&id="+id;
}
}
function huifuAdd(id)
{
var url="<%=path %>/admin/order/huifuAdd.jsp?id="+id;
window.location.href=url;
}
function userDetail(id)
{
var url="<%=path %>/user?type=userDetail&id="+id;
window.location.href=url;
}
</script>
</head>
<body leftmargin="2" topmargin="2" background='<%=path %>/img/allbg.gif'>
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="44" background="<%=path %>/img/tbg.gif">&nbsp;&nbsp;</td>
</tr>
<tr align="center" bgcolor="#FAFAF1" height="22">
<td width="4%">序号</td>
<td width="10%">订单编号</td>
<td width="10%">下单时间</td>
<td width="10%">状态</td>
<td width="10%">排队计时</td>
<td width="15%">送货地址</td>
<td width="10%">付款方式</td>
<td width="10%">总金额</td>
<td width="10%">明细</td>
<td width="10%">用户信息</td>
<td width="10%">操作</td>
</tr>
<c:forEach items="${requestScope.orderList}" var="order" varStatus="ss">
<tr align='center' bgcolor="#FFFFFF" height="22"> <!--取得订单的各种信息序号从1开始-->
<td bgcolor="#FFFFFF" align="center">${ss.index+1}</td>
<td bgcolor="#FFFFFF" align="center">${order.bianhao}</td>
<td bgcolor="#FFFFFF" align="center">${order.shijian}</td>
<td bgcolor="#FFFFFF" align="center">
<c:if test="${order.zhuangtai=='no'}"> <!-- 如果状态=no显示未受理点击受理订单触发受理订单orderShouliid函数 -->
未受理&nbsp;&nbsp;&nbsp;<a href="#" style="color: red" onclick="orderShouli(${order.id})" class="pn-loperator">受理订单</a>
</c:if>
<c:if test="${order.zhuangtai=='yes'}"> <!--如果状态=yes显示已受理-->
已受理
</c:if>
</td>
<td bgcolor="#FFFFFF" align="center">
${order.huifu}
&nbsp;&nbsp;&nbsp;<a href="#" style="color: red" onclick="huifuAdd(${order.id})" class="pn-loperator">计时</a>
<!-- 点击计时可以触发huifuAddid函数来为用户进行消息回复如几点过来取-->
</td>
<td bgcolor="#FFFFFF" align="center">${order.songhuodizhi}</td>
<td bgcolor="#FFFFFF" align="center">${order.fukuanfangshi}</td>
<td bgcolor="#FFFFFF" align="center">${order.jine}</td> <!-- 获得付款方式,送货地址,总金额信息 -->
<td><input value="明细" type="button" onclick="orderDetail(${order.id})"/></td>
<!-- 点击明细触发前面定义的订单明细orderDetailid-->
<td><input value="查看用户" type="button" onclick="userDetail('${order.user_id}')"/></td>
<!-- 点击查看用户触发前面定义的用户明细userDetailid-->
<td>
<input type="button" onclick="orderDel(${order.id})" value="删除"/>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>

@ -0,0 +1,194 @@
package com.itbaizhan.action;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.itbaizhan.dao.DB;
import com.itbaizhan.orm.Torder;
public class order_servlet extends HttpServlet {
/**
* service(type)
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException I/O
*/
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
// 获取请求的type参数来判断要执行的操作
String type = req.getParameter("type");
if (type.endsWith("orderMana")) {
orderMana(req, res); // 订单管理
}
if (type.endsWith("orderDel")) {
orderDel(req, res); // 订单删除
}
if (type.endsWith("orderShouli")) {
orderShouli(req, res); // 受理订单
}
if (type.endsWith("huifuAdd")) {
huifuAdd(req, res); // 添加回复
}
}
/**
* orderMana
* requestJSP
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException I/O
*/
public void orderMana(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
List orderList = new ArrayList(); // 用来保存订单列表
String sql = "select * from t_order order by zhuangtai desc"; // 查询所有订单,按状态倒序排列
Object[] params = {}; // SQL语句参数当前查询没有参数
DB mydb = new DB(); // 创建DB对象来操作数据库
try {
mydb.doPstm(sql, params); // 执行SQL查询
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) {
Torder order = new Torder(); // 创建Torder对象来封装每一条订单数据
// 从结果集中提取每个字段的值并设置到Torder对象中
order.setId(rs.getString("id"));
order.setBianhao(rs.getString("bianhao"));
order.setShijian(rs.getString("shijian"));
order.setZhuangtai(rs.getString("zhuangtai"));
order.setHuifu(rs.getString("huifu"));
order.setSonghuodizhi(rs.getString("songhuodizhi"));
order.setFukuanfangshi(rs.getString("fukuanfangshi"));
order.setJine(rs.getInt("jine"));
order.setUser_id(rs.getString("user_id"));
// 将订单添加到订单列表
orderList.add(order);
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace(); // 捕获异常并打印堆栈信息
}
mydb.closed(); // 关闭数据库连接
// 将订单列表保存到request中以便JSP页面进行展示
req.setAttribute("orderList", orderList);
req.getRequestDispatcher("admin/order/orderMana.jsp").forward(req, res); // 请求转发到订单管理页面
}
/**
* orderDelID
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException I/O
*/
public void orderDel(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String id = req.getParameter("id"); // 获取要删除订单的ID
// 编写SQL语句删除指定ID的订单
String sql = "delete from t_order where id=?";
Object[] params = { id }; // 设置参数为订单ID
DB mydb = new DB(); // 创建DB对象
mydb.doPstm(sql, params); // 执行删除操作
mydb.closed(); // 关闭数据库连接
// 设置删除成功的消息,并转发到消息页面显示
req.setAttribute("msg", "信息删除完毕");
String targetURL = "/common/msg.jsp";
dispatch(targetURL, req, res);
}
/**
* orderShouli
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException I/O
*/
public void orderShouli(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String id = req.getParameter("id"); // 获取要受理的订单ID
// 编写SQL语句更新订单的状态为"yes"(已受理)
String sql = "update t_order set zhuangtai='yes' where id=?";
Object[] params = { id }; // 设置参数为订单ID
DB mydb = new DB(); // 创建DB对象
mydb.doPstm(sql, params); // 执行更新操作
mydb.closed(); // 关闭数据库连接
// 设置受理成功的消息,并转发到消息页面显示
req.setAttribute("msg", "订单受理完毕");
String targetURL = "/common/msg.jsp";
dispatch(targetURL, req, res);
}
/**
* huifuAdd
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException I/O
*/
public void huifuAdd(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String id = req.getParameter("id"); // 获取订单ID
String huifu = req.getParameter("huifu"); // 获取回复内容
// 编写SQL语句更新订单的回复内容
String sql = "update t_order set huifu=? where id=?";
Object[] params = { huifu, id }; // 设置参数为回复内容和订单ID
DB mydb = new DB(); // 创建DB对象
mydb.doPstm(sql, params); // 执行更新操作
mydb.closed(); // 关闭数据库连接
// 设置回复成功的消息,并转发到消息页面显示
req.setAttribute("msg", "操作成功");
String targetURL = "/common/msg.jsp";
dispatch(targetURL, req, res);
}
/**
* dispatch
* @param targetURI URI
* @param request
* @param response
*/
public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) {
// 获取目标URI的RequestDispatcher
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI);
try {
dispatch.forward(request, response); // 执行请求转发
} catch (ServletException e) {
e.printStackTrace(); // 捕获并打印异常
} catch (IOException e) {
e.printStackTrace(); // 捕获并打印异常
}
}
/**
* initServlet
* @param config Servlet
*/
public void init(ServletConfig config) throws ServletException {
super.init(config); // 调用父类的初始化方法
}
/**
* destroyServlet
* Servlet
*/
public void destroy() {
// 在此方法中可以释放一些资源,如数据库连接等
}
}

@ -0,0 +1,83 @@
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script language="JavaScript" src="<%=path %>/js/public.js" type="text/javascript"></script>
<script language="javascript">
function xinyongAdd(user_id) //添加用户信用评价模块
{ //引入外部js文件增加页面的整洁性和代码的可维护性
var url="<%=path %>/admin/xinyong/xinyongAdd.jsp?user_id="+user_id;
window.location.href=url; //跳转到用户id的xinyongAdd.jsp界面
}
</script>
</head>
<body leftmargin="2" topmargin="2" background='<%=path %>/img/allbg.gif'>
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="14" background="<%=path %>/img/tbg.gif">&nbsp;&nbsp;</td>
</tr>
<tr align="center" bgcolor="#FAFAF1" height="22">
<td width="4%">序号</td>
<td width="10%">账号</td>
<td width="10%">密 码</td>
<td width="10%">姓名</td>
<td width="10%">操作</td>
</tr>
<c:forEach items="${requestScope.userList}" var="user" varStatus="ss"> <!-- 获取用户信息输出序号初值为1 -->
<tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='red';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22">
<td bgcolor="#FFFFFF" align="center">
${ss.index+1}<!--设置序号从1开始 -->
</td>
<td bgcolor="#FFFFFF" align="center">
${user.loginname}
</td>
<td bgcolor="#FFFFFF" align="center">
${user.loginpw}
</td>
<td bgcolor="#FFFFFF" align="center">
${user.name} <!-- 取得用户的各种信息 -->
</td>
<td bgcolor="#FFFFFF" align="center">
<input type="button" value="添加信用评价" onclick="xinyongAdd(${user.id})"/> <!-- 触发添加信用jsp文件 -->
</td>
</tr>
</c:forEach>
</table>
<c:forEach items="${requestScope.xinyongList}" var="xinyong" varStatus="sta">
&nbsp;&nbsp;&nbsp;
<fieldset style="width:60%; margin-left:5px;"><legend class="fieldtitle"></legend> <!-- 使用fieldset来为这几条加上框 -->
<table class="bill" width="97%" cellpadding="4" cellspacing="4" border="0">
<tr>
<td style="width: 100">属性:${xinyong.shuxing}</td>
</tr>
<tr>
<td style="width: 100">评价内容:${xinyong.neirong}</td>
</tr>
<tr>
<td style="width: 100">评价时间:${xinyong.shijian}</td>
</tr>
</table>
</fieldset>
<br/>
</c:forEach>
</body>
</html>

@ -0,0 +1,66 @@
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script language="JavaScript" src="<%=path %>/js/public.js" type="text/javascript"></script>
<script language="javascript">
function userDel(id)
{
if(confirm('您确定删除吗?'))
{
window.location.href="<%=path %>/user?type=userDel&id="+id; //如果确认删除,则会跳转到这个界面,?后为传入的参数,提示用户信息删除完毕
}
}
</script>
</head>
<body leftmargin="2" topmargin="2" background='<%=path %>/img/allbg.gif'>
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="14" background="<%=path %>/img/tbg.gif">&nbsp;&nbsp;</td>
</tr>
<tr align="center" bgcolor="#FAFAF1" height="22">
<td width="4%">序号</td>
<td width="10%">账号</td>
<td width="10%">密 码</td>
<td width="10%">姓名</td>
<td width="10%">操作</td>
</tr>
<c:forEach items="${requestScope.userList}" var="user" varStatus="ss"> <!-- 对于每一项 取得用户名将序号初值设置为1-->
<tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='red';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22">
<td bgcolor="#FFFFFF" align="center">
${ss.index+1}
</td>
<td bgcolor="#FFFFFF" align="center">
${user.loginname}
</td>
<td bgcolor="#FFFFFF" align="center">
${user.loginpw}
</td>
<td bgcolor="#FFFFFF" align="center">
${user.name}
</td>
<td bgcolor="#FFFFFF" align="center">
<input type="button" value="删除" onclick="userDel(${user.id})"/> <!-- 删除时删除主键用户ID完成对整个数据项的删除 -->
</td>
</tr>
</c:forEach>
</table>
</body>
</html>

@ -0,0 +1,96 @@
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page isELIgnored="false" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!-- 修改密码模块 -->
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script type='text/javascript' src='<%=path %>/dwr/interface/loginService.js'></script>
<script type='text/javascript' src='<%=path %>/dwr/engine.js'></script>
<script type='text/javascript' src='<%=path %>/dwr/util.js'></script>
<script language="javascript">
function check()
{
var userPwReal="${sessionScope.admin.userPw}"; //从session范围里取得管理员的密码赋值给userPwReal
if(document.formPw.userPw.value !=userPwReal) //如果取得的输入密码与原密码不同,提示原密码不正确
{
alert("原密码不正确");
return ;
}
if(document.formPw.userPw1.value =="") //如果新密码设置为空,提示新密码不能为空
{
alert("新密码不能空");
return ;
}
document.getElementById("indicator").style.display="block"; //将每一栏设置成块级,自动换行
loginService.adminPwEdit(document.formPw.userPw1.value,callback);
//调用loginService.adminPwEdit函数来对用户的账号密码是否正确做判断
}
function callback(data)//callback函数原密码与新密码通过后执行callback提示修改成功
{
document.getElementById("indicator").style.display="none";
alert("修改成功");
}
</script>
</head>
<body leftmargin="2" topmargin="9" background='<%=path %>/img/allbg.gif'>
<form method="post" action="<%=path %>/userPwEdit.action" name="formPw">
<table width="98%" align="center" border="0" cellpadding="4" cellspacing="1" bgcolor="#CBD8AC" style="margin-bottom:8px">
<tr bgcolor="#EEF4EA">
<td colspan="2" background="<%=path %>/img/wbg.gif" class='title'><span>密码修改</span></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="25%" bgcolor="#FFFFFF" align="right">
登录名:
</td>
<td width="75%" bgcolor="#FFFFFF">
<input type="text" value="${sessionScope.admin.userName }" name="userName" size="20" disabled="disabled"/>
<!--登录名取得是session范围里取得管理员的用户名disabled="disabled"为禁止输入-->
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="25%" bgcolor="#FFFFFF" align="right">
原密码:
</td>
<td width="75%" bgcolor="#FFFFFF">
<input type="password" name="userPw" id="userPw" size="22"/>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="25%" bgcolor="#FFFFFF" align="right">
新密码:
</td>
<td width="75%" bgcolor="#FFFFFF">
<input type="password" id="userPw1" name="userPw1" size="22"/>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="25%" bgcolor="#FFFFFF" align="right">
&nbsp;
</td>
<td width="75%" bgcolor="#FFFFFF">
<input type="button" value="修改" onclick="check()"/>
&nbsp;&nbsp;&nbsp;
<input type="reset" value="重置"/>
<img id="indicator" src="<%=path %>/images/loading.gif" alt="Loading..." style="display:none"/> <!-- 插入载入动画 -->
</td>
</tr>
</table>
</form>
</body>
</html>

@ -0,0 +1,234 @@
package com.itbaizhan.action;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
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 com.itbaizhan.dao.DB;
import com.itbaizhan.orm.Tuser;
import com.itbaizhan.service.liuService;
public class user_servlet extends HttpServlet {
/**
* service(type)
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException I/O
*/
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
// 获取请求的type参数来判断要执行的操作
String type = req.getParameter("type");
if (type.endsWith("userReg")) {
userReg(req, res); // 会员注册
}
if (type.endsWith("userLogout")) {
userLogout(req, res); // 会员退出
}
if (type.endsWith("userMana")) {
userMana(req, res); // 会员管理
}
if (type.endsWith("userDel")) {
userDel(req, res); // 会员删除
}
if (type.endsWith("userDetail")) {
userDetail(req, res); // 会员详细信息
}
}
/**
* userReg
*
* @param req HttpServletRequest
* @param res HttpServletResponse
*/
public void userReg(HttpServletRequest req, HttpServletResponse res) {
String id = String.valueOf(new Date().getTime()); // 使用当前时间戳作为用户ID
String loginname = req.getParameter("loginname"); // 获取用户名
String loginpw = req.getParameter("loginpw"); // 获取密码
String name = req.getParameter("name"); // 获取用户姓名
String del = "no"; // 设置删除标志为"no"表示用户没有被删除
// 检查账号是否已经被占用
String s = liuService.panduan_zhanghao(loginname);
if (s.equals("yizhan")) {
// 如果账号已经被占用,返回提示信息
req.setAttribute("message", "账号已被占用,请输入其他账号");
req.setAttribute("path", "site/userreg/userreg.jsp");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
} else {
// 如果账号未被占用,则执行注册操作
String sql = "insert into t_user values(?,?,?,?,?)"; // 插入新用户的SQL语句
Object[] params = {id, loginname, loginpw, name, del}; // 设置SQL语句的参数
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行插入操作
mydb.closed(); // 关闭数据库连接
// 注册成功,返回成功页面
req.setAttribute("message", "注册成功,请登录");
req.setAttribute("path", "site/default.jsp");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
}
/**
* userLogout退
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException I/O
*/
public void userLogout(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
HttpSession session = req.getSession(); // 获取当前会话
session.setAttribute("userType", null); // 清除会话中的用户类型
session.setAttribute("user", null); // 清除会话中的用户信息
// 提示用户退出成功
req.setAttribute("message", "成功退出系统");
req.setAttribute("path", "site/default.jsp");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
/**
* userMana
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException I/O
*/
public void userMana(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
List userList = new ArrayList(); // 用于保存用户信息的列表
String sql = "select * from t_user where del='no'"; // 查询所有未被删除的用户
Object[] params = {}; // SQL查询没有参数
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询操作
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) {
Tuser user = new Tuser(); // 创建Tuser对象来封装每个用户的数据
user.setId(rs.getString("id"));
user.setLoginname(rs.getString("loginname"));
user.setLoginpw(rs.getString("loginpw"));
user.setName(rs.getString("name"));
userList.add(user); // 将用户添加到列表中
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace(); // 捕获异常并打印堆栈信息
}
mydb.closed(); // 关闭数据库连接
// 将用户列表传递给JSP页面
req.setAttribute("userList", userList);
req.getRequestDispatcher("admin/user/userMana.jsp").forward(req, res);
}
/**
* userDelID
* `del`"yes"
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException I/O
*/
public void userDel(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String id = req.getParameter("id"); // 获取要删除用户的ID
String sql = "update t_user set del='yes' where id=?"; // 更新SQL语句将del字段设为"yes"
Object[] params = {id}; // 设置参数为用户ID
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行更新操作
mydb.closed(); // 关闭数据库连接
// 返回删除成功的消息
req.setAttribute("msg", "用户信息删除完毕");
String targetURL = "/common/msg.jsp";
dispatch(targetURL, req, res);
}
/**
* userDetail
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException I/O
*/
public void userDetail(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String id = req.getParameter("id"); // 获取用户ID
List userList = new ArrayList(); // 用于保存用户信息的列表
String sql = "select * from t_user where id=?"; // 查询指定ID的用户
Object[] params = {id}; // 设置参数为用户ID
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询操作
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) {
Tuser user = new Tuser(); // 创建Tuser对象来封装用户数据
user.setId(rs.getString("id"));
user.setLoginname(rs.getString("loginname"));
user.setLoginpw(rs.getString("loginpw"));
user.setName(rs.getString("name"));
userList.add(user); // 将用户添加到列表中
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace(); // 捕获异常并打印堆栈信息
}
mydb.closed(); // 关闭数据库连接
// 获取用户信用信息并将数据传递给JSP页面
req.setAttribute("userList", userList);
req.setAttribute("xinyongList", liuService.getxinyongList(id));
req.getRequestDispatcher("admin/user/userDetail.jsp").forward(req, res);
}
/**
* dispatch
* @param targetURI URI
* @param request
* @param response
*/
public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) {
// 获取目标URI的RequestDispatcher
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); // 获取请求转发器
try {
dispatch.forward(request, response); // 执行请求转发
return;
} catch (ServletException e) {
e.printStackTrace(); // 捕获ServletException异常并打印堆栈信息
} catch (IOException e) {
e.printStackTrace(); // 捕获IOException异常并打印堆栈信息
}
}
/**
* initServlet
* @param config ServletConfigServlet
* @throws ServletException Servlet
*/
public void init(ServletConfig config) throws ServletException {
super.init(config); // 调用父类的init方法进行初始化
}
/**
* destroyServlet
*/
public void destroy() {
// 在此方法中执行清理工作,例如关闭数据库连接等资源释放操作。
}
}

@ -0,0 +1,83 @@
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page isELIgnored="false"%>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!-- 1.插入时间格式的包.2.插入处理时间的包。34.使用JSTLJSP标准标签库5.使得EL不当成字符串处理-->
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
<meta http-equiv="description" content="This is my page" />
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script language="javascript">
function c() //如果评价内容为空,提示请输入评论内容
{
if(document.formAdd.neirong.value=="")
{
alert("请输入评价内容");
return false;
}
document.formAdd.submit(); //如果不为空则提交信息
}
</script>
</head>
<body leftmargin="2" topmargin="9" background='<%=path %>/img/allbg.gif'> <!-- 距离左边为2距离上面为9背景图片为。。 -->
<form action="<%=path %>/xinyong?type=xinyongAdd" name="formAdd" method="post"> <!--表单的方法为提交 -->
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="4" background="<%=path %>/img/tbg.gif">&nbsp;&nbsp;</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='red';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22">
<td width="10%" bgcolor="#FFFFFF" align="right">
评价属性:
</td>
<td width="90%" bgcolor="#FFFFFF" align="left">
<input type="radio" name="shuxing" value="好评" checked="checked" style="border: 0px;"/>好评
&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" name="shuxing" value="差评" style="border: 0px;"/>差评
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="10%" bgcolor="#FFFFFF" align="right">
评价内容:
</td>
<td width="90%" bgcolor="#FFFFFF" align="left">
<input type="text" name="neirong" size="40"/>
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="10%" bgcolor="#FFFFFF" align="right">
评价时间:
</td>
<td width="90%" bgcolor="#FFFFFF" align="left">
<input type="text" name="shijian" size="40" value="<%=new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date())%>"/>
<!-- 取得系统当前时间格式为yyyy年-MM月-dd号 HH点mm分 -->
</td>
</tr>
<tr align='center' bgcolor="#FFFFFF" height="22">
<td width="10%" bgcolor="#FFFFFF" align="right">
&nbsp;
</td>
<td width="90%" bgcolor="#FFFFFF" align="left">
<input type="hidden" name="user_id" value="<%=request.getParameter("user_id") %>"/> <!-- 插入隐藏域获得用户的id -->
<input type="button" value="提交" onclick="c()"/>&nbsp;
<input type="reset" value="重置"/>&nbsp;
</td>
</tr>
</table>
</form>
</body>
</html>

@ -0,0 +1,160 @@
package com.itbaizhan.action;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.itbaizhan.dao.DB;
import com.itbaizhan.orm.Txinyong;
public class xinyong_servlet extends HttpServlet {
/**
* servicetype
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException IO
*/
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String type = req.getParameter("type"); // 获取请求参数 type
if (type.endsWith("xinyongAdd")) {
xinyongAdd(req, res); // 调用信用添加方法
}
if (type.endsWith("xinyongMana")) {
xinyongMana(req, res); // 调用信用管理方法
}
if (type.endsWith("xinyongDel")) {
xinyongDel(req, res); // 调用信用删除方法
}
}
/**
*
* @param req HttpServletRequest
* @param res HttpServletResponse
*/
public void xinyongAdd(HttpServletRequest req, HttpServletResponse res) {
String id = String.valueOf(new Date().getTime()); // 使用当前时间戳生成唯一ID
String shuxing = req.getParameter("shuxing").trim(); // 获取信用属性
String neirong = req.getParameter("neirong").trim(); // 获取信用内容
String shijian = req.getParameter("shijian").trim(); // 获取时间
String user_id = req.getParameter("user_id").trim(); // 获取用户ID
// 插入SQL语句
String sql = "insert into t_xinyong(id, shuxing, neirong, shijian, user_id) values(?,?,?,?,?)";
Object[] params = {id, shuxing, neirong, shijian, user_id};
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行插入操作
mydb.closed(); // 关闭数据库连接
req.setAttribute("msg", "操作成功"); // 设置提示消息
String targetURL = "/common/msg.jsp"; // 跳转到提示页面
dispatch(targetURL, req, res); // 执行请求转发
}
/**
*
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException IO
*/
public void xinyongMana(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String user_id = req.getParameter("user_id").trim(); // 获取用户ID
List xinyongList = new ArrayList(); // 用于存储信用记录的列表
String sql = "select * from t_xinyong where user_id=?";
Object[] params = {user_id};
DB mydb = new DB();
try {
mydb.doPstm(sql, params); // 执行查询操作
ResultSet rs = mydb.getRs(); // 获取查询结果集
while (rs.next()) {
Txinyong xinyong = new Txinyong(); // 创建信用对象
// 设置信用对象的属性
xinyong.setId(rs.getString("id"));
xinyong.setShuxing(rs.getString("shuxing"));
xinyong.setNeirong(rs.getString("neirong"));
xinyong.setShijian(rs.getString("shijian"));
xinyong.setUser_id(rs.getString("user_id"));
xinyongList.add(xinyong); // 将信用对象添加到列表中
}
rs.close(); // 关闭结果集
} catch (Exception e) {
e.printStackTrace(); // 捕获异常并打印堆栈信息
}
mydb.closed(); // 关闭数据库连接
req.setAttribute("xinyongList", xinyongList); // 将信用列表传递到请求中
req.getRequestDispatcher("admin/xinyong/xinyongMana.jsp").forward(req, res); // 转发请求到管理页面
}
/**
*
* @param req HttpServletRequest
* @param res HttpServletResponse
* @throws ServletException Servlet
* @throws IOException IO
*/
public void xinyongDel(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String id = req.getParameter("id").trim(); // 获取信用记录ID
String sql = "delete from t_xinyong where id=?";
Object[] params = {id};
DB mydb = new DB();
mydb.doPstm(sql, params); // 执行删除操作
mydb.closed(); // 关闭数据库连接
req.setAttribute("msg", "操作成功"); // 设置提示消息
String targetURL = "/common/msg.jsp"; // 跳转到提示页面
dispatch(targetURL, req, res); // 执行请求转发
}
/**
*
* @param targetURI URI
* @param request HttpServletRequest
* @param response HttpServletResponse
*/
public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) {
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); // 获取请求转发器
try {
dispatch.forward(request, response); // 执行转发
return;
} catch (ServletException e) {
e.printStackTrace(); // 捕获并打印ServletException异常
} catch (IOException e) {
e.printStackTrace(); // 捕获并打印IOException异常
}
}
/**
* ServletServlet
* @param config ServletConfigServlet
* @throws ServletException Servlet
*/
public void init(ServletConfig config) throws ServletException {
super.init(config); // 调用父类的init方法进行初始化
}
/**
* ServletServlet
*
*/
public void destroy() {
// 在此方法中执行清理工作,例如释放数据库连接等
}
}
Loading…
Cancel
Save