`

第一个SpringMVC小案例

阅读更多

之前一直接触的是spring+sturts2+hibernate,看到很多公司使用SpringMVC,网上关于到底struts2优秀还是SpringMVC更好的讨论也很多,搜了下SpringMVC的优点:

Spring MVC的优点

  1. 清晰的角色划分:控制器(controller)、验证器(validator)、命令对象(command obect)、表单对象(form object)、模型对象(model object)、Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、试图解析器(view resoler)等等。每一个角色都可以由一个专门的对象来实现。

  2. 强大而直接的配置方式:将框架类和应用程序累都能作为JavaBean配置,支持跨多个context的引用,例如,在web控制器中对业务对象和验证器validator)的引用。

  3. 可适配、非侵入:可以根据不同的应用场景,选择何事的控制器子类(simple型、command型、from型、wizard型、multi-action型或者自定义),而不是一个单一控制器(比如Action/ActionForm)继承。

  4. 可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类。

  5. 可定制的绑定(binding)和验证(validation):比如将类型不匹配作为应用级的验证错误,这可以保证错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,你只能使用字符串表单对象,需要手动解析它并转换到业务对象。

  6. 可定制的handler mapping和view resolution:Spring提供从最简单的URL映射,到复杂的、专用的定制策略。与某些web MVC框架强制开发人员使用单一特定技术相比,Spring显得更加灵活。

  7. 灵活的model转换:在Springweb框架中,使用基于Map的键/值对来达到轻易的与各种视图技术集成。

  8. 可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。

  9. 简单而强大的JSP标签库(Spring Tag Library):支持包括诸如数据绑定和主题(theme)之类的许多功能。他提供在标记方面的最大灵活性。

  10. JSP表单标签库:在Spring2.0中引入的表单标签库,使用在JSP编写表单更加容易。

  11. 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就完成了, 随着学习的深入,再做记录。

 

 

分享到:
评论

相关推荐

    springmvc学习第一天

    **SpringMVC**是Spring框架中的一个重要组成部分,主要用于构建Web应用程序。它遵循MVC(Model-View-Controller)设计模式,帮助开发者构建出清晰、可维护的Web应用程序。 #### 二、SpringMVC框架原理 SpringMVC的...

    WebSocket搭建案例,集成SpringMVC

    1. **配置WebSocket端点**:首先,你需要定义一个WebSocket处理器类,通常继承自`WebSocketHandler`,在这个类中处理连接打开、关闭以及接收到的消息。你可以通过`@ServerEndpoint`注解来指定WebSocket的URL路径。 ...

    springMVC从基础到精通的五个案例

    首先,我们来看第一个案例"Jwssm01"。这通常会涵盖SpringMVC的基础设置,包括配置Servlet容器(如Tomcat),添加SpringMVC的依赖到项目中,以及配置SpringMVC的核心组件——DispatcherServlet。在这个阶段,你会学习...

    JAVA SpringMVC框架 介绍 代码案例

    SpringMVC框架是Java开发中的一个关键组成部分,它是Spring框架的核心模块之一,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。这个框架以轻量级、高可扩展性和灵活性著称,是现代Java Web开发的首选工具...

    SSM框架应用开发与案例实战(Spring+SpringMVC+MyBatis)(慕课版)-PPT.rar

    接着,进入SpringMVC部分,它是Spring框架的一个模块,用于构建Web应用程序。"第11章 Spring Web MVC入门.ppt"和"第12章 注解式控制器开发.ppt"将带你了解SpringMVC的工作流程,包括模型-视图-控制器(MVC)设计模式...

    Spring,SpringMVC案例及SSM框架整合.zip

    1. SpringMVC案例:通过创建Controller、Service、DAO三层架构,配合SpringMVC的注解路由,实现业务逻辑的处理。例如,使用`@RequestMapping`定义请求映射,`@Service`标记业务层服务,`@Repository`标识数据访问...

    springMVC-JDBC例子

    总结来说,"springMVC-JDBC例子"是一个演示如何在Spring MVC项目中使用JDBC进行数据库操作的实际案例。通过这个例子,学习者可以巩固Spring MVC的MVC设计模式理解,掌握JdbcTemplate的使用,以及如何在Spring配置...

    第5节 完整版 Java开发实训课程系列-SpringMVC框架技术 全套PPT课件资源 共9个章节 含案例源码.rar

    完整版 Java开发实训课程系列-SpringMVC框架技术教程 第1章 springmvc概述 (共27页).pptx 完整版 Java开发实训课程系列-SpringMVC框架技术教程 第2章 处理器映射器和适配器 (共22页).pptx 完整版 Java开发实训...

    Spring、SpringMVC、MyBatis、Spring Boot案例.zip

    Spring、SpringMVC、MyBatis、Spring Boot案例关注公众号,第一时间获取最新文章欢迎小伙伴明星另外两个前分离的SpringBoot项目【1.V部落,Vue+SpringBoot实现的多用户博客管理平台!】【2.vhr、微人事是一个前置...

    SpringMVC第一天学习代码

    在第一天的学习中,你将接触到一系列关键概念和技术,这些内容将帮助你理解和应用SpringMVC来构建动态网站。 首先,让我们从入门案例开始。SpringMVC的入门通常涉及创建一个DispatcherServlet,它是SpringMVC的前端...

    SpringMVC集成SpringSecurity

    其中,过滤器链是SpringSecurity处理请求的第一道防线,它会拦截所有HTTP请求并进行安全检查。 2. **集成过程**:在SpringMVC项目中集成SpringSecurity,首先需要在pom.xml文件中引入相应的依赖,接着配置Spring...

    springmvc课堂笔记(两天)

    第一天的课堂笔记可能涵盖以下内容: 1. **Spring MVC概述**:介绍SpringMVC作为Spring框架的一部分,如何简化Java Web应用程序的开发,以及其与其他MVC框架的区别。 2. **DispatcherServlet**:这是SpringMVC的...

    跟我学SpringMVC

    - **第一个SpringMVC应用**:通过实现一个简单的增删改查操作来演示SpringMVC的基本用法,如控制器编写、视图渲染等。 - **配置详解**:深入解析SpringMVC的核心配置文件,了解如何配置前端控制器、视图解析器等关键...

    传智播客_Springmvc+Mybatis由浅入深全套视频代码

    - Mybatis部分【第1天相关资料及源代码】.zip:包含Mybatis基础和进阶的学习资料及配套源码,从环境搭建到实战案例,逐步带你走进Mybatis的世界。 - Mybatis部分【第2天相关资料及源代码】.zip:深化对Mybatis的理解...

    springmvc Ehcache

    // 假设第一次查询后缓存了结果 User user2 = userService.getUser("1"); assertEquals(user1, user2); } } ``` 这个测试案例中,第二次调用`getUser`方法时,由于缓存的存在,应该直接从缓存中获取数据,而不是...

    Springmvc第一天课堂笔记

    【Springmvc第一天课堂笔记】 Spring MVC 是 Spring 框架的一部分,它是一个基于 Model-View-Controller(MVC)设计模式的Web应用框架。在B/S系统中,MVC模式被广泛采用,其中C(Controller)是控制器,M(Model)...

    基于Maven+SpringMVC+Hibernate在线考试系统设计源码案例设计.zip

    4. 缓存机制:Hibernate内置了第一级缓存和第二级缓存,提高数据访问效率。 5. 邮件支持:在考试系统中,可能需要发送邮件通知,如考试结果通知,Hibernate可以通过插件实现邮件服务。 总的来说,这个在线考试系统...

    SpringMVC+分页

    5. **测试与优化**:运行项目,测试分页功能是否正常工作,可以考虑添加排序功能,以及处理边界情况,如第一页和最后一页。 这个SpringMvc项目案例+分页的压缩包中,包含了实现上述功能的所有必要文件,包括配置...

    Java SpringMVC+H5飞翔的小鸟游戏微信小程序源码.rar

    综上所述,这个项目融合了后端开发、前端开发和移动应用开发技术,为学习者提供了一个全面了解Web应用和微信小程序开发的实战案例,同时也对SpringMVC、HTML5和微信小程序的集成应用有深入的探讨价值。通过分析和...

    springMVC入门框架(非注解)

    6. **DispatcherServlet**:Spring MVC的前端控制器,它是所有HTTP请求的第一入口。它负责调度请求到相应的Controller,处理请求参数,并将结果转发给视图。 7. **配置文件**:在非注解方式下,你需要在XML配置文件...

Global site tag (gtag.js) - Google Analytics