zoukankan      html  css  js  c++  java
  • IDEA搭建我的第一个Spring MVC应用(附使用注解实现)

    新建项目

    File——New——Project
    Spring勾选项
    Next
    项目名称
    这里任意填写。
    Finish

    配置项目

    配置前端控制器 DispatcherServlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
        </context-param>
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <!--定义Spring MVC前端控制器-->
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/springmvc-config.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <!--让Spring MVC的前端控制器拦截所有请求-->
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>
    

    配置Spring MVC的Controller
    在WEB-INF下新建springmvc-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <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.xsd">
    <!--配置Handle,映射"/hello"请求-->
    <bean name="/hello" class="com.wen.controller.HelloController"/>
    <!--处理映射器将bean的name作为url进行查找,需要在配置Handle是指定name(即url)-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!--SimpleControllerHandlerAdapter是一个处理器适配器,所有处理适配器都有实现HandlerAdapter-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
    <!--在Spring4.0后,可以不配置处理映射器、处理器适配器和视图解析器,也可以完成Spring内部MVC工作-->
    </beans>
    

    新建HelloController.java

    package com.wen.controller;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    /**
     * 实现Controller接口的控制器,用来处理hello请求
     * 可以处理一个单一的请求动作
     */
     
    public class HelloController implements Controller {
        private static final Log logger = LogFactory.getLog(HelloController.class);
    
        /**
         * handleRequest是Controller接口必须实现的方法
         */
        @Override
        public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
            logger.info("handleRequest被调用");
            //创建预返回的ModelView对象
            ModelAndView mv =new ModelAndView();
            //添加模型数据
            mv.addObject("message","HelloWorld");
            //逻辑视图名
            mv.setViewName("/WEB-INF/pages/welcome.jsp");
            //返回对象、模型数据、视图名
            return mv;
        }
    }
    

    新建welcome.jsp,使用EL表达式用来接受Controller传递的message

    <%--
      Created by IntelliJ IDEA.
      User: wen
      Date: 2019/1/27
      Time: 22:08
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Welcome</title>
    </head>
    <body>
    ${requestScope.message}
    </body>
    </html>
    

    测试应用

    测试图
    Tips:使用MVC框架应该严格遵守MVC思想。MVC框架不赞成浏览器直接访问Web应用的视图页面,用户的所有请求都只应向控制器发送,由控制器调用模型组件、视图组件向用户呈现数据,即指向视图层。

    基于注解的控制器

    使用注解大大的提供了我们的开发效率,但是了解一点原始的配置,才能更好的了解他们的运行流程。
    我们只需要修改两个地方~
    1、Controller
    我们不用需要Controller接口,改成使用注解来描述。用来处理/hello请求。

    package com.wen.controller;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    /**
     * 基于注解的控制器
     * 可以同时处理多个请求动作,并且无需实现任何接口
     * org.springframework.stereotype.Controller 注解用于指示该类是一个控制器
     */
    
    @Controller
    public class HelloController {
        private static final Log logger= LogFactory.getLog(HelloController.class);
        @RequestMapping(value = "/hello")
        public ModelAndView hello(){
            logger.info("hello方法被调用");
            ModelAndView mv =new ModelAndView();
            mv.addObject("message","Hello World");
            mv.setViewName("/WEB-INF/pages/welcome.jsp");
            return mv;
        }
    }
    
    

    2、修改Spring MVC的配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           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">
        <!--spring可以自动去扫描base-pack下面的包或者子包下面的java文件-->
        <context:component-scan base-package="com.wen.controller"/>
        <!--配置annotation类型的处理映射器-->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
        <!--配置annotation类型的处理器适配器-->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
        <!--视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
        <!--在Spring4.0后,可以不配置处理映射器、处理器适配器和视图解析器,也可以完成Spring内部MVC工作-->
    </beans>
    

    测试应用

    测试图

    End~

  • 相关阅读:
    GTK+ 3.6.2 发布,小的 bug 修复版本
    RunJS 新增 Echo Ajax 测试功能
    Mozilla 发布 Popcorn Maker,在线创作视频
    Sina微博OAuth2框架解密
    Mina状态机State Machine
    Mozilla 发布 Shumway —— 纯JS的SWF解析器
    Code Browser 4.5 发布,代码浏览器
    ROSA 2012 "Enterprise Linux Server" 发布
    ltrace 0.7.0 发布,程序调试工具
    Artifactory 2.6.5 发布,Maven 扩展工具
  • 原文地址:https://www.cnblogs.com/guowenrui/p/10363573.html
Copyright © 2011-2022 走看看