• 第一个SpringMVC小案例


    之前一直接触的是spring+sturts2+hibernate,然后听说springMVC把struts2给替代了,公司开发也大多使用这个

    貌似要火,在网上随便搜了点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>
      <servlet-mapping>
          <servlet-name>springMVC</servlet-name>
          <url-pattern>*.do</url-pattern>
      </servlet-mapping>

    注解:DispatcherServlet拦截 所有后缀为.do 的用户请求

    3、新建实体类User.java

    View Code
    package cn.itcast.model;
    
    public class User {
        
        private String id;
        private String username;
        private String password;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    
    }

    开发控制类UserController.java

    View Code
    package cn.itcast.web.controller;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.AbstractController;
    
    import cn.itcast.model.User;
    
    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

    View Code
    <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的资料。

    也请各位个个们多多指导~~

    public string void 
  • 相关阅读:
    Cypress web自动化7-连接器connectors
    Cypress web自动化6- Assertions断言使用(should, expect)
    Cypress web自动化5-table表格元素(别名使用Aliasing)
    Cypress web自动化4-操作页面元素(Actions行为事件)
    Cypress web自动化3- 登录web网站案例脚本
    Cypress web自动化2-pycharm写第一个脚本
    MapReduce实现手机上网流量分析(业务逻辑)
    Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the co
    Input path does not exist: file:/.......
    基于Maven引入Hadoop包报Missing artifact jdk.tools:jdk.tools:jar:1.6
  • 原文地址:https://www.cnblogs.com/onway/p/springMVC.html
Copyright © 2020-2023  润新知