SpringMvc学习笔记(一)SpringMvc环境搭建

讲述,springmvc概述,原理,环境的搭建,controller(请求转发/重定向)跳转到页面,controller跳到另外一个controller,配置核心的DispatcherServlet,配置默认的核心配置文件,jsp请求转发的视图解析器。

源码获取github

1.SpringMvc概述

SpringMVC 是隶属于Spring框架中的一个模块而已

让控制层更加的简单

SpringMVC是WEB层框架

SpringMVC的概述(官方文档页面搜索the web)

Introduction to Spring Web MVC framework

The Spring Web model-view-controller (MVC) framework is

designed around a DispatcherServlet (翻译:设计围绕着DispatcherServlet,意思是我需要配置一个Servlet)that dispatches requests to handlers, with configurable handler mappings(可以设置一个映射), view resolution, locale, time zone and theme resolution as well as support for uploading files(支持上传文件).

The default handler is based on the @Controller and @RequestMapping annotations(默认情况下支持了@Controller和@RequestMapping两个注解),对比我之前学的servlet:

之前的:@WebServlet(“/sys/user”)通过我们设置的映射路径/sys/user会访问到Servlet

@Controller 就相当于告知你的这个类为控制器

@RequestMapping是用来设置映射的路径

offering a wide range of flexible handling methods. With the introduction of Spring 3.0, the @Controller mechanism also allows you to create

RESTful [百度,这是一个风格,豆瓣就是用的这种风格]

Web sites and applications, through the @PathVariable annotation and other features.

所有的请求都要经过前端控制器处理,然后由它决定找到下一个controller是谁,然后这个controller又响应回去DispatcherServlet,视图解析器决定使用哪个模板,最终响应成HTML。

2.程序结构

在idea中新建一个javaee项目,其中需要jar包,可以在maven仓库中下载

3.idea配置tomcat

添加tomcat

找到你自己的tomcat路径,然后点ok添加好你的tomcat,然后点ok,把你需要部署到tomcat的web服务,添加进去,旁边那个Application context 是你访问这个项目的名字,比如/mvc,访问路径就是localhost:8080/mvc,下面http port是访问的端口号,然后有个是设置打开的浏览器,然后就ok了,最后点运行键,就可以运行

4.配置核心的DispatcherServlet

在web.xml中加入

<servlet>
   <!--默认的核心配置文件-->
   <servlet-name>springmvc</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <!-- 服务器启动的时候就对DispatcherServlet进行实例化操作 -->
   <!-- 值越小,越被越优先实例化 -->
   <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--  /
            所有的资源访问都需要经过 DispatcherServlet处理
            路径
                href
                src.....
               区分   /* 和 /
         -->
        <url-pattern>/</url-pattern>
</servlet-mapping>

5.配置默认的核心配置文件的所在位置和名称

Upon (init初始化)initialization of a DispatcherServlet, Spring MVC looks for a file named *[servlet-name]-servlet.xml*(DispatcherServlet初始化的时候,会找一个这个格式的文件)

在DispatcherServlet中,我们写了这个springmvc,就会找springmvc-servlet.xml这个文件,在WEB-INF下

in the WEB-INF directory of your web application and creates the beans defined there, overriding the definitions of any beans defined with the same name in the global scope.

springmvc-servlet.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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">


   <!--1.启动SpringMvc注解-->
   <mvc:annotation-driven/>
   <!--2.扫描controller-->
   <!--可以使用通配符 *
       com.*.web 可以识别:com.hs.web   com.sd.web   com.sdsa.web 但是不能识别com.hs.sd.web
      访问任意一层
      com.**.web  可以识别com.web  com.hs.web com.sad.asd.asd.web
     -->
   <context:component-scan base-package="com.hs.**.web"/>

</beans>

6.Controller文件

SkipDemoController.java

package com.hs.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.UrlBasedViewResolver;

/**
 * 跳转专题:请求转发,重定向,一个controller跳到另外一个controller
 */
@Controller
public class SkipDemoController {
   //设置映射的路径
   //当我在浏览器中输入 http://127.0.0.1:8080/mvc/hs01
   @RequestMapping("/hs01")
   /*从Controller跳转到jsp_默认是请求转发
   请求转发,页面不跳转,可以访问WEB-INF路径下的东西*/
   public ModelAndView test01(){
      ModelAndView nav = new ModelAndView();
      nav.setViewName("/WEB-INF/jsp/result01.jsp");
      return nav;
   }
   /*从Controller跳转到jsp_默认是请求转发
   请求转发,页面不跳转,可以访问WEB-INF路径下的东西*/
   @RequestMapping("/hs011")
   public ModelAndView test011(){
      ModelAndView nav = new ModelAndView();
      nav.setViewName("jsp/result01");   //如果设置了jsp请求转发的视图解析器
      return nav;
   }

   @RequestMapping("/hs02")
   /*从Controller跳转到jsp_重定向
   但是官方不推荐直接重定向到jsp页面
   重定向,页面跳转,不可以访问WEB-INF路径下的东西*/
   public ModelAndView test02(){
      ModelAndView nav = new ModelAndView();
      nav.setViewName("redirect:/test01.jsp");
      return nav;
   }
  /**从Controller跳转到Controller_请求转发
     * 当配置了JSP的请求转发视图解析器后从Controller跳转到另外一个Controller,
     * 必须指明前缀:forward/redirect
     * @return
     */
   @RequestMapping("/hs03")
   public ModelAndView test03() {
      ModelAndView nav = new ModelAndView();
      nav.setViewName("forward:/hs011");  //这个写forward的原因是,避免jsp请求转发视图解析器,把hs011解析成了jsp页面UrlBasedViewResolver.FORWARD_URL_PREFIX=forward
//    nav.setViewName("/hs01");
      return nav;
   }

   /*从Controller跳转到Controller_重定向*/
   @RequestMapping("/hs04")
   public ModelAndView test04() {
      ModelAndView nav = new ModelAndView();
      nav.setViewName(UrlBasedViewResolver.REDIRECT_URL_PREFIX+"/hs01");   //UrlBasedViewResolver.REDIRECT_URL_PREFIX   == redirect:
      return nav;
   }
}

7.视图解析器

在springmvc-servlet.xml的后面加

   <!--jsp请求转发视图解析器
        请求转发jsp页面的时候,在路径上加入前缀和后缀
    -->
    <!--下面相当于 InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver()-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <!--相当于setPrefix("/WEB-INF/")-->
        <property name="prefix" value="/WEB-INF/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
        <!--支持JSTL-->
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    </bean>

8.页面代码

result01.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>Title</title>
</head>
<body>
hello word
</body>
</html>

test01.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>Title</title>
</head>
<body>
测试
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值