




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在Spring的Web MVC框架提供了模型 - 视图 - 控制器架构以及可用于开发灵活,松散耦合的Web应用程序准备的组件。 MVC模式会导致分离的应用程序(输入逻辑,业务逻辑和UI逻辑)的不同方面,同时提供这些元素之间的松耦合。 模型(Model)封装了应用程序的数据和一般他们会组成的POJO。 视图(View)是负责呈现模型数据和一般它生成的HTML输出,客户端的浏览器能够解释。 控制器(Controller)负责处理用户的请求,并建立适当的模型,并把它传递给视图渲染。DispatcherServletSpring的web模型 - 视图 - 控制器(MVC)框架是围绕着处理所有的HTTP请求和响应的DispatcherServlet的设计。 Spring的Web MVC框架的DispatcherServlet的请求处理流程说明如下图:下面是对应于传入的HTTP请求到DispatcherServlet的事件序列:1. 接收HTTP请求后,DispatcherServlet 咨询 HandlerMapping 来调用相应的控制器。2. 该控制器接受请求并调用基于使用GET或POST方法相应的服务方法。服务方法将基于定义的业务逻辑设置模型数据,并返回视图名到DispatcherServlet。3. DispatcherServlet将需要帮助的ViewResolver从拾取到该请求所定义的视图。4. 一旦视图被敲定,DispatcherServlet会传递模型数据是在浏览器上最终呈现的视图。所有上述部件,即HandlerMapping,控制器和视图解析器WebApplicationContext 部分是纯的 ApplicationContext 必要的 Web应用程序的一些额外的功能扩展。所需配置你需要映射所需的DispatcherServlet处理,通过在web.xml文件中使用URL映射请求。下面是一个例子,说明声明和映射 HelloWeb DispatcherServlet 的例子: Spring MVC Application HelloWeb org.springframework.web.servlet.DispatcherServlet 1 HelloWeb *.jsp web.xml 文件将被保存在您的Web应用程序的 WebContent/ WEB-INF 目录。 在 DispatcherServlet 的 HelloWeb 初始化,该框架将尝试从一个名为servlet-name-servlet.xml位于应用程序 WebContent/WEB-INF 目录文件加载应用程序上下文。在这种情况下我们的文件将是HelloWeb-servlet.xml。接下来,标记指示URL会被DispatcherServlet处理。这里全部用。jsp结束HTTP请求将由DispatcherServlet的HelloWeb处理。如果不想用默认文件名为servlet-name-servlet.xml和默认位置的WebContent/WEB-INF,可以通过添加servlet 的 listenerContextLoaderListener 在 web.xml 文件中定义该文件的名称和位置如下:. contextConfigLocation /WEB-INF/HelloWeb-servlet.xml org.springframework.web.context.ContextLoaderListener 现在,让我们检查所需配置的HelloWeb-servlet.xml文件,放置在 Web应用程序的WebContent/WEB-INF目录: 下面是有关 HelloWeb-servlet.xml 文件的要点: servlet-name-servlet.xml文件将被用于创建定义的Bean,会覆盖在全局范围里名字相同的Bean的定义。 标签将使用启动Spring MVC的注解扫描功能,允许做出像Controller和使用RequestMapping注解等使用。 使用InternalResourceViewResolver将有定义来解析视图名的规则。按照上述定义的规则,命名为你好的逻辑视图被委托给一个视图实现位于/WEB-INF/jsp/hello.jsp。下一节将学习如何创建实际组件IE浏览器。控制器,模型和视图。定义控制器DispatcherServlet 委托请求发送到控制器,以执行特定于它的功能。注解Controller表示一个特定的类提供一个控制器的角色。注解RequestMapping 用于将URL映射到任何一个类或者一个特定的处理方法。ControllerRequestMapping(/hello)public class HelloController RequestMapping(method = RequestMethod.GET) public String printHello(ModelMap model) model.addAttribute(message, Hello Spring MVC Framework!); return hello; 注解Controller类定义为一个Spring MVC控制器。在这里,使用RequestMapping第一次使用表明,该控制器上的所有处理方法是相对于/hello 路径。下一步标注使用RequestMapping(方法= RequestMethod.GET)用于声明printHello() 方法作为控制器的默认服务方法来处理HTTP GET请求。可以定义另一种方法来处理同一URL的POST请求。可以写在上面的另一种形式,可以使用RequestMapping添加额外的属性如下控制:Controllerpublic class HelloController RequestMapping(value = /hello, method = RequestMethod.GET) public String printHello(ModelMap model) model.addAttribute(message, Hello Spring MVC Framework!); return hello; value属性指示该处理方法所映射到的URL和method属性定义了服务的方法来处理HTTP GET请求。有以下重要点要注意关于上述定义的控制器: 将定义所需的业务逻辑内部的服务方法。可以调用此方法在另一个方法按要求。 基于定义的业务逻辑,将在此方法中创建一个模型。您可以设定器不同的模型的属性和这些属性将被视图访问提出的最终结果。此示例创建一个具有自己的属性“message”的模型。 定义的服务方法可以返回一个字符串,其中包含要用于渲染模型视图的名称。这个例子返回“hello”作为逻辑视图名。创建JSP视图Spring MVC支持多种类型的视图不同的演示技术。这些措施包括:JSP,HTML,PDF,Excel,XML,Velocity,XSLT,JSON,Atom和RSS订阅,JasperReports等,但最常用JSTL JSP模板。因此,我们编写一个/WEB-INF/hello/hello.jsp简单的hello 视图: Hello Spring MVC $message 在这里,$message是我们已经建立了控制器内部的属性。你可以在视图中显示多个属性。Spring Web MVC框架的例子:基于上述理念,让我们检查,这将有助于建立Spring Web 应用程序几个重要的例子:S.N.实例& 描述1Spring MVC Hello World Example这个例子将说明如何编写一个简单的Spring Web Hello World应用程序。2Spring MVC Form Handling Example这个例子将说明如何使用HTML表单将数据提交到控制器和显示回处理结果写一个Spring Web应用程序。3Spring Page Redirection Example了解如何在Spring MVC框架中使用页面重定向功能。4Spring Static Pages Example了解如何访问静态网页与动态网页在Spring MVC框架。5Spring Exception Handling Example了解如何处理Spring MVC框架异常。下面的例子说明了如何使用Spring MVC框架基础编写一个简单的web Hello World应用程序。要开始使用它,我们使用 Eclipse IDE工具,并按照以下步骤使用Spring Web框架开发动态Web应用程序:步骤描述1Create aDynamic Web Projectwith a nameHelloWeband create a packagecom.yiibaiunder thesrcfolder in the created project.2Drag and drop below mentioned Spring and other libraries into the folderWebContent/WEB-INF/lib.3Create a Java classHelloControllerunder thecom.yiibaipackage.4Create Spring configuration filesWeb.xmlandHelloWeb-servlet.xmlunder theWebContent/WEB-INFfolder.5Create a sub-folder with a namejspunder theWebContent/WEB-INFfolder. Create a view filehello.jspunder this sub-folder.6The final step is to create the content of all the source and configuration files and export the application as explained below.这里是HelloController.java文件的内容:package com.yiibai;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.ui.ModelMap;ControllerRequestMapping(/hello)public class HelloController RequestMapping(method = RequestMethod.GET) public String printHello(ModelMap model) model.addAttribute(message, Hello Spring MVC Framework!); return hello; 以下是Spring Web配置文件web.xml中的内容: Spring MVC Application HelloWeb org.springframework.web.servlet.DispatcherServlet 1 HelloWeb / 下面是另一个Spring Web配置文件的HelloWeb-servlet.xml中的内容 以下是Spring视图文件hello.jsp 的内容Hello World $message最后,下面是Spring和其他库包含在您的Web应用程序。只需将这些文件拖放它们到 WebContent/WEB-INF/ lib文件夹中。 commons-logging-x.y.z.jar org.springframework.asm-x.y.z.jar org.springframework.beans-x.y.z.jar org.springframework.context-x.y.z.jar org.springframework.core-x.y.z.jar org.springframework.expression-x.y.z.jar org.springframework.web.servlet-x.y.z.jar org.springframework.web-x.y.z.jar spring-web.jar创建源代码和配置文件完成后,导出应用程序。右键单击应用程序并使用Export WAR文件选项并保存HelloWeb.war 文件到Tomcat 的 webapps文件夹中。现在启动Tomcat服务器,并确保您能够访问webapps文件夹,使用标准的浏览器。现在尝试访问该URL http:/localhost:8080/HelloWeb/hello,如果Spring的Web应用程序没有问题,应该看到以下结果:你要注意,在给定的URL,是HelloWeb应用程序名称 hello是我们刚才在我们的控制器使用使用RequestMapping(“/hello”)虚拟子文件夹。您可以使用root直接在使用使用RequestMapping(“/”)映射网址,在这种情况下,可以使用短网址http:/localhost:8080/HelloWeb/访问相同的页面,但它建议有不同功能文件夹。下面的例子展示了如何编写一个简单的基于Web的应用程序,它利用了使用Spring的Web MVC框架的HTML表单。要开始使用它,使用Eclipse IDE,并按照以下步骤使用Spring Web框架开发动态表单的Web应用程序:步骤描述1Create aDynamic Web Projectwith a nameHelloWeband create a packagecom.yiibaiunder thesrcfolder in the created project.2Drag and drop below mentioned Spring and other libraries into the folderWebContent/WEB-INF/lib.3Create a Java classesStudentandStudentControllerunder thecom.yiibaipackage.4Create Spring configuration filesWeb.xmlandHelloWeb-servlet.xmlunder theWebContent/WEB-INFfolder.5Create a sub-folder with a namejspunder theWebContent/WEB-INFfolder. Create a view filesstudent.jspandresult.jspunder this sub-folder.6The final step is to create the content of all the source and configuration files and export the application as explained below.这里是Student.java文件的内容:package com.yiibai;public class Student private Integer age; private String name; private Integer id; public void setAge(Integer age) this.age = age; public Integer getAge() return age; public void setName(String name) = name; public String getName() return name; public void setId(Integer id) this.id = id; public Integer getId() return id; 以下是StudentController.java文件的内容:package com.yiibai;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.servlet.ModelAndView;import org.springframework.ui.ModelMap;Controllerpublic class StudentController RequestMapping(value = /student, method = RequestMethod.GET) public ModelAndView student() return new ModelAndView(student, command, new Student(); RequestMapping(value = /addStudent, method = RequestMethod.POST) public String addStudent(ModelAttribute(SpringWeb)Student student, ModelMap model) model.addAttribute(name, student.getName(); model.addAttribute(age, student.getAge(); model.addAttribute(id, student.getId(); return result; 在这里,第一个服务方法student(),我们已经通过名称“command”的ModelAndView对象的Student空对象,因为spring框架需要一个对象名称“command”,如果使用的是标签在JSP文件中。因此,当student()方法被调用返回student.jsp视图。第二个服务方法addStudent()将调用映射的URL HelloWeb/addStudent 的POST方法。您将根据所提交的信息,准备好模型对象。最后一个“result”视图会从服务方法返回,渲染result.jsp。以下是Spring Web配置文件web.xml 的内容 Spring MVC Form Handling HelloWeb org.springframework.web.servlet.DispatcherServlet 1 HelloWeb / 下面是另一个Spring Web配置文件的HelloWeb-servlet.xml 内容 以下是Spring视图文件student.jsp的内容 Spring MVC Form HandlingStudent Information Name Age id 以下是Spring视图文件result.jsp 的内容 Spring MVC Form HandlingSubmitted Student Information Name $name Age $age ID $id 最后,下面是Spring和其他库包含在Web应用程序的列表。你只需将这些文件拖放它们的WebContent/ WEB-INF/ lib文件夹中。 commons-logging-x.y.z.jar org.springframework.asm-x.y.z.jar org.springframework.beans-x.y.z.jar org.springframework.context-x.y.z.jar org.springframework.core-x.y.z.jar org.springframework.expression-x.y.z.jar org.springframework.web.servlet-x.y.z.jar org.springframework.web-x.y.z.jar spring-web.jar创建源代码和配置文件完成后,导出应用程序。右键单击应用程序和使用Export WAR文件选项并保存SpringWeb.war文件到Tomcat的webapps文件夹中。现在启动Tomcat服务器,并确保您能够访问来自的webapps文件夹中使用标准的浏览器。现在尝试一个URL http:/localhost:8080/SpringWeb/student,你应该看到下面的结果:提交必要的信息后点击提交按钮提交表单。应该看到下面的结果:同时与数据库使用普通的旧JDBC的工作,它变得繁琐写不必要的代码来处理异常,打开和关闭数据库连接等,但Spring的JDBC框架需要的所有低层次细节从打开连接,准备和执行SQL语句,过程异常,处理事务,最后关闭连接。所以,你所要做的只是定义连接参数,并指定要执行的SQL语句,并做必要的工作,在每次迭代时从数据库中获取数据。Spring JDBC提供了一些方法和相应不同的类与数据库进行交互。我要采取经典和最流行的做法,利用JdbcTemplateclass框架。这是管理的所有数据库的通信和异常处理中心框架类。JdbcTemplate 类JdbcTemplate类执行SQL查询,更新语句和存储过程调用,在结果集和提取返回参数值进行迭代。它还捕捉JDBC的异常并将其转换为通用的,信息更丰富,除了在org.springframework.dao包中定义的层次结构。JdbcTemplate类的实例是一次配置的线程。所以,你可以配置一个JdbcTemplate的一个实例,然后安全地注入这种共享引用到多个DAO。使用JdbcTemplate类时,通常的做法是配置一个DataSource在Spring配置文件,然后依赖关系注入该共享数据源豆到DAO类,JdbcTemplate或者是在setter数据源创建。配置数据源让我们一起创造数据库test数据库表的 student 。假设使用MySQL数据库,如果使用其他数据库,那么可以相应地改变你的DDL和SQL查询。CREATE TABLE Student( ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (ID);现在,我们需要提供一个数据源给JdbcTemplate类,因此它可以自行配置,以获得数据库访问。您可以配置数据源的XML文件中有一段代码,如下图所示: 数据访问对象 (DAO)DAO表示这是通常用于数据库交互的数据访问对象。 DAO的存在是为了提供读取和写入数据到数据库中,他们应该通过该应用程序的其余部分将访问它们的接口公开此功能的一种手段。在Spring的数据访问对象(DAO)的支持使得它很容易与如JDBC,Hibernate,JPA和JDO以一致的方式进行数据访问技术。执行SQL语句让我们来看看如何使用SQL和的JdbcTemplate对象数据库中的表执行CRUD(创建,读取,更新和删除)操作。查询一个整数:String SQL = select count(*) from Student;int rowCount = jdbcTemplateObject.queryForInt( SQL );查询长整数:String SQL = select count(*) from Student;long rowCount = jdbcTemplateObject.queryForLong( SQL );使用绑定变量的简单查询:String SQL = select age from Student where id = ?;int age = jdbcTemplateObject.queryForInt(SQL, new Object10);在查询字符串:String SQL = select name from Student where id = ?;String name = jdbcTemplateObject.queryForObject(SQL, new Object10, String.class);查询并返回一个对象:String SQL = select * from Student where id = ?;Student student = jdbcTemplateObject.queryForObject(SQL, new Object10, new StudentMapper();public class StudentMapper implements RowMapper public Student mapRow(ResultSet rs, int rowNum) throws SQLException Student student = new Student(); student.setID(rs.getInt(id); student.setName(rs.getString(name); student.setAge(rs.getInt(age); return student; 查询并返回多个对象:String SQL = select * from Student;List students = jdbcTemplateObject.query(SQL, new StudentMapper();public class StudentMapper implements RowMapper public Student mapRow(ResultSet rs, int rowNum) throws SQLException Student student = new Student(); student.setID(rs.getInt(id); student.setName(rs.getString(name); student.setAge(rs.getInt(age); return student; 插入一行到表:String SQL = insert into Student (name, age) values (?, ?);jdbcTemplateObject.update( SQL, new ObjectZara, 11 );更新一行到表:String SQL = update Student set name = ? where id = ?;jdbcTemplateObject.update( SQL, new ObjectZara, 10 );从表中删除行:String SQL = delete Stude
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025农产品销售代理合同模板
- 2025年影像科影像科医师影像图像诊断能力测试卷答案及解析
- 辽宁省营口市大石桥市八校2023-2024学年七上期中联考数学试题(解析版)
- 医疗美容行业监管背景下2025年美容整形手术的技术创新与市场前景报告
- 湖北省武汉市武昌部分学校2023-2024学年七上期中联考数学试题(解析版)
- 2025年储能电池热管理技术创新在太阳能光伏板中的应用报告
- 溶解乙炔生产工工艺考核试卷及答案
- 混凝土模具工岗位操作技能考核试卷及答案
- 2025年证券AI风险预警模型考题(含答案与解析)
- 2025年AI伦理合规专员数据安全考核题(含答案与解析)
- (完整版)小学1-6年级英语单词(人教版)
- DB36-T 954-2024 低产低效林改造技术规程
- 《环境保护法》知识参考试题库200题(含答案)
- 食堂食材配送采购投标方案(技术标)
- 交通安全防御性驾驶
- 护理情景模拟演练脚本
- 征信异议申诉合同(2篇)
- 施工现场安排及人材机计划
- 教师督导问责办法培训
- 人美版美术七年级上册第一单元《第2课 品篆刻之美》课件
- 户外演出舞台方案
评论
0/150
提交评论