SpringMVC学习 --hello word

 

与struts2一样SpringMVC也是一个MVC框架。Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。

在配置上SpringMVC可以和Spring无缝连接,性能上Spring也会比Struts2要好。

       SpringMVC与struts2对比(在网上复制粘贴的)

       1. 机制:spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。

2. 性能:spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;struts2实际上是通过setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。

3. 参数传递:struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。

4. 设计思想上:struts更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展。

5. intercepter的实现机制:struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,所以我觉得论使用上来讲,spring mvc使用更加简洁,开发效率Spring MVC确实比struts2高。spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring3 mvc就容易实现restful url。struts2是类级别的拦截,一个类对应一个request上下文;实现restful url要费劲,因为struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。spring3 mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。

 

如何使用SpringMVC

学习一个框架,当然需要知道这个框架如何使用,这时候就要需要一个文档了,说到文档最好的文档当然是官方的文档了。

 

       首先下载spring-framework,具体怎么下载百度吧。这里用的是4.1.6版本的。

 

       下载好之后打开

spring-framework-4.1.6.RELEASE\docs\spring-framework-reference\html下的index.html

       找到第五部分The Web(文档太多?谷歌浏览器ctrl+F搜索the web)

查看文档17 web MVC framework

       英文看不懂?谷歌翻译了解一下

进入之后往下看可以看到一个Spring Web MVC的请求处理工作流程

在往下看就可以看到就是教我们如何使用SpringMVC了

步骤1建立一个web工程

导入jar包

commons-logging-1.1.1.jar

 spring-beans-4.1.6.RELEASE.jar

 spring-context-4.1.6.RELEASE.jar

 spring-context-support-4.1.6.RELEASE.jar

 spring-core-4.1.6.RELEASE.jar

 spring-expression-4.1.6.RELEASE.jar

 spring-web-4.1.6.RELEASE.jar

 spring-webmvc-4.1.6.RELEASE.jar

首先官方文档是这样说的,然后下面是一个在web.xml的配置

DispatcherServlet是一个实际的Servlet(它继HttpServlet承自基类),因此web.xml在您的Web应用程序中声明。您需要DispatcherServlet使用同一web.xml文件中的URL映射来映射您要处理的请求。这是标准的Java EE Servlet配置以下示例显示了这样的DispatcherServlet声明和映射:

 

步骤2配置web.xml

类名太长不用记只要记住红色部分然后在eclipse里shift+t搜索这个类就可以了

<servlet>

    <servlet-name>SpringMvc</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>SpringMvc</servlet-name>

    <url-pattern>*.html</url-pattern>

  </servlet-mapping>

步骤3编写controller类

//controller类需要实现controller接口

public class HelloController implements Controller {

 

    @Override

    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse rep) throws Exception {

        ModelAndView mv=new ModelAndView();

        //封装要在视图中显示的数据

        mv.addObject("msg", "hello springMvc");

        //设置视图名

        mv.setViewName("hello");

        return mv;

    }

步骤4关联Controller类

在SpringMVC中是如何关联controller呢?和struts2在struts.xml里面配置action一样SpringMVC也需要一个xml文件。

如官方文档中的说明

With the above Servlet configuration in place, you will need to have a file called /WEB-INF/golfing-servlet.xml in your application; this file will contain all of your Spring Web MVC-specific components (beans). You can change the exact location of this configuration file through a Servlet initialization parameter (see below for details).

翻译:

使用上面的Servlet配置,您需要/WEB-INF/golfing-servlet.xml在应用程序中调用一个文件 ; 此文件将包含所有Spring Web MVC特定组件(bean)。您可以通过Servlet初始化参数更改此配置文件的确切位置(有关详细信息,请参阅下文)

 

简单来说就是需要在WEB-INF/下面创建一个你在web.xml中配置的【servlet-name】-servlet.xml的文件,根据上面的web.xml所以本例的是SpringMvc-setvlet.xml

       SpringMvc-setvlet.xml配置(官方文档中有例子)

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:p="http://www.springframework.org/schema/p"

    xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="

        http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 配置BeanNameUrlHandlerMapping -->

    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    <!-- 配置SimpleHandlerAdapter -->

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!-- 配置渲染器 -->

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

        <!-- 前缀 -->

        <property name="prefix" value="/WEB-INF/jsp/"/>

        <!-- 后缀 -->

        <property name="suffix" value=".jsp"/>

    </bean>

    <!-- 关联自己写的hello Controller -->

    <bean name="/hello.html" class="com.controller.HelloController"/>

</beans>

 

注意“:试图渲染器中的前缀与后缀就是在执行controller后返回的ModelAndViewName的前缀+后缀,本例中的步骤3里面的

mv.setViewName("hello");

所以加上前缀与后缀后就是 /WEB-INF/jsp/hello.jsp

所以我们在WEB-INF中创建以下路径

内容:<body>

  hello springMvc

</body>

到这里我们就可以发布测试了:

如果出现以下报错:

web项目运行报错:

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

参考https://blog.csdn.net/itbiggod/article/details/79397661

为了避免少包的问题以后我也要开始慢慢的习惯使用maven来学习了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值