使用MVC模式实现网上书店(大二实验报告)
1.问题描述:
主页面要求实现如下图所示:
登录前,若选择“个人中心”,则提示请登录;登录后,页面显示如图所示:
在主页面显示“欢迎你XXX”,并可进入个人中心。选择“安全退出”,则回到登录前的界面
2.设计思路
项目由三个页面组成(注册页面先不实现),即登录界面,个人中心,以及主页面。
bookmain.jsp 主页面
Login.jsp 登录界面
person.jsp 个人中心
有两个servlet。一个是登录时需要进行判断转发,一个是退出时需要进行判断转发。
Exit.java 退出的servlet
LoginSession.java 登录的servlet
有一个访问数据库的类:LoginMySQL.java
有一个数据模型类:User.java
有一个判断类:LoginManagement.java
综上所述,MVC设计模式为:
controller层:Exit.java LoginSession.java
dao层:LoginMySQL.java
model层:User.java
service层:LoginManagement.java
3.代码实现
-
实现主页面bookmain.jsp
<%@page import="javax.swing.text.Document"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="model.User"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <div> <div style="width: 800px; margin: auto" align="center"> <h3 align="center">网上书店</h3> <a href="Login.jsp">登录</a> <a href="">注册</a> <a href="person.jsp">个人中心</a> <a href="Exit">安全退出</a><span id="welcome"></span> </div> <% User user=(User)session.getAttribute("user"); if(user != null){%> <script> document.getElementById("welcome").innerHTML="欢迎你" + "<%=user.getAccount() %>"; </script><% }else{ %> <script type="text/javascript"> document.getElementById("welcome").innerHTML=""; </script><% } %> </div> </body> </html>
将登录指向Login.jsp 个人中心指向person.jsp 安全退出指向servlet的Exit,并设置它的id为welcome方便后来插入内容。java代码部分则,如果session对象中属性"name"值为空则不进行添加操作,如果部位空,则在id为welcome的标签后插入内容:欢迎你XXX
-
实现Login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <link rel="stylesheet" href="main.css"> </head> <body> <form action="LoginSession" method="post"> 账号:<input type="text" size="20" name="account"><br> 密码:<input type="password" size="20" name="secret"> <input type="submit" value="submit"> </form> <% if (session.getAttribute("user") != null) { if (request.getAttribute("log") != null) { String temp = (String)request.getAttribute("log"); if (temp.equals("err")) { out.println("账号密码错误"); } } } %> </body> </html>
用一个表单实现一个简单的账户密码的输入功能,使用post方法,action指向servlet:LoginSession
-
实现LoginSession.java
package controller; import java.io.IOException; import model.User; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import service.LoginManagement; @WebServlet("/LoginSession") public class LoginSession extends HttpServlet { private static final long serialVersionUID = 1L; public LoginSession() { super(