zoukankan      html  css  js  c++  java
  • SpringMVC环境搭建

    Spring MVC为展现层提供的基于MVC设计理念的优秀Web框架,是目前最主流的MVC框架之一。

    Spring 3.0之后完全超越Struts2,称为最优秀的MVC框架。学完SpringMVC之后,瞬时间就能让你感到Struts2带给你的残酷。

    Spring MVC通过一套MVC注解,让POJO称为处理请求的控制器,无需实现任何接口,耦合度低。

    并且Spring MVC对rest风格很好的支持。。

    利用了松散的耦合可拔插组件结构,比其他MVC框架更具扩展性和灵活性。

    搭建Spring MVC环境

      1)基于接口方式搭建MVC环境。实现Controller接口实现MVC

      2)基于注解方式,在Spring3.0以后的版本中,使用注解极大的简化了传统的MVC配置,灵活性与可维护性得到了大大的提高哦。

    实现SpringMVC步骤,第一个肯定是要到入对应jar包啦

    然后就是和Struts2一样在Web.xml配置一个核心控制器。用于拦截请求。

    <!-- 配置SpringMVC的请求的Servlet -->
      <servlet>
              <servlet-name>DispatcherServlet</servlet-name>
                  <servlet-class>
                      org.springframework.web.servlet.DispatcherServlet
                </servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:applicationContext.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
     </servlet>
      <servlet-mapping>
          <servlet-name>DispatcherServlet</servlet-name>
          <url-pattern>/</url-pattern>
      </servlet-mapping>

    看到这里是不是感到很熟悉,只不过比Struts2多了几行而已。init-param是初始化要加载的spring文件,如果有多个可以使用逗号隔开

    load-on-startup 在启动的时候立马加载。 <url-pattern>/</url-pattern>拦截所有的请求。(同时css,js也会被拦截);

    然后我们写个Controller

    package com.miya.spring.mvc.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    @RequestMapping("/Miya")
    public class MiyaHelloController {
    
        @RequestMapping("/hello")
        public String hello(){
            System.out.println("hello Miya");
            return "/hello";
        }
    }

    @Controller这个注解不用多说吧,声明一个控制器。

    @RequestMapping定义在类上面是声明一个空间。在方法上面是声明一个请求路径

    返回一个字符串你要访问的路径这个路径在哪里呢?

        <context:component-scan base-package="com.miya.spring.mvc"/>
        
        <!-- 视图解析器 -->
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!-- 前缀 -->
            <property name="prefix" value="/WEB-INF/views"/>
            <!-- 后缀 -->
            <property name="suffix" value=".jsp"/>
        </bean>

    在我们Spring XML的配置中,我们首先扫描所有的注解,然后配置了一个试图解析器。

    当我们返回那个hello的时候,它是 prefix + result(hello) +suffix 去访问我们的视图。

    现在我们在index.jsp直接跑一个试试。

    <%
            response.sendRedirect(request.getContextPath() + "/Miya/hello");
        %>

    request.getContextPath()拿到的是你的web项目的根路径,就是webContent(MyEclipse中是webRoot)。然后现在可以看到我们的命名空间Miya后面跟里面定义的方法请求路径

    hello。我们最终访问后的地址http://localhost:8080/SpringMvcDemo1/Miya/hello 访问到的是WEB-INF/views/hello.jsp这个文件。而且这个请求还是个rest风格请求。

    到了这里会发现比Struts2方便的多,Struts2每次配置请求都要去Struts2中配置action啊什么什么的一大堆,并且有的时候sturts文件中几千行,老眼昏花找个请求都要找半个小时。

    我们还有一个实现方式就是实现Spring提供的Controller接口重写接口里面的方法。

    package com.miya.spring.mvc.controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    public class MiyaWordController implements Controller{
    
        @Override
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.setViewName("/hello");
            return modelAndView;
        }
    
    }

    ModelAndView中可以设置视图,我设置的还是hello这个,然后我们需要在spring XML中配置一个bean,name是请求路径,class是指定控制器类

    <bean name="/Miya/word" class="com.miya.spring.mvc.controller.MiyaWordController"></bean>   

    注意:我们在项目中拦截了所有的请求,会导致图片,样式,JS都报404,我们可以在spring XML中引入外部资源文件,而且这种实现接口的方式造成耦合度太高,而且每一个功能都需要写上一个类,导致我们代码的臃肿,所以还是推荐使用注解方式,注解目前是非常流行,并且很多框架都支持注解方式,并且语法简单,方便使代码简洁。

    <!-- 引入外部样式 -->
        <mvc:resources location="/css/" mapping="/css/**"></mvc:resources>
  • 相关阅读:
    实验一报告 20135238&20135207
    第十周
    极客Web前端开发资源大荟萃#022
    一个不错的编程小挑战 没事的时候可以试试
    变形金刚的能量方块(含代码)
    Angular控制器之间的数据通信
    使用HTML5本地 Drag和Drop API(native API)
    用requestAnimationFrame优化你的javascript动画
    模板字符串
    ES6的全新特性:模板字符串
  • 原文地址:https://www.cnblogs.com/SimpleWu/p/9689648.html
Copyright © 2011-2022 走看看