之前一直接触的是spring+sturts2+hibernate,看到很多公司使用SpringMVC,网上关于到底struts2优秀还是SpringMVC更好的讨论也很多,搜了下SpringMVC的优点:
Spring MVC的优点
-
清晰的角色划分:控制器(controller)、验证器(validator)、命令对象(command obect)、表单对象(form object)、模型对象(model object)、Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、试图解析器(view resoler)等等。每一个角色都可以由一个专门的对象来实现。
-
强大而直接的配置方式:将框架类和应用程序累都能作为JavaBean配置,支持跨多个context的引用,例如,在web控制器中对业务对象和验证器validator)的引用。
-
可适配、非侵入:可以根据不同的应用场景,选择何事的控制器子类(simple型、command型、from型、wizard型、multi-action型或者自定义),而不是一个单一控制器(比如Action/ActionForm)继承。
-
可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类。
-
可定制的绑定(binding)和验证(validation):比如将类型不匹配作为应用级的验证错误,这可以保证错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,你只能使用字符串表单对象,需要手动解析它并转换到业务对象。
-
可定制的handler mapping和view resolution:Spring提供从最简单的URL映射,到复杂的、专用的定制策略。与某些web MVC框架强制开发人员使用单一特定技术相比,Spring显得更加灵活。
-
灵活的model转换:在Springweb框架中,使用基于Map的键/值对来达到轻易的与各种视图技术集成。
-
可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。
-
简单而强大的JSP标签库(Spring Tag Library):支持包括诸如数据绑定和主题(theme)之类的许多功能。他提供在标记方面的最大灵活性。
-
JSP表单标签库:在Spring2.0中引入的表单标签库,使用在JSP编写表单更加容易。
-
Spring Bean的生命周期可以被限制在当前的HTTp Request或者HTTp Session。准确的说,这并非Spring MVC框架本身特性,而应归属于Spring MVC使用的WebApplicationContext容器。
有优点才是学习的动力,废话不多说,开始第一个SpringMVC的开发(简单的用户登录):
1、新建web项目,导入spring核心包spring.jar 以及SpringMVC依赖包 spring-webmvc.jar
2、配置web.xml 文件,加入以下代码
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <!-- DispatcherServlet拦截 所有后缀为.do 的用户请求 --> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
3、新建实体类User.java
public class User { private String id; private String username; private String password; ..... // get set 方法 }
开发控制类UserController.java
public class UserController extends AbstractController { private String errorView; // 失败视图 private String successView; //成功视图 @Override protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception { // 1、获取登录名和密码 String username = req.getParameter("username"); String password = req.getParameter("password"); //2、调用业务逻辑进行判断 User user = getUser(username,password); //3、根据结果返回不同的ModelAndView对象 Map<String,Object> model = new HashMap<String,Object>(); if(user!=null){ model.put("user", user); return new ModelAndView(getSuccessView(),model); } model.put("error", "登录名或密码不正确!"); return new ModelAndView(getErrorView(),model); } //模拟业务逻辑方法 public User getUser(String username,String password){ if(username.equals("liuke")&&password.equals("123")){ User user = new User(); user.setUsername(username); user.setPassword(password); return user; } return null; } public String getErrorView() { return errorView; } public void setErrorView(String errorView) { this.errorView = errorView; } public String getSuccessView() { return successView; } public void setSuccessView(String successView) { this.successView = successView; } }
4、开发视图页面
用户登录页面login.jsp
<body> <h1>登录表单</h1> <font color="red" size="-2">${error} </font> <form action="login.do" method="post"> 用户名:<input type="text" name="username"> <br/> 密码:<input type="password" name="password"/><br/> <input type="submit" value="Login.."/> </form> </body>
成功跳转页面success.jsp
<body> 欢迎您,${user.username}!! </body>
5、在web-INF目录下创建Spring配置文件springMVC-servlet.xml
注:如果没有在web.xml文件中进行配置,会默认加载web-INF下[servlet-name]-servlet.xml
本例中servlet-name名字为springMVC,所以我们创建springMVC-servlet.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!--看到下面的beans这个元素标签没有,必须有标签的声明--> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- 配置请求的业务类 --> <bean id="loginControlller" class="cn.itcast.web.controller.UserController"> <property name="errorView"> <value>login</value> </property> <property name="successView"> <value>success</value> </property> </bean> <!-- 配置controller 和URL 的映射关系 --> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/login.do">loginControlller</prop> </props> </property> </bean> <!-- 配置JSP 作为视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- <property name="viewClass"> <value>org.springframework.web.servlet.view.JstlView</value> </property> --> <property name="prefix"> <value>/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
6、启动服务器,部署项目
访问http://localhost:8080/springMVC/login.jsp
总结SpringMVC的处理过程:
1、客户端请求提交到DispatcherServlet
2、DispatcherServlet查询一个或多个HandlerMapping
找到处理请求的Controller
3、DispatcherServlet将请求提交到Controller
4、Controller调用业务逻辑处理后,返回MOdelAndView对象
5、DispatcherServlet查询一个或多个ViewResolver试图解析器,
找到MOdelAndView指定的视图
6、视图负责将结果显示到客户端
OK,第一个springMVC就完成了, 随着学习的深入,再做记录。
相关推荐
完整版 Java开发实训课程系列-SpringMVC框架技术教程 第1章 springmvc概述 (共27页).pptx 完整版 Java开发实训课程系列-SpringMVC框架技术教程 第2章 处理器映射器和适配器 (共22页).pptx 完整版 Java开发实训...
这是SpringMVC第一天的学习代码,包含SpringMVC的入门案例、请求参数的各种绑定,以及中文乱码的解决还有自定义类型转换器的定义
笔记:Spring MVC快速开发:第一个例子-Hello World的代码,利用SpringMVC控制页面的一个简单示例
springmvc-restful第一个基于springmvc-restful风格 获取url的案例
如果你的数据库已经配置好, 就将第一个注释去掉. jdbc.properties: 1 jdbc.driverClassName=com.mysql.jdbc.Driver 2 jdbc.url=jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8 3 jdbc....
而页面会在打开的时候连接后端的WebSocket服务,连接之后每两秒发送一个 "Hey guy!" 的消息。基于 SockJS 的 WebSocket在学习 《Spring实战》 第18章的时候才知道,原来在不支持WebSocket的情况下,也可以很简单地...
有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够...
主要使用SpringMVC+Spring+Mybatis实现酒店日常的基本管理。预订查询空房、入住办理离店、系统权限管理等 毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生通过学习所获得的知识、...
包含管理成员信息以及成员考勤,管理员审批的功能,采用SpringMVC+Hibernate4+Spring搭建 毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生通过学习所获得的知识、技能以及对特定...
创建好了项目之后就把我创建的一个小案例放上了 1.创建项目的流程01.引入需要的pom文件节点02.web.xml文件中配置核心控制器03.在WEB-INF目录下创建mvc核心配置文件(spring) 这个是文件的头部信
是一个用来搭建个人博客网站的平台。 毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生通过学习所获得的知识、技能以及对特定领域的深刻理解能力。这项任务通常要求学生运用所学专业...
是一个基于 Spring、SpringMVC、JDBCTemplate、JSP 开发的 Java Web 项目。项目页面美观大气,完成度较高,前后端不分离的单体架构,非常适合刚刚接触学习 Spring 的技术小白学习,也非常适合学校中的项目答辩… ...
springboot__spring__springmvc__mybatis__vue
采用框架:Springboot(spring+springMVC+MybatisPlus)+VUE(ElementUI) 毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生通过学习所获得的知识、技能以及对特定领域的深刻理解能力。...
1.创建第一个 Spring MVC 程序案例 2.Spring MVC @RequestMapping 注解案例 3.Spring MVC 请求参数的获取案例 4.Spring MVC 域对象共享数据案例 5.Spring MVC @ModelAttribute 注解案例 6.Spring MVC 国际化案例 7....
前端 Jsp,后端 Spring SpringMVC Hibernate,系统角色分为总经理、部门经理、普通员工,经理和员工通过该系统完成考勤数据录入,员工之间可以文档共享,消息沟通等 毕业设计是高等教育阶段学生在完成学业前所进行...
这项任务通常要求学生运用所学专业知识,通过独立研究和创新,完成一个实际问题的解决方案或者开展一项有价值的项目。 首先,毕业设计的选择通常由学生根据个人兴趣、专业方向以及实际需求来确定。学生需要在导师的...