zoukankan      html  css  js  c++  java
  • 初学spring mvc

    初学spring mvc,自己学习做了hello world小例子,步骤如下:

    1:从springsource.org下载spring的包,从apache.org下载common-logging的包(供spring使用)。

     

    2: 备好IDE和web server,我用Eclipse(Helios Service Release 1)和Tomcat6.0.29。

    2.1 Eclipse:window->show->show view->servers打开servers窗口,右键new->server,找到Apache tomcat6并点击,然后指定本机tomcat安装目录后点finish。这样就在

    Eclipse中注册了tomcat6。

    2.2 新建Dynamic Web Project,工程名spring-mvc-demo,Target runtime选项中点new runtime按钮,选择tomcat6,点finish。 这样我们的web project就自动引入了servlet-api.jar,

    jsp-api.jar,el-api.jar等web project需要的包。 将step1中jar包放到web project的WEB-INF/lib中,刷新工程,这样我们就准备好了hello world小例子的jar包环境。

    3:打开web.xml,配置DispatcherServlet

     <web-app id="WebApp_ID" version="2.4"

        xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

        <servlet>
            <servlet-name>mvc-dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/spring-mvc.xml</param-value>
            </init-param>
        </servlet>

        <servlet-mapping>
            <servlet-name>mvc-dispatcher</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

    </web-app>

    3.1 <init-param>给DispatcherServlet指定了配置文件的路径,如果不配置<init-param>,默认路径是"/WEB-INF/+<servlet-name>+'-servlet.xml'",所以本例中默认路径就是"/WEB-INF/mvc-dispatcher-servlet.xml",现在让我们在WEB-INF目录下新建一个spring-mvc.xml文件备用。

    4:编写测试类。

    4.1 新建com.test.controller.DemoController.java类:

    package com.test.controller;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.AbstractController;

    public class DemoController extends AbstractController {

        @Override
        protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
                HttpServletResponse arg1) throws Exception {
            return new ModelAndView("demo");
        }

    }

    4.1.1 AbstractController是spring mvc控制器抽象类,我们自定义的控制器只要继承这个抽象类并实现handleRequestInternal()方法就可以实现最基本的处理和跳转了。

    在spring3版本之前,继承AbstractController是要实现handleRequest()方法的,spring3以后,在AbstractController的handleRequest()方法中调用了handleRequestInternal(),

    改为由开发者自己实现handleRequestInternal()。

    4.1.2 ModelAndView 是代表视图层和模型层的类,在我们的项目中一般就是指jsp文件。

    5.配置spring mvc

    5.1 打开spring-mvc.xml,写入以下配置:

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        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-3.0.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">
        <bean name="/demo" class="com.test.controller.DemoController"></bean>

        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix">
                <value>/WEB-INF/pages/</value>
            </property>
            <property name="suffix">
                <value>.jsp</value>
            </property>
        </bean>

    </beans>

    5.1.1 第一个<bean>在spring 中配置了DemoController,name="/demo"的意思是,我可以使用"http://localhost:8080/spring-mvc-demo/demo"来调用
    DemoController。

    5.1.2 第二个<bean>定义了视图处理器,在以上的配置完成以后,我只需要在Controller类的方法里返回new ModelAndView("demo"),spring 就会自动在"demo"前后

    加入前缀和后缀作为查找视图层文件的路径,在这里就是"/WEB-INF/pages/demo.jsp"

    5.2 在/WEB-INF/pages路径下新建demo.jsp文件:

    <html>
    <body>
        <h1>demo page</h1>    
    </body>
    </html>

    6.将工程部署到Tomcat,启动Tomcat:

    6.1在servers视窗中右键tomcat6->add and remove->加入spring-mvc-demo->finish。

    6.2打开浏览器,访问http://localhost:8080/spring-mvc-demo/demo,如果看到一个显示着"demo page"两个单词的页面,就算成功了。

    7.使用注解 :我们可以使用annotation来简化xml文件中的配置。

    7.1  新建类com.test.controller.HelloController.java

    package com.test.controller;

    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;

    @Controller
    public class HelloController {
       

        @RequestMapping("/welcome")   

        public String printWelcome(ModelMap model) {
            return "hello";
        }
    }

    7.1.1 @Controller声明了HelloController类是一个Controller类,@RequestMapping配置说明当访问"http://localhost:8080/spring-mvc-demo/welcome"时会调用

    printWelcome()方法。

    7.1.2 虽然 printWelcome()方法返回类型是String,但是spring还是会自动为返回的字符串按照ViewResolver配置的信息自动添加前缀后缀并查找对应的视图。本例中

    printWelcome()方法就是跳转到了"/WEB-INF/pages/hello.jsp"。

    7.1.3  我们也可以给HelloController加上@RequestMapping,但具体的含义我还不了解,需要继续学习#^^#。

    7.2 在/WEB-INF/pages下新建hello.jsp:

    <html>
    <body>
        <h1>Hello World!</h1>    
    </body>
    </html>

    7.3 在spring-mvc.xml中注册spring annotation

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

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

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
            http://www.springframework.org/schema/beans     
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">
        
        <!-- @Controller, @Service, @Configuration, etc. -->   

         <context:component-scan base-package="com.test.controller" />

       
        <bean name="/demo" class="com.test.controller"></bean>

        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix">
                <value>/WEB-INF/pages/</value>
            </property>
            <property name="suffix">
                <value>.jsp</value>
            </property>
        </bean>

        <!-- Enables the Spring MVC @Controller programming model -->
        <mvc:annotation-driven />
    </beans>

    7.3.1 <context:component-scan>指定了在"com.test.controller"下查找annotation。

    7.3.2  在spring2.5以后spring3之前,@Controller,@Service,@Repository与@Component是一样的,都表示<bean>的声明,但从他们的区分我们可以看出

    spring即将在以后的版本中对bean进行mvc分层细化,现在,当我们在spring3下使用@Controller的时候,就没有人再为了找不到他们之间的区别而感到困惑了。

    7.3.3 本例中,如不使用<mvc:annotation-driven>也是可以的。<mvc:>是spring3新增的tag,关于

    <context:component-scan>和<mvc:annotation-driven>的区别,可以参考"http://blog.springsource.org/2009/12/21/mvc-simplifications-in-spring-3-0/"。

    7.4 重新部署工程,启动Tomcat,访问"http://localhost:8080/spring-mvc-demo/welcome" ,你看到熟悉的"Hello World!"了吗?

    参考资料:
    http://blog.springsource.com/2011/01/04/green-beans-getting-started-with-spring-mvc/
    http://blog.springsource.org/2010/01/25/ajax-simplifications-in-spring-3-0/
     
       
  • 相关阅读:
    OSPF
    【今日CS 视觉论文速览】 24 Jan 2019
    【今日CS 视觉论文速览】Wed, 23 Jan 2019
    【今日CS 视觉论文速览】 21 Jan 2019
    【Processing学习笔记】安装与入门
    【今日CS 视觉论文速览】Part2, 18 Jan 2019
    【今日CS 视觉论文速览】Fri, 18 Jan 2019
    【今日CS 视觉论文速览】Thu, 17 Jan 2019
    【今日CS 视觉论文速览】Part2, 16 Jan 2019
    【今日CS 视觉论文速览】Wed, 16 Jan 2019
  • 原文地址:https://www.cnblogs.com/mabaishui/p/2313404.html
Copyright © 2011-2022 走看看