zoukankan      html  css  js  c++  java
  • springmvc框架helloword

    spring框架提供了构建web的应用程序的全功能MVC模块-spring mvc。我们首先来写一个springmvc的hellword的配置文件的形式

    工程结构如下

    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
             pageEncoding="UTF-8" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>欢迎页面</title>
    </head>
    <body>
    <!-- 页面可以访问Controller传递传递出来的message,requestScope:表示变量能在本次请求中使用 -->
    ${requestScope.message}
    </body>
    </html>
    

    requestScope:表示变量的作用域,一共4种。pageScope: 表示变量只能在本页面使用。requestScope:表示变量能在本次请求中使用。sessionScope:表示变量能在本次会话中使用。applicationScope:表示变量能在整个应用程序中使用

    web.xml配置

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

    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-4.2.xsd">
           
        <!-- 配置Handle,映射"/hello"请求 -->
        <bean name="/hello" class="com.rookie.bigdata.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"/>
    
    </beans>
    

    HelloController.java

    package com.rookie.bigdata;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    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;
    
    
    public class HelloController implements Controller {
        private static final Log logger = LogFactory
                .getLog(HelloController.class);
    
        /**
         * handleRequest是Controller接口必须实现的方法。
         * 该方法的参数是对应请求的HttpServletRequest和HttpServletResponse。
         * 该方法必须返回一个包含视图路径或视图路径和模型的ModelAndView对象。
         */
        @Override
        public ModelAndView handleRequest(HttpServletRequest request,
                                          HttpServletResponse response) throws Exception {
            logger.info("handleRequest 被调用");
            // 创建准备返回的ModelAndView对象,该对象通常包含了返回视图的路径、模型的名称以及模型对象
            ModelAndView mv = new ModelAndView();
            // 添加模型数据 可以是任意的POJO对象
            mv.addObject("message", "Hello World!");
            // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
            mv.setViewName("/index.jsp");
            // 返回ModelAndView对象。
            return mv;
        }
    
    }
    
    

    在idea中启动该程序,在浏览器访问即可

    HelloWord的注解形式

    spring2.5版本开始新增了可基于注解的控制器,控制器不需要实现Controller接口,通过注解即可达到上面的要求

    web.xml文件

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

    HelloController

    package com.rookie.bigdata;
    
    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;
    
    /**
     * Created by dell on 2019/6/14.
     */
    @Controller
    public class HelloController {
    
        private static final Log logger = LogFactory.getLog(HelloController.class);
    
        @RequestMapping(value = "/hello")
        public ModelAndView hello() {
            logger.info("该方法调用");
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.addObject("message", "helloWord");
            modelAndView.setViewName("WEB-INF/welcome.jsp");
    
            return modelAndView;
        }
    
    
    }
    
    

    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"
    	   xmlns:context="http://www.springframework.org/schema/context"
    	   xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    	<!-- spring可以自动去扫描base-pack下面的包或者子包下面的java文件,
            如果扫描到有Spring的相关注解的类,则把这些类注册为Spring的bean -->
    	<context:component-scan base-package="com.rookie.bigdata"/>
    
    	<!-- 配置处理映射器 -->
    	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    
    	<!-- 配置处理器适配器-->
    	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
    
    	<!-- 视图解析器 -->
    	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
    
    </beans>
    

    welcome.jsp文件

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>welcome</title>
    </head>
    <body>
    <!-- 页面可以访问Controller传递传递出来的message -->
    ${requestScope.message}
    </body>
    </html>
    

    启动应用程序,在浏览器访问可以出现相同的效果

  • 相关阅读:
    蚂蚁金服合作的RISE实验室到底有多牛?
    2016年全球IC设计大厂营收排名:高通稳居龙头
    2016年全球IC设计大厂营收排名:高通稳居龙头
    2016年全球IC设计大厂营收排名:高通稳居龙头
    2016年全球IC设计大厂营收排名:高通稳居龙头
    C++模板遇到iterator时候遇到的问题和解决方法
    C++模板遇到iterator时候遇到的问题和解决方法
    C++模板遇到iterator时候遇到的问题和解决方法
    $("div span")选取里的所有的元素
    ParseError: Unrecognised input. Possibly missing something
  • 原文地址:https://www.cnblogs.com/haizhilangzi/p/11020481.html
Copyright © 2011-2022 走看看