• 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~

  • 相关阅读:
    python全栈开发从入门到放弃之内置函数
    python全栈开发从入门到放弃之递归函数的调用
    python全栈开发从入门到放弃之字典的应用
    python全栈开发从入门到放弃之元组的内置应用
    python全栈开发从入门到放弃之装饰器函数
    [LeetCode-JAVA] Remove Duplicates from Sorted Array II
    [LeetCode-JAVA] Simplify Path
    [LeetCode-JAVA] Permutations
    tensorboard在windows系统浏览器显示空白的解决writer =tf.summary.FileWriter("logs/", sess.graph)
    Windows64位安装CPU版TensorFlow
  • 原文地址:https://www.cnblogs.com/guowenrui/p/10363573.html
Copyright © 2020-2023  润新知