详解Spring MVC的视图、模型与控制器

 时间:2024-11-05 14:53:08

1、前面介绍了Spring MVC的概念、搭建Spring MVC运行环境等内容,也介绍了如何在eclipse中建立基于Spring MVC的Mooc项目。本文在Mooc项目的基础上,进一步讨论Spring MVC的视图、模型与控制器,视图与控制器之间的数据交互机制。通过本课的学习,可以达到如下目标。● 掌握视图、控制器和模型的数据交互机制● 配置web.xml和spring-servlet文件Mooc是一个在线编程教育项目,用户学习课程前,需要先注册账号。注册账号流程图如下:

详解Spring MVC的视图、模型与控制器

2、在上面的流程图中,Register.jsp和RegisterResult.jsp页面为视图,用于录入用户的注册信息和输出注册结果。RegisterController.java为控制器,对Register.jsp提交的表单进行处理,RegisterController获取表单提交的用户信息并生成用户实体类,最后返回实体类给RegisterResult.jsp页面。在Spring MVC中要实现上面的用户账号注册业务,需要对Mooc项目做如下改动:① 新建实体UserInfo类(模型)② 新建控制器RegisterController类(控制器)③ 新建Register.jsp页面(视图)④ 新建RegisterResult.jsp页面(视图)⑤ 新建spring-servlet配置文件⑥ 修改web.xml配置文件关于Mooc项目以及Spring MVC的概念与环境搭建参见《Spring MVC的认知与环境搭建》一文。1、新建实体类UserInfo类实体类也称为POJO类,一般放置在项目源代码的POJO目录下。在Mooc项目的src目录下新建com.mooc包,在mooc包下面新建pojo包,在pojo包下新建UserInfo.java类,UserInfo类包含登录账号、登录密码、用户名称属性。

详解Spring MVC的视图、模型与控制器

3、新建控制器RegisterController类RegisterController类为MVC的控制器类,接收和处理视图传递过来的表单数据。控制器类一般放置在项目源代码的controll目录下,在mooc包下面新建controll包,在controll包下新建RegisterController.java类。控制器类与普通Java类的区别就是在类文件的头部添加了Spring MVC注解@Controller和@RequestMapping。@Controller注解用于标记在一个类上,使用该注解的类就是一个Spring MVC Controller对象,Spring MVC的分发处理器会扫描使用该注解的类,并将视图请求的URL与类中@RequestMapping注解定义的URL进行匹配。@RequestMapping注解用于处理视图请求地址的映射,该注解可以添加在类或类方法上。添加到类时,需要把该注解添加到类的头部,@Controller注解的后面,表示该类中所有响应请求的方法都是以该地址作为父路径。 添加到类方法时,需要把该注解添加到方法的首部,表示一个处理响应请求的地址。例如:

详解Spring MVC的视图、模型与控制器

4、在上面的案例代码中,@Controller注解添加到类名的头部,让RegisterController类成为MVC控制器类,并在@Controller注解后面添加了@RequestMapping注解,注解传入的参数为“/user”,表示该类将响应请求地址前缀为“/user”的所有视图请求。RegisterController类的registerUser方法用于处理视图Register.jsp的用户注册请求。Register.jsp要调用registerUser方法,需要知道registerUser方法的请求地址,该请求地址由@RequestMapping注解定义:@RequestMapping(value="/register.do",method={RequestMethod.GET,RequestMethod.POST})@RequestMapping注解添加在registerUser方法的首部,其中,value参数给出该方法的请求地址,该请求地址需要和在类头部由@RequestMapping注解定义的地址合并为一个完整的请求地址,例如:"/user/ register.do",method参数给出请求类型。registerUser方法的传入参数类型为HttpServletRequest,registerUser方法应用HttpServletRequest可以获取客户端请求的所有信息,也包括视图提交的表单信息。registerUser方法返回的类型为ModelAndView,ModelAndView是Spring MVC为视图和控制器方便交换数据而定义的对象,ModelAndView由model和view两部分组成,model用于回传数据,view是视图,通过view可以指定跳转到哪个JSP页面。

详解Spring MVC的视图、模型与控制器

5、、新建Register.jsp页面JSP页面在Spring MVC中为视图,是与用户的交互页面,JSP页面一般放置在项目WebContent目录下。在WebContent目录下新建user目录,在user目录下新建Register.jsp文件。

详解Spring MVC的视图、模型与控制器

6、页面form的action路径为在控制器类中由@RequestMapping注解给出的URL路径。4 、新建RegisterResult.jsp页面在WebContent目录下的user目录新建RegisterResult.jsp文件,用户注册成功后跳转到RegisterResult.jsp页面。

详解Spring MVC的视图、模型与控制器

7、使用requestScope可以访问由控制器类返回的模型对象或变量。5 、新建spring-servlet配置文件Servlet是用Java语言编写的服务端应用程序,用于响应和处理WEB客户端发送的请求,并生成WEB内容返回WEB客户端。在Spring MVC框架中,控制器类就是Servlet,用于响应和处理WEB客户端发送的请求。Spring MVC会通过spring-servlet配置文件扫描加载控制器类、完成对转向页面的路径解析、启用spring mvc 注解。

详解Spring MVC的视图、模型与控制器

8、修改web.xml配置文件在web.xml中需要配置Spring MVC的前端控制器DispatchServlet,DispatchServlet在web应用程序启动时立即加载,DispatchServlet会读取spring-servlet配置文件,扫描并加载控制器类,并创建WebApplicationContext容器对象,也就是上下文环境。

详解Spring MVC的视图、模型与控制器

9、配置监听器,当监听到启动Web容器时,自动装配Spring配置文件中的配置信息。ContextLoaderListener实现了ServletContextListener接口,WEB容器启动时,会调用ContextLoaderListener,在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。课程小结本科实现了基于Spring MVC的用户注册业务,具体业务实现流程是用户通过Register.jsp页面填写注册信息,然后提交表单到RegisterController类,RegisterController类获取表单信息,并创建UserInfo用户类,使用表单信息初始化UserInfo,将UserInfo设置到回传的ModelAndView对象,并将回传的视图定向到RegisterResult.jsp页面。在上述流程中,Register.jsp是用户注册视图,RegisterResult.jsp是注册结果通知视图,RegisterController是响应和处理注册请求的控制器,UserInfo是用户模型。

详解Spring MVC的视图、模型与控制器
  • 纯css表格table隔行显示不同颜色
  • DIV+CSS教程:[7]顶划线、下划线、删除线
  • 后台侧边导航栏如何用js动态生成
  • jquery怎么让div解绑click事件
  • 如何实现CSS外边距的叠加重合
  • 热门搜索
    文明乘车手抄报 小学生反邪教手抄报 有关法制的手抄报 文明从我做起手抄报 我爱文学初中手抄报 海洋手抄报图片 关于春节手抄报大全 运动手抄报图片 崇德向善手抄报 手抄报英语