Java Web开发技术 课件 模块八 MVC开发模式_第1页
Java Web开发技术 课件 模块八 MVC开发模式_第2页
Java Web开发技术 课件 模块八 MVC开发模式_第3页
Java Web开发技术 课件 模块八 MVC开发模式_第4页
Java Web开发技术 课件 模块八 MVC开发模式_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块八MVC开发模式JavaWeb开发技术学习导航

认识MVC模式01[任务1]MVC享有“全球第一设计模式”的美誉,是当前最为流行的Web开发模式。MVC是Sun公司推荐的设计模式,那么在JavaWeb开发中MVC模式的结构是怎样的?MVC并不是Java语言所特有的设计思想,也不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范。MVC有利于系统的维护和功能的扩展,有利于开发的分工,有利于组件的重用。下面通过具体案例来认识MVC模式。MVC模式原理

最典型的MVC就是JSP+servlet+javabean的模式。MVC模式优点1.各施其职、互不干涉在MVC模式中,3个层各施其职,所以如果哪一层的需求发生了变化,就只需要更改相应层中的代码,而不会影响到其他层。2.有利于开发中的分工在MVC模式中,由于按层把系统分开,那么就能更好地实现开发中的分工。网页设计人员可以开发页面,对业务熟悉的开发人员可以开发模型中相关业务处理的方法,而其他开发人员可以开发控制器,以进行程序控制。3.有利于组件的重用分层后更有利于组件的重用,如控制层可独立成一个通用的组件,视图层也可做成通用的操作界面。同步训练请指出下图中Model、View、Controller部分。小结MVC是一种流行的软件设计模式,它把系统分为以下三个模块:(1)模型(Model):业务逻辑层,对应的组件是Java类(完成业务逻辑处理、状态管理的功能)。(2)视图(View):表示层,即与用户实现交互的界面,通常实现数据的输入和输出功能,对应的组件是JSP或HTML。(3)控制器(Controller):控制层,起到控制整个业务流程的作用,实现视图和模型部分的协同工作,对应的组件是servlet。

使用MVC模式实现留言板系统用户登录02[任务2]MVC模式强制性地将应用程序的输入、处理、输出流程按照Model、View、Controller的方式进行分离,分成模型层、视图层、控制层。MVC模式能够把显示与数据分离,在Web开发中经常会使用MVC模式,使用MVC模式如何实现用户登录?login.jsperror.jspok.jsp

MVC模式的实现过程为:(1)实现模型;(2)实现控制器;(3)实现视图。思路:使用JSP和Servlet实现MVC模式。使用的数据库为留言管理系统的数据库。用户登录模块文件分类表如下表所示。

packagedao;importjava.sql.*;importjavax.sql.*;importutil.BaseDao;importentity.*;publicclassAdminUserDao

{

Connectionconn=null;

//数据库连接

PreparedStatementpstmt=null;

//创建PreparedStatement对象

ResultSetrs=null;

//创建结果集对象

publicAdminUserfindUser(StringuName){ Stringsql="select*fromadminuserswhereuname=?"; AdminUseruser=newAdminUser(); try{

conn

=BaseDao.getConn();

//获取数据库连接

pstmt=conn.prepareStatement(sql);

pstmt.setString(1,uName);

rs=pstmt.executeQuery();

while(rs.next()){

user.setId(rs.getInt(1));

user.setUname(rs.getString(2));

user.setPwd(rs.getString(3));

} }catch(ClassNotFoundExceptione){

e.printStackTrace();

}catch(SQLExceptione){

e.printStackTrace();

}finally{

BaseDao.closeAll(conn,pstmt,rs);

}

returnuser; }}packageweb;importjava.io.IOException;importjava.io.PrintWriter;importentity.*;importdao.*;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;@WebServlet("/Login")publicclassDoLoginextendsHttpServlet{ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ this.doPost(request,response); } publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html;charset=GBK"); request.setCharacterEncoding("GBK"); StringuName=request.getParameter("uName");

//取得请求中的登录名

StringuPass=request.getParameter("uPass"); AdminUseru=newAdminUserDao().findUser(uName); if(u.getPwd().equals(uPass)){ HttpSessionsession=request.getSession(); session.setAttribute("user",u); response.sendRedirect("ch07/ok.jsp"); } elseresponse.sendRedirect("ch07/error.jsp"); }}login.jsp:<FORMname="loginForm"onSubmit="returncheck()"action="../Login"method="post"> <br/>用户名

<INPUTclass="input"type="text"maxLength="20"size="35"name="uName"> <br/>密码

<INPUTclass="input"type="password"maxLength="20"size="40"name="uPass"> <br/><INPUTclass="btn"type="submit"value="登录"><INPUTclass="btn"type="reset"value=" 重填">

<ahref="lost/lost.jsp">忘记密码</a></FORM>ok.jsp:<%@pagelanguage="java"contentType="text/html;charset=GBK"

