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>
    

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

  • 相关阅读:
    LightOJ 1132 Summing up Powers(矩阵快速幂)
    hdu 3804 Query on a tree (树链剖分+线段树)
    LightOJ 1052 String Growth && uva 12045 Fun with Strings (矩阵快速幂)
    uva 12304 2D Geometry 110 in 1! (Geometry)
    LA 3263 That Nice Euler Circuit (2D Geometry)
    2013 SCAUCPC Summary
    poj 3321 Apple Tree (Binary Index Tree)
    uva 11796 Dog Distance (几何+模拟)
    uva 11178 Morley's Theorem (2D Geometry)
    动手动脑
  • 原文地址:https://www.cnblogs.com/haizhilangzi/p/11020481.html
Copyright © 2011-2022 走看看