jsp传智书城前台代码完善(图书查找+我的账户+用户退出)
搜索框输入java,点击搜索到购物车页面menu_search.jspinfo.jsp2.1 selectBooksServlet二、用户退出1.案例演示点击用户退出,返回到主页面head.jsplogin.jsp2.2 UsersServlet新版可以用value当做路径,旧版需要配置xml,这里UserServlet用映射路径client/logins三、我的账户1.案例演示myAccount
·
文章目录
一、图书查找
1.案例演示
搜索框输入java,点击搜索到购物车页面
menu_search.jsp
info.jsp
2.实现步骤
2.1 menu_search.jsp
<form action="${pageContext.request.contextPath }/selectBooksServlet" id="searchform">
<table width="100%" border="0" cellspacing="0">
<tr>
<td style="text-align:right; padding-right:220px">
Search
<input type="text" name="bookname" class="inputtable" id="textfield" value="请输入书名"
onmouseover="this.focus();"
onclick="my_click(this, 'textfield');"
onBlur="my_blur(this, 'textfield');"/>
<a href="#">
<img src="${pageContext.request.contextPath}/client/images/serchbutton.gif" border="0" style="margin-bottom:-4px"
onclick="search()"/>
</a>
</td>
</tr>
</table>
</form>
2.1 selectBooksServlet
@WebServlet(name = "selectBooksServlet", value = "/selectBooksServlet")
public class selectBooksServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
//由书名查找书
String name=request.getParameter("bookname");
BooksDao bd=new BooksDao();
Books b=new Books();
b.setName(name);
Books books=bd.select(b);
request.getSession().setAttribute("p",books);
request.getRequestDispatcher("/client/info.jsp").forward(request,response);
}
}
2.1 BooksDao
//由书名查找书
public Books select(Books book){
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
Books books=new Books();
try {
con = JDBCutils.getConnection();
String sql="select *from books where name=?";
pst=con.prepareStatement(sql);
pst.setString(1,book.getName());
rs=pst.executeQuery();
if(rs.next()){
books.setId(rs.getInt("id"));
books.setName(rs.getString("name"));
books.setPrice(rs.getDouble("price"));
books.setCatagory(rs.getString("catagory"));
books.setNum(rs.getInt("num"));
books.setDescription(rs.getString("description"));
books.setImgurl(rs.getString("imgurl"));
}
} catch (Exception e) {
e.printStackTrace();
}
return books;
}
二、用户退出
1.案例演示
点击用户退出,返回到主页面
head.jsp
login.jsp
2.实现步骤
2.1 head.jsp
| <a href="${pageContext.request.contextPath}/client/logins?act=exit" onclick="javascript:return confirm_logout()">用户退出</a>
<br><br><br>欢迎您: ${user.username}
<%
2.2 UsersServlet
新版可以用value当做路径,旧版需要配置xml,这里UserServlet用映射路径client/logins
@WebServlet(name = "UsersServlet2", value = {"/UserServlet"})
public class UsersServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//前台所有servlet
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String act = request.getParameter("act");
//用户退出
if("exit".equals(act)){
request.getSession().invalidate();
response.sendRedirect(request.getContextPath()+"/client/login.jsp");
}
}
}
<servlet>
<servlet-name>UsersServlet2</servlet-name>
<servlet-class>bookshop.servlet.UsersServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UsersServlet2</servlet-name>
<url-pattern>/client/logins</url-pattern>
</servlet-mapping>
三、我的账户
1.案例演示
myAccount.jsp
modifyuserinfo.jsp
orderlist.jsp
2.实现步骤
2.1 myAccount.jsp
<table width="100%" border="0" cellspacing="0" style="margin-top:30px">
<tr>
<td class="listtitle">我的帐户</td>
</tr>
<tr>
<td class="listtd">
<img src="${pageContext.request.contextPath }/client/images/icon1.png" width="15" height="10" />
<a href="${pageContext.request.contextPath }/client/modifyuserinfo.jsp">用户信息修改</a>
</td>
</tr>
<tr>
<td class="listtd">
<img src="${pageContext.request.contextPath }/client/images/icon2.png" width="15" height="10" />
<a href="${pageContext.request.contextPath}/client/logins?act=showorder">订单查询</a>
</td>
</tr>
<tr>
<td class="listtd">
<img src="${pageContext.request.contextPath }/client/images/icon3.png" width="15" height="10" />
<a href="${pageContext.request.contextPath}/client/logins?act=exit" onclick="javascript:return confirm_logout()">用户退出</a>
</td>
</tr>
</table>
2.2 modifyuserinfo.jsp
//自己创建form表单,进行提交处理
<form action="${pageContext.request.contextPath}/client/logins?act=update&id=${user.id}" method="post">
<table cellspacing="0" class="infocontent">
<tr>
<td>
<table width="100%" border="0" cellspacing="2" class="upline">
<tr>
<td style="text-align:right; width:20%">会员邮箱:</td>
<td style="width:40%; padding-left:20px">${user.email }</td>
<td> </td>
</tr>
<tr>
<td style="text-align:right">会员名:</td>
<td style="padding-left:20px">${user.username }</td>
<td> </td>
</tr>
<tr>
<td style="text-align:right">修改密码:</td>
<td><input type="password" class="textinput" /></td>
<td><font color="#999999">密码设置至少6位,请区分大小写</font></td>
</tr>
<tr>
<td style="text-align:right">重复密码:</td>
<td><input name="password" type="password" class="textinput" /></td>
<td> </td>
</tr>
<tr>
<td style="text-align:right">性别:</td>
<td colspan="2">
<input type="radio" name="gender" value="男" ${user.gender=='男'?'checked':'' }/> 男
<input type="radio" name="gender" value="女" ${user.gender=='女'?'checked':'' }/> 女
</td>
</tr>
<tr>
<td style="text-align:right">联系方式:</td>
<td colspan="2">
<input name="telephone" type="text" value="${user.telephone}" class="textinput" />
</td>
</tr>
<tr>
<td style="text-align:right"> </td>
<td> </td>
<td> </td>
</tr>
</table>
<%-- <p style="text-align:center">--%>
<%-- <a href="success.html" >--%>
<%-- <img src="${pageContext.request.contextPath }/client/images/botton_gif_025.gif" border="0" width="140" height="35"/>--%>
<%-- </a>--%>
<%-- </p>--%>
//创建自己的提交图片
<table width="70%" border="0" cellspacing="0">
<tr>
<td style="padding-top: 20px; text-align: center">
<input type="image" src="${pageContext.request.contextPath }/client/images/botton_gif_025.gif" name="submit" border="0" width="140" height="35"/>
</td>
</tr>
</table>
<p style="text-align:center"> </p>
</td>
</tr>
</table>
</form>
2.2 UsersServlet
//用户信息修改
if("update".equals(act)){
String id= request.getParameter("id");
int bid=Integer.parseInt(id);
UsersDao ud=new UsersDao();
//实例化Users
Users u=new Users();
//设置修改的数值
u.setId(bid);
u.setPassword(request.getParameter("password"));
u.setGender(request.getParameter("gender"));
u.setTelephone(request.getParameter("telephone"));
if(ud.updateuser(u)){
response.getWriter().println("update success");
}else {
response.getWriter().println("update error");
}
}
//订单查询(由user_id找到订单)
if("showorder".equals(act)){
OrderDao od=new OrderDao();
Order o=new Order();
Users user= (Users) request.getSession().getAttribute("user");
o.setUser(user);
List<Order> order=new ArrayList<Order>();
order=od.selectid(o);
request.getSession().setAttribute("orders",order);
request.getRequestDispatcher("/client/orderlist.jsp").forward(request,response);
}
2.2 UsersDao
//用户内容修改
public boolean updateuser(Users users){
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
con = user.utils.JDBCutils.getConnection();
String sql="update users set password=?,gender=?,telephone=? where id=?";
pst=con.prepareStatement(sql);
pst.setString(1,users.getPassword());
pst.setString(2,users.getGender());
pst.setString(3, users.getTelephone());
pst.setInt(4,users.getId());
int i=pst.executeUpdate();
if(i==1){
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
user.utils.JDBCutils.close(con, pst, rs);
}
return false;
}
2.2 OrderDao
//由user_id找到订单
public List selectid(Order order){
List<Order> list=new ArrayList<Order>();
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
con = JDBCutils.getConnection();
String sql="select *from orders,users where orders.user_id=users.id and user_id=?";
pst=con.prepareStatement(sql);
pst.setInt(1,order.getUser().getId());
rs=pst.executeQuery();
while (rs.next()){
Order orders=new Order();
Users users=new Users();
orders.setId(rs.getInt("id"));
orders.setReceiverName(rs.getString("receiverName"));
orders.setReceiverAddress(rs.getString("receiverAddress"));
orders.setReceiverPhone(rs.getString("receiverPhone"));
orders.setMoney(rs.getInt("money"));
orders.setPaystate(rs.getInt("paystate"));
orders.setOrdertime(rs.getString("ordertime"));
users.setUsername(rs.getString("username"));
orders.setUser(users);
list.add(orders);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
四、我的账户中订单查询
1.案例演示
orderlist.jsp
点击查看到结算页面
orderInfo.jsp
跳转到支付页面
pay.jsp
点击支付回来发现已经支付
点击删除删除该订单发现已经删除
2.实现步骤
订单查看
2.1 orderlist.jsp
<td class="tableopentd03">
<a href="${pageContext.request.contextPath}/client/logins?act=shower&id=${order.id}">查看</a>
<c:if test="${order.paystate==0 }">
<a href="${pageContext.request.contextPath}/client/logins?act=delete&id=${order.id}" onclick="javascript:return o_del()">刪除</a>
</c:if>
<c:if test="${order.paystate!=0 }">
<a href="${pageContext.request.contextPath}/client/logins?act=delete?id=${order.id}&type=client" onclick="javascript:return o_del()">刪除</a>
</c:if>
</td>
2.1 UsersServlet
查看
//查看单个订单
if("shower".equals(act)){
//订单编号order id
String id=request.getParameter("id");
int sid= Integer.parseInt(id);
//orders,users 查询
Order o=new Order();
OrderDao od=new OrderDao();
List<Order> order=new ArrayList<Order>();
order=od.show(sid);
//books,orderItems 查询
List<OrderItem> orderitems=new ArrayList<OrderItem>();
orderitems=od.show2(sid);
request.getSession().setAttribute("orderItems",orderitems);;
request.getSession().setAttribute("order",order);
request.getRequestDispatcher("/client/orderInfo.jsp").forward(request,response);
}
2.1 OrderDao
public List show(int id){
List<Order> list=new ArrayList<Order>();
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
Users users=new Users();
try {
con = JDBCutils.getConnection();
String sql="select orders.id,receiverName,receiverAddress,receiverPhone,money,paystate,ordertime,username from orders,users where orders.user_id=users.id and orders.id=?";
pst=con.prepareStatement(sql);
pst.setInt(1,id);
rs=pst.executeQuery();
if(rs.next()){
Order orders=new Order();
orders.setId(rs.getInt("id"));
orders.setReceiverName(rs.getString("receiverName"));
orders.setReceiverAddress(rs.getString("receiverAddress"));
orders.setReceiverPhone(rs.getString("receiverPhone"));
orders.setMoney(rs.getInt("money"));
orders.setPaystate(rs.getInt("paystate"));
orders.setOrdertime(rs.getString("ordertime"));
users.setUsername(rs.getString("username"));
orders.setUser(users);
list.add(orders);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
//查询订单内容view.jsp中的buyname和books
public List show2(int id){
List<OrderItem> list=new ArrayList<OrderItem>();
List<Books> list2=new ArrayList<Books>();
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
Users users=new Users();
try {
con = JDBCutils.getConnection();
String sql="select * from books,orderItems where books.id=orderItems.book_id and order_id=?";
pst=con.prepareStatement(sql);
pst.setInt(1,id);
rs=pst.executeQuery();
if(rs.next()){
Books p=new Books();
OrderItem oi=new OrderItem();
oi.setBuynum(rs.getInt("buynum"));
p.setId(rs.getInt("book_id"));
p.setName(rs.getString("name"));
p.setPrice(rs.getDouble("price"));
p.setCatagory(rs.getString("catagory"));
p.setDescription(rs.getString("description"));
p.setImgurl(rs.getString("imgurl"));
oi.setP(p);
list.add(oi);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
订单支付
2.2 pay.jsp
2.2 UsersServlet
//支付订单
if("pay".equals(act)){
//订单编号order id
String id=request.getParameter("id");
int sid= Integer.parseInt(id);
OrderDao od=new OrderDao();
if(od.pay(sid)){
response.getWriter().println("pay success");
}else {
response.getWriter().println("pay error");
}
}
2.2 OrderDao
//由订单编号修改支付状态
public boolean pay(int id){
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
con = JDBCutils.getConnection();
String sql="update orders set paystate=1 where id=?";
pst=con.prepareStatement(sql);
pst.setInt(1,id);
System.out.println(pst);
int i=pst.executeUpdate();
if(i==1){
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCutils.close(con, pst, rs);
}
return false;
}
订单删除
2.3 UsersServlet
删除
//删除我的订单
if("delete".equals(act)){
String id=request.getParameter("id");
int sid= Integer.parseInt(id);
OrderDao od=new OrderDao();
if(od.delete2(sid)){
if(od.delete(sid)){
response.getWriter().println("delete success");
}else {
response.getWriter().println("delete error");
}
}else {
response.getWriter().println("delete error");
}
}
2.3 OrderDao
//删除我的订单orderItems
public boolean delete2(int id){
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
con = JDBCutils.getConnection();
String sql="delete from orderItems where order_id=?";
pst=con.prepareStatement(sql);
pst.setInt(1,id);
System.out.println(pst);
int i=pst.executeUpdate();
if(i==1){
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCutils.close(con, pst, rs);
}
return false;
}
//删除我的订单orders
public boolean delete(int id){
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
con = JDBCutils.getConnection();
String sql="delete from orders where id=?";
pst=con.prepareStatement(sql);
pst.setInt(1,id);
System.out.println(pst);
int i=pst.executeUpdate();
if(i==1){
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCutils.close(con, pst, rs);
}
return false;
}
五、报错解决方式
更多推荐
所有评论(0)