




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2讲 基于Servlet+JavaBean+Jsp开发应用的过程,第2讲 基于Servlet+JavaBean+Jsp开发应用的过程,本讲主要介绍主流的java web编程技术、设计模式和框架,以及如何利用Eclipese开发Web应用程序。 要点: 1、Java Web编程的主要组件技术; 2、MVC设计模式; 3、用Eclipse构建一个基于MVC模式的Java Web的应用程序。 目的: 掌握如何用Eclipse构建一个基于MVC模式的Java WEB的应用程序,2.1 java web 编程的主要组件技术,Html jsp Servlet Javabean Jdbc Xml Tomc
2、at MySQL,2.2 MVC设计模式,今天,我们见到的绝大部分应用,都是基于B/S(浏览器/服务器)架构的,其中的服务器就是Web服务器。可见,Web应用是目前广泛使用的应用模式。 Web程序开发方法的发展: JSP的Model 1 JSP的Model 2 MVC,1 Model 1和Model 2,对于Java的动态Web编程技术而言,则经历了Model 1和Model 2时代。 Model 1: Model 1就是JSP大行其道的时代,在Model 1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应。用少量的JavaBean来处理数
3、据库连接、数据库访问等操作。 Model 2: Model 2下JSP不再承担控制器的责任,它仅仅是表现层角色,仅仅用于将结果呈现给用户,JSP页面的请求与Servlet(控制器)交互,而Servlet负责与后台的JavaBean通信。 在Model 2模式下,模型(Model)由JavaBean 充当,视图(View)由JSP页面充当,而控制器(Controller)则由Servlet充当,Model 1的程序流程,特点: 由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应。用少量的JavaBean来处理数据库连接、数据库访问等操作,Model 2的程序流程:基本上是M
4、VC结构,特点: Model 2下JSP不再承担控制器的责任,它仅仅是表现层角色,仅仅用于将结果呈现给用户,JSP页面的请求与Servlet(控制器)交互,而Servlet负责与后台的JavaBean通信。 在Model 2模式下,模型(Model)由JavaBean 充当,视图(View)由JSP页面充当,而控制器(Controller)则由Servlet充当,2 Model 1和Model 2的比较,对于非常小型的Web站点,如果后期的更新、维护工作不是特别大,可以使用Model 1的模式来开发应用,而不是使用Model 2的模式。 虽然Model 2提供了更好的可扩展性及可维护性,但增加
5、了前期开发成本。从某种程度上讲,Model 2为了降低系统后期维护的复杂度,却导致前期开发的更高复杂度,3 MVC思想,MVC并不是Java语言所特有的设计思想,也并不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范。 MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性,MVC,MVC: M(model)是指数据模型, V(View)是指用户界面, C(Control)则是控制器。 使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同
6、的表现形式。 模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器3者之间的关系和各自的主要功能,MVC的组成部分,视图(View)代表用户交互界面,对于Web应用来说就是HTML界面。 模型(Model):就是业务流程/状态的处理以及业务规则的制定。 控制(Controller):可以理解为一个分发器,他来决定选择什么样的模型,选择什么样的视图,可以完成什么
7、样的用户请求,控制层并不做任何的数据处理,MVC带来的好处,MVC从根本上强制性的将它们分开,最大程度上实现了程序代码与网页的分离。 数据和业务规则从表示层分开,所以可以最大化的重用代码,MVC的特点,MVC特点: 多个视图可以对应一个模型。按MVC设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护。 模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,例如,使用JSP页面、Velocity模板或者直接产生Excel文档等。 应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性。 控制层的概念也很有效,由于它把不同的模型和不同的视图
8、组合在一起,完成不同的请求。因此,控制层可以说是包含了用户请求权限的概念。 MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码,4 常用的MVC框架,Struts: -包括struts1和struts2两个。 JSF: JSF是一个标准 ,目前,JSF是作为JEE 5.0的一个组成部分,与JEE 5.0一起发布 JSF的行为方法在POJO中实现,JSF的Managed Bean无需继承任何特别的类。因此,无需在表单和模型对象之间实现多余的控制器层。JSF中没有控制器对象,控制器行为通过模型对象实现。 JSF的事件框架可以细化
9、到表单中每个字段。JSF依然是基于JSP/Servlet的,仍然是JSP/Servlet架构,因而学习曲线相对简单,2.3 用Eclipse构建一个基于MVC模式的Java Web应用程序,题目要求: (1)技术要求: 按照MVC设计模式,利用JSP、Servlet及JavaBean构建一个简单的登录系统。 (2)系统功能要求: 当用户在登录页面上填写用户名和密码并提交后,系统检查该用户是否已经注册,若注册,系统进入主页面,否则,进入注册页面。系统的工作流程见下图,2)控制器-1 LoginServlet,1) 登录页面 Login.jsp,5)数据组件 user doa db_op,6)数据
10、库MySQL,进行验证,不符合格式,返回注册页面,重新注册,并提示出错情况,注册成功,进入登录页面,未注册,登录系统的工作流程,3)提示:登录成功 Main.jsp (过20秒后再自动 进入注册页面,4)进入 注册页面 Register.jsp,7)控制器-2 RegisterServlet,8)提示:注册失败 Register_err.jsp (过20秒后再自动 进入注册页面,9)注册成功 Register_succ.jsp (过20秒后再自动 进入注册页面,已注册,或者,密码错误,10)进入主页面 Main2.jsp,构建系统的处理步骤,1)数据库设计:构建数据库表T_UserInfo (
11、2)在Eclipse中创建一个项目:Login_Proj (3)构建视图组件:登录页面(login.jsp)、主页面(main.jsp)、注册页面(register.jsp),注册失败(Register_err.jsp),注册成功(Register_succ.jsp) (4)构建控制层组件: 一个servlet(LoginServlet.java)-实现登录的控制 一个servlet(RegisterServlet.Java)-实现注册的验证控制 (5)构建业务逻辑层组件(模型组件): 一个JavaBean:user,doa,db_op (6)部署该程序到服务器Tomcat中,然后运行,1)数
12、据库设计:构建数据库表T_UserInfo,利用MySQL数据库, 创建数据库:user 创建表及其结构:T_UserInfo,数据表结构T_UserInfo,注意,该数据库所存放的位置,2)在Eclipse中创建一个项目:Login_Proj,按Eclipse建立工程的提示,建立Web工程,工程的名称为:Login_Proj,3)构建视图组件:- 登录页面(login.jsp,选中工程“Login_Proj”, 击右键,选“新建”, 按Eclipse的提示,建立jsp,名称为:Login。 修改默认jsp内容,达到我们所要求的编码,login.jsp的代码,登录页面 用户名: 密,3)构建视
13、图组件- 主页面(main.jsp,选中工程“Login_Proj”, 击右键,选“新建”, 按Eclipse的提示,建立jsp,名称为:main.jsp。 修改默认jsp内容,达到我们所要求的编码,main.jsp代码,主页面 ,你成功登录,20秒后自动进入主页面!,类似可以建立其它的页面: 系统页面main2.jsp 注册页面register.jsp 注册失败提示页面Register_err.jsp 注册成功提示页面Register_succ.jsp,构建控制层组件(第4步) 建立数据JavaBean用户(user); 建立连接数据库的JavaBean(doa) 建立实现对用户数据库进行操
14、作的java类-db_op.java,4.1 建立数据JavaBean用户(user,package JavaBean; public class user private String username; private String password; public String getUsername() return username; public void setUsername(String username) this.username = username; public String getPassword() return password; public void se
15、tPassword(String password) this.password = password;,4.2 建立连接数据库的JavaBean(doa,package JavaBean; public class doa private String db_username; private String db_password; private String db_driver; private String db_connection; public String getDb_username() return db_username; public void setDb_userna
16、me(String db_username) this.db_username = db_username; public String getDb_password() return db_password; public void setDb_password(String db_password) this.db_password = db_password; public String getDb_driver() return db_driver; public void setDb_driver(String db_driver) this.db_driver = db_drive
17、r; public String getDb_connection() return db_connection; public void setDb_connection(String db_connection) this.db_connection = db_connection;,4.3 在JavaBean(doa)的基础上,建立实现对用户数据库进行操作的java类-db_op.java,public class db_op public Connection db_getConnection() Connection conn=null; String db_username=nul
18、l; String db_password=null; String db_driver=null; String db_connection=null; Properties pro = new Properties(); File file = new File(H:web_15Login_Pperties); try pro.load(new FileInputStream(file); catch (Exception e) e.printStackTrace(); db_username=pro.getProperty(db_username,); db_pa
19、ssword=pro.getProperty(db_password,); db_driver=pro.getProperty(db_driver,db_driver); db_connection=pro.getProperty(db_connection,db_connection); try Class.forName(db_driver).newInstance(); conn=DriverManager.getConnection(db_connection, db_username,db_password); return conn; catch(Exception e) Syst
20、em.out.println(e); return null;,实现数据库的连接,public boolean select_1(user u) /查询用户是否已经注册 Connection conn=null; ResultSet rs=null; Statement ps=null; String xm=u.getUsername(); String pass=u.getPassword(); conn=db_getConnection(); String s1=select * from T_userInfo where username=+xm+ and password=+pass+
21、; try ps=conn.createStatement(); rs=ps.executeQuery(s1); if(rs.next() rs.close(); ps.close(); conn.close(); return true; else rs.close(); ps.close(); conn.close(); return false; catch(SQLException e) return false;,public boolean select_2(String u) /在注册时,查询是否有重名的用户已经注册 Connection conn=null;ResultSet
22、rs=null; Statement ps=null; conn=db_getConnection(); String s1=select * from T_userInfo where username=+u+ ; try ps=conn.createStatement(); rs=ps.executeQuery(s1); if(rs.next() rs.close(); ps.close(); conn.close(); return true; else rs.close(); ps.close(); conn.close(); return false; catch(SQLExcept
23、ion e) return false;,public void append(user u) /注册时,添加注册用户信息 Connection conn=null; Statement ps=null; conn=db_getConnection(); String xm=u.getUsername(); String pass=u.getPassword(); String s1=insert into T_userInfo(username,password) values(+xm+,+pass+) ; try ps=conn.createStatement(); ps.executeU
24、pdate(s1); ps.close(); conn.close(); catch(SQLException e) System.out.println(e);,5)构建控制层组件(第5步): 5.1 一个servlet(LoginServlet.java) -实现登录的控制 5.2 一个servlet(RegisterServlet.Java) 实现注册的验证控制 5.3 web.xml配置文件的解读,5.2 构建控制层组件:一个servlet(registerServlet.java,public void doGet(HttpServletRequest request, HttpSe
25、rvletResponse response) throws ServletException, IOException String xm=(String)request.getParameter(username); String mm=(String)request.getParameter(password); String mm2=(String)request.getParameter(repassword); String type_err=; db_op b=new db_op(); if(b.select_2(xm) type_err=xm+:该用户已经注册!; HttpSe
26、ssion s=request.getSession(true); s.setAttribute(type_err,type_err); response.sendRedirect(Register_err.jsp); else if(!mm.equals(mm2) type_err=两次密码不一致错!; HttpSession s=request.getSession(true); s.setAttribute(type_err,type_err); response.sendRedirect(Register_err.jsp); else HttpSession s=request.get
27、Session(true); s.setAttribute(username,xm); s.setAttribute(password,mm); user u=new user();u.setUsername(xm);u.setPassword(mm); db_op d=new db_op(); d.append(u); response.sendRedirect(Register_succ.jsp);,5.1 构建控制层组件:一个servlet(LoginServlet.java,public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcept
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专员提级管理制度
- 专项合规管理制度
- 严格社保管理制度
- 中医煎药管理制度
- 中型水库管理制度
- 中心薪酬管理制度
- 中铁成本管理制度
- 循环温度场能量管桩热-力学特性试验研究
- 南京邮电大学《先秦文学研究》2023-2024学年第二学期期末试卷
- 吕梁学院《主题公园经营与管理》2023-2024学年第二学期期末试卷
- 热工仪表检修(第二版)中级工题库
- 生理学习题含参考答案
- 2024-2030年中国内河水运行业市场现状调查及发展趋向研判报告
- 广东省深圳市福田区福田小学小学语文六年级小升初期末试题(含答案)
- 数智时代的商业变革智慧树知到期末考试答案章节答案2024年山东大学(威海)
- 2024年福建省宁德市中考一模《物理》试题(解析版)
- 2023年国开(中央电大)04114《会计学概论》题库及标准答案
- 广东省广州市天河区2024年八年级下册数学期末考试试题含解析
- 中建测评2024二测题库及答案
- 24春国家开放大学《统计学原理》形成性考核1-3参考答案
- 环卫保洁整体服务方案
评论
0/150
提交评论