pageEncoding="GBK"%><html><head><title>登录成功</title></head><body>欢迎${user.uname},成功登录。</body></html>EL表达式为什么要使用EL表达式JSP脚本有哪些不足代码结构混乱脚本与HTML混合,容易出错代码不易于维护使用EL表达式来优化程序代码,增加程序可读性<%//每页显示的新闻列表List<News>newsList=newsService.getPageNewsList(pageIndex,pageSize);inti=0;for(Newsnews:newsList){i++;%> <tr<%if(i%2!=0){%>class="admin-list-td-h2"<%}%>> <td><%=news.getAuthor()%></td><td><%=news.getCreateDate()%></td>……<table>

<c:forEachvar="news"items="${list}"><tr><td><c:outvalue="${news.title}"/></td></tr>

</c:forEach></table>EL语法EL表达式(ExpressionLanguage)${EL表达式}例如:${username}EL操作符操作符“.”获取对象的属性,例如:${news.title}操作符“[]”获取对象的属性,例如:${news["title"]}获取集合中的对象,例如:${newsList[0]}EL严格区分大小写,初学者严格按规范书写,有利于养成好的编码习惯20/26注意演示示例1:EL语法EL运算符为了避免JSP混淆运算符和页面关键字,很多运算符都有替代写法运算符说明()改变执行的优先级,例如${3*(4+5)}+,-,*,/,%算术运算符,例如${3+2}==,!=,>,>=,<,<=关系运算符,例如${a==b}或${aeqb}&&,||,!逻辑运算符,例如${true&&false}?:条件运算符,例如${a>b?1:2}empty用于检测变量名是否为空,是否等于NULL,例如${emptyname}${param.password1}==${param.password2}${${param.password1}==${param.password2}}${param.password1==param.password2}21/26注意EL功能取得JavaBean对象的属性${news.title}取得数组、List、Map类型对象的元素${list[0]}使用各类运算符对原始数据进行简单处理${totalRecordCount/pageSize}屏蔽一些常见的异常${username}能实现简单的自动类型转换${news}相当于(News)request.getAttribute("news")22/26EL访问作用域request.setAttribute("news",news);两种方式取数据:使用Java小脚本:request.getAttribute("news");使用EL表达式:

${news}或者${requestScope.news}作用域Java代码取值EL取值请求作用域request.getAttribute("news");${requestScope.news}会话作用域session.getAttribute("username");${sessionScope.username}程序作用域application.getAttribute("count");${applicationScope.count}页面作用域pageContext.getAttribute("userNum");${pageScope.userNum}23/26JSTL介绍使用了EL表达式可以简化页面代码结构,那为什么还要使用JSTL呢?<%//每页显示的新闻列表List<News>newsList=newsService.getPageNewsList(pageIndex,pageSize);inti=0;for(Newsnews:newsList){i++;%> <tr<%if(i%2!=0){%>class="admin-list-td-h2"<%}%>> <td><%=news.getAuthor()%></td><td><%=news.getCreateDate()%></td>……条件判断循环控制24/26提问JSTL介绍JSTL(JavaServerPagesStandardTagLibrary)JSP标准标签库实现JSP页面中的逻辑控制JSTL使用步骤下载jstl.jar和standard.jar包/dist/jakarta/taglibs/standard/binaries/将这两个包复制到WEB-INF\lib目录在JSP页面中添加指令<%@tagliburi="/jsp/jstl/core"prefix="c"%>25/26演示:添加jstl.jar和standard.jar包JSTL标签分类标签库名称资源标示符(uri)前缀(prefix)核心标签库/jsp/jstl/corec国际化/格式化标签库/jsp/jstl/fmtfmtXML标签库/jsp/jstl/xmlx数据库标签库/jsp/jstl/sqlsql函数标签库/jsp/jstl/functionsfn核心标签库国际化/格式化标签库<%@tagliburi="/jsp/jstl/core"prefix="c"%><%@tagliburi="/jsp/jstl/fmt"prefix="fmt"%>26/2629/26

使用JSTL构建URL<c:url/>超链接标签<c:param/>参数标签<c:import/>导入标签<c:urlvalue="url"/><c:paramname="name"value="value"/>参数的名称参数的值<c:importurl="URL"/>导入资源的路径31/26语法语法语法<fmt:formatDate/>标签<fmt:formatDate/>格式化标签实现格式化的日期和时间显示<fmt:formatDatevalue="date"pattern="yyyy-MM-ddHH:mm:ss"/>时间对象显示格式32/26语法MVC实训(1)训练要点①在应用程序中使用MVC模式;②使用Servlet开发应用程序。(2)需求说明使用MVC设计模式,使用JSP、Servlet技术实现在JSP页面中以列表形式显示Mini综合办系统中公告表(tb_Announcement)中的所有数据。MVC实训(3)实现思路①开发模型:AnnouncementDao类和VO类,实现查询方法。②开发控制器:创建Servlet作为控制器,调用模型,使用HttpSession存放查询结果,转向指定的视图。③开发视图:创建公告显示页面,使用EL及JSTL显示公告信息。提示:JSTL中迭代标签语法为<c:forEachitems=”collection”var=”name”>//循环体内容</c:forEach>其中,var指定变量的名称;items指定要遍历的对象集合,可以是数组、List和Map。在使用JSTL时,需要使用taglib指令,即<%@tagliburi="/jsp/jstl/core"prefix="c"%>小结EL语法格式:${

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论