zoukankan      html  css  js  c++  java
  • SpringMVC的第一个入门案例

    用户提交一个请求,服务器端处理器在接收到这个请求后,给出一条欢迎信息,在页面中显示。

    第一步:导入jar包

    在原有Springjar包基础上添加2个jar包

    spring-webmvc-4.2.0.RELEASE.jar  作用:对Spring mvc的实现

    spring-context-support-4.2.0.RELEASE.jar  作用:包含支持UI模板,邮件服务,缓存Cache等方面的类

    分析配置步骤:

    1.在web.xml中配置前端控制器

    2.处理器映射器(HandlerMapping)

    3.处理器适配器 (HandlerAdaptor)

    4.处理器

    5.视图解析器(ViewResolver)

     注册中央调度器

    关于urlpattern的说法:

    最好配成*.do

    不能配成/*             无法访问*.jsp等动态资源

    最好也不要配成/      无法访问静态资源

    不得不配成/           Restful编程 rest

    问题:/*配法出现404问题

    Ⅰ:

    不能配置为/*

    DispatcherServlet会将向动态页面请求,即向jsp页面的跳转请求也当做是一个普通的Controller请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然是找不到的。jsp页面会报404错误 结论:/*会拦截动态资源

    Ⅱ:

    方案一:使用Tomcat默认的Servlet解决不得不配成/  解释:上图中:红色标注第三中配置

    方案二:使用MVC的default-servlet-handler会将对静态资源的访问请求通过HandlerMapping映射到默认Servlet请求处理器DefaultServletRequestHandler对象。而该处理器调用了Tomcat的DefaultServlet来处理静态资源的访问请求。当然需要引入mvc约束

    方式三:使用MVC的resource解决,在Spring3.0.4之后,Spring定义了专门用于处理静态资源请求的处理器ResourceHttpRequestHandler。并且添加了<mvc:resources/>标签,专门用于解决静态资源无法访问问题。

    Location:静态资源所在目录 mapping: 对资源的请求 注意:需要Tomcat7支持

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <display-name></display-name>
    
        <!-- 1. 配置中央调度器(前端控制器) -->
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!-- 3.1指定配置文件applicationContext.xml -->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:applicationContext.xml</param-value>
            </init-param>
            <!-- 3.2Tomcat启动的时候,Service对象已经到内存 下面该数字要大于等于1,0或者是负数,跟没设置是一样的 -->
            <load-on-startup>1</load-on-startup>
    
        </servlet>
        <!-- 第一种,可以查看图片 -->
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
        
        
        
        
        <!--第二种配置  和applicationContext.xml中的<mvc:default-servlet-handler/> 结合使用-->
        <!--<servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping> -->
        
        
        
        
        <!-- 
        第三种配置
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.JPG</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
      </servlet-mapping> -->
    
    
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

    定制处理器:

    package cn.happy.controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    //一个类怎么就能成为一个Controller
    public class YController implements Controller{//处理器
        //handleRequest 处理请求
        //ModelAndView  返回值类型
        public ModelAndView handleRequest(HttpServletRequest request,
                HttpServletResponse response) throws Exception {
            ModelAndView mv=new ModelAndView();
            mv.addObject("msg", "明天放假一天");
            //处理一道
            //mv.setViewName("WEB-INF/jsp/index.jsp");
            mv.setViewName("index");
            
            return mv;
        }
    }

    jsp页面搭建:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        
    
      </head>
      
      <body>
           第一个Springmvc程序
        <!-- 页面上如何获取 -->
        <img alt="girl" src="images/18.jpg" width="300px" height="300px">
          ${msg }
      </body>
    </html>

    大配置中:注册处理器和视图解析器

     访问页面:

     配置式开发--BeanNameUrlHandlerMapping

    配置式开发--SimpleUrlHandlerMapping

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:mvc="http://www.springframework.org/schema/mvc" 
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
            ">
            <!-- 配置处理器映射器 --> 
            <!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
            </bean> -->
            <!-- 注册处理器映射器 -->
            <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
               <property name="mappings">
                   <props>
                      <prop key="/hello.do">firstController</prop>
                      <prop key="/say.do">firstController</prop>
                   </props>          
               </property>
            </bean>
            
            <!-- 注册处理映射器 -->
           <!--  <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
                <property name="urlMap">
                   <map>
                     <entry key="/hello.do">
                       <value>firstController</value>
                     </entry>
                     <entry key="/say.do">
                       <value>firstController</value>
                     </entry>
                   </map>
                </property>
            </bean>  -->
         
            <bean id="firstController" class="cn.happy.controller.YController"></bean>
            
            
           <!-- 处理/请求路径下静态资源无法访问的问题 -->
           <!-- <mvc:default-servlet-handler/> -->
          
          <!-- 方案四:TOmcat7的支持 -->
         <!--  <mvc:resources location="/images/" mapping="/images/**"></mvc:resources> -->
            
         <!-- 注册处理器   请求地址-->
         <!-- 该配置需要和 Controller中的mv.setViewName全路径-->
         <bean id="/hello.do" class="cn.happy.controller.YController"></bean> 
         
         
          <!-- 视图解析器 ViewResolver -->
         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <!-- 前缀 jstl  struts2 -->
         <property name="prefix" value="/WEB-INF/jsp/"></property>
         <!--后缀  -->
         <property name="suffix" value=".jsp"></property>
         </bean> 
    </beans>  

  • 相关阅读:
    nginx proxy_cache_revalidate
    博客园快速转载的方法,复制html的内容直接粘贴
    理解http浏览器缓存
    github 搜索技巧
    nginx缓存配置及开启gzip压缩
    音乐播放器的显示与隐藏
    寒假近半个月的收获
    javascript编程习惯总结
    关于域名服务器获取流程问题
    云盘WEB资料下载链接
  • 原文地址:https://www.cnblogs.com/413xiaol/p/6810387.html
Copyright © 2011-2022 走看看