Download presentation
Presentation is loading. Please wait.
1
MVC Servlet与MVC设计模式
2
回顾 提问 简述会话概念 会话跟踪有几种方式?分别是什么? 什么是Cookie? JSP中如何使用Cookie? session如何使用?
3
本章案例 使用MVC设计模式实现登录功能
4
本章目标 介绍MVC模式的优势 使用MVC模式实现登录功能
5
预习检查 提问 MVC设计模式中各个组件的含义? MVC设计模式的优势 ?
6
JSP的缺点(2-1) JSP中登录功能的实现 <% request.setCharacterEncoding("GBK");
String pass = request.getParameter("password"); String user = request.getParameter("loginName"); String sql = "select * from userinfo where loginname = ?"; Connection con = ConnectionManager.getConnction(); PreparedStatement pStatement = con.prepareStatement(sql); pStatement.setString(1, user); ResultSet rs = pStatement.executeQuery(); if (rs.next() && rs.getString("password").equals(pass)) { User logineduser = new User(user, pass); session.setAttribute("LOGINED_USER", logineduser); response.sendRedirect("books.jsp"); } else { response.sendRedirect("register.html"); } %> JSP中大量 调用业务代码 访问数据库 JSP的主要作用是什么? 提交数据到register.jsp 逻辑判断
7
JSP的缺点(2-2) 美工进行页面编辑和维护 这是什么呀?我 <% 只认识HTML标签
for (int i=0;i<titles.size();i++){ if (i % 3 == 0){ %> <TR> <% } %> <TD><%=subStr(currentBook.getTitle()) %></TD> </TR> <TD><IMG src="/store/images/<%=currentBook .getImageFile() %>"/ > </TD> 如果将流程控制和 数据显示分离就好了 美工
8
如何解决JSP的缺点 1、在你所写的程序中,很多JSP页面直接 访问数据库,如果数据库表名改变了, 你所要做的工作是什么?
2、你的程序中所有的页面都需要美工进行美 化,但是他不懂Java怎么办?
9
设计模式的定义 什么是设计模式 设计模式的作用 是一套被反复使用、多数人知晓的、代码设计经验的总结
模式必须是典型问题(不是个别问题)的解决方案 设计模式的作用 解决一类问题的成功经验 是为了可重用代码、让代码更容易被他人理解、保证代码可靠性
10
MVC设计模式 MVC设计模式 模型 ----- Model 视图 ----- View 控制器 ----- Controller
JavaBean JSP Servlet
11
MVC设计模式 MVC设计模式的模块组成 模型:代表应用程序状态和业务逻辑 视图:提供可交互的客户界面,向客户显示模型数据
控制器:根据客户的请求来操纵模型,并把结果经由视图展现给客户
12
生活案例 顾客点菜 把菜单给服务员 把菜单给厨师 厨师 服务员 以各自的功 加工菜肴 能进行分工 服务员上菜 顾客点菜 把菜给服务员 服务员
13
Web程序的MVC Web容器处理请求过程 数 据 库 数 据 库 请求 响应 执行 客户端 Servlet控制器,用 于接收请求和控制
应用程序的流程 Servlet 转向 JSP页面 JSP视图动 态显示数据 访问 数 据 库 数 据 库 调用 JavaBean数据 模型进行业务逻 辑和访问数据库 返回数据 JavaBean
14
MVC模式的应用——登录 第一步:创建数据库连接DBConnection类 public class DBConnection {
private final static String private final static String USERNAME = "scott"; private final static String PASSWORD = "tiger"; public static Connection getConnection(){ Connection con = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection(URL, USERNAME, PASSWORD); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { } return con;
15
MVC模式的应用——登录 第二步:创建名为UserBean的登录用户Javabean public class UserBean {
/****以下为属性以及对应的get/set方法****/ public boolean login(){ boolean flag = false; Connection con = DBConnection.getConnection(); PreparedStatement pstmt = null; ResultSet rs = null; String sql = "select * from t_user where username = ?"; try { pstmt = con.prepareStatement(sql); pstmt.setString(1, this.getUserName()); rs = pstmt.executeQuery(); if(rs.next()){ String password = rs.getString("userpassword"); if(this.getUserPassword().equals(password)){ flag = true; }else{ this.setError("error"); } }else{this.setError("error");} } catch (SQLException e) {e.printStackTrace()} return flag;}}
16
MVC模式的应用——登录 第三步:创建控制器组件LoginServlet
public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserBean userBean=new UserBean(); //接收用户提交的用户名和密码 String username=request.getParameter("userName"); String pwd=request.getParameter("userPassword"); //给UserBean属性赋值 userBean.setUserName(username); userBean.setUserPassword(pwd); request.setAttribute("loginUser", userBean); // 登录验证 if(userBean.login()){ request.getRequestDispatcher("/success.jsp").forward(request, response); } else { request.getRequestDispatcher("/login.jsp").forward(request, response);
17
MVC模式的应用——登录 第四步:并且在web.xml文件中配置servlet <servlet>
<description></description> <display-name>LoginServlet</display-name> <servlet-name>LoginServlet</servlet-name> <servlet-class>cn.com.systop.l07.controller.LoginServlet</servlet-class> </servlet> <servlet-mapping> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping>
18
MVC模式的应用——登录 第五步:创建登录页面login.jsp 演示示例
19
总结 为什么使用MVC设计模式? MVC设计模式各部分对应的组件是什么? MVC各部分间是如何协作的?
20
课后作业
21
Thank You!
Similar presentations