Spring MVC为展现层提供的基于MVC设计理念的优秀Web框架,是目前最主流的MVC框架之一。

Spring 3.0之后完全超越Struts2,称为最优秀的MVC框架。学完SpringMVC之后,瞬时间就能让你感到Struts2带给你的残酷。

Spring MVC通过一套MVC注解,让POJO称为处理请求的控制器,无需实现任何接口,耦合度低。

并且Spring MVC对rest风格很好的支持。。

利用了松散的耦合可拔插组件结构,比其他MVC框架更具扩展性和灵活性。

搭建Spring MVC环境

  1)基于接口方式搭建MVC环境。实现Controller接口实现MVC

  2)基于注解方式,在Spring3.0以后的版本中,使用注解极大的简化了传统的MVC配置,灵活性与可维护性得到了大大的提高哦。

实现SpringMVC步骤,第一个肯定是要到入对应jar包啦

然后就是和Struts2一样在Web.xml配置一个核心控制器。用于拦截请求。

<!-- 配置SpringMVC的请求的Servlet -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

看到这里是不是感到很熟悉,只不过比Struts2多了几行而已。init-param是初始化要加载的spring文件,如果有多个可以使用逗号隔开

load-on-startup 在启动的时候立马加载。 <url-pattern>/</url-pattern>拦截所有的请求。(同时css,js也会被拦截);

然后我们写个Controller

package com.miya.spring.mvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
@RequestMapping("/Miya")
public class MiyaHelloController { @RequestMapping("/hello")
public String hello(){
System.out.println("hello Miya");
return "/hello";
}
}

@Controller这个注解不用多说吧,声明一个控制器。

@RequestMapping定义在类上面是声明一个空间。在方法上面是声明一个请求路径

返回一个字符串你要访问的路径这个路径在哪里呢?

    <context:component-scan base-package="com.miya.spring.mvc"/>

    <!-- 视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/views"/>
<!-- 后缀 -->
<property name="suffix" value=".jsp"/>
</bean>

在我们Spring XML的配置中,我们首先扫描所有的注解,然后配置了一个试图解析器。

当我们返回那个hello的时候,它是 prefix + result(hello) +suffix 去访问我们的视图。

现在我们在index.jsp直接跑一个试试。

<%
response.sendRedirect(request.getContextPath() + "/Miya/hello");
%>

request.getContextPath()拿到的是你的web项目的根路径,就是webContent(MyEclipse中是webRoot)。然后现在可以看到我们的命名空间Miya后面跟里面定义的方法请求路径

hello。我们最终访问后的地址http://localhost:8080/SpringMvcDemo1/Miya/hello 访问到的是WEB-INF/views/hello.jsp这个文件。而且这个请求还是个rest风格请求。

到了这里会发现比Struts2方便的多,Struts2每次配置请求都要去Struts2中配置action啊什么什么的一大堆,并且有的时候sturts文件中几千行,老眼昏花找个请求都要找半个小时。

我们还有一个实现方式就是实现Spring提供的Controller接口重写接口里面的方法。

package com.miya.spring.mvc.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; public class MiyaWordController implements Controller{ @Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("/hello");
return modelAndView;
} }

ModelAndView中可以设置视图,我设置的还是hello这个,然后我们需要在spring XML中配置一个bean,name是请求路径,class是指定控制器类

<bean name="/Miya/word" class="com.miya.spring.mvc.controller.MiyaWordController"></bean>   

注意:我们在项目中拦截了所有的请求,会导致图片,样式,JS都报404,我们可以在spring XML中引入外部资源文件,而且这种实现接口的方式造成耦合度太高,而且每一个功能都需要写上一个类,导致我们代码的臃肿,所以还是推荐使用注解方式,注解目前是非常流行,并且很多框架都支持注解方式,并且语法简单,方便使代码简洁。

<!-- 引入外部样式 -->
<mvc:resources location="/css/" mapping="/css/**"></mvc:resources>

SpringMVC环境搭建的更多相关文章

  1. SpringMVC环境搭建和详解

    1.Spring容器和SpringMVC容器是父子容器 1.1 SpringMVC容器可以调用Spring容器中的所有内容 1.2 图示 2.SpringMVC环境搭建 1.导入jar包 2.在web ...

  2. springmvc环境搭建及实例

    一. 软件环境 eclipse-jee-mars-R-win32-x86_64 jdk1.7.0_79 apache-tomcat-7.0.52 spring-framework-3.2.0.RELE ...

  3. springmvc环境搭建以及常见问题解决

    1.新建maven工程 a)  打开eclipse,file->new->project->Maven->Maven Project b)  下一步 c)   选择创建的工程为 ...

  4. spring入门(五)【springMVC环境搭建】

    springMVC作为spring的一个WEB组件,是一个MVC的思想,减少了WEB开发的难度,现介绍springMVC环境的搭建,具体的原理放在后面介绍.用过框架的朋友都知道要在WEB项目中使用一个 ...

  5. SpringMvc环境搭建(配置文件)

    在上面的随笔里已经把搭建springmvc环境的基本需要的包都下下来了,拉下来就是写配置文件了. 下面左图是总的结构,右图是增加包 一.最开始当然是web.xml文件了,这是一个总的宏观配置 < ...

  6. SpringMVC 环境搭建

    SpringMVC 框架环境搭建操作步骤如下: 创建动态 Web 项目 配置 Tomcat 服务器 配置 SpringMVC 前端控制器 <?xml version="1.0" ...

  7. SpringMVC环境搭建---xml版及注解版

    一.建立 JavaWeb 项目(基于Intellij 14.0.3搭建) 1.建立一个 Java 项目,在项目下新建一个文件夹 webapp ,然后在该文件夹下新建一个 WEB-INF 文件夹: 2. ...

  8. SpringMVC 环境搭建(HelloWorld)

    SpringMVC 入门案例 环境 * springMVC * web 构建文件目录结构 修改dispatcher-servlet.xml文件 修改web.xml

  9. SpringMVC环境搭建——HelloWorld

    1.新建Maven Web 工程: 2.添加相关的依赖包(Spring MVC.tomcat插件等),具体的pom.xml文件如下 <project xmlns="http://mav ...

随机推荐

  1. python的sys.args使用

    一.sys 模块 sys是Python的一个「标准库」,也就是官方出的「模块」,是「System」的简写,封装了一些系统的信息和接口. 官方的文档参考:https://docs.python.org/ ...

  2. gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化

    参考链接 : http://blog.csdn.net/qq_31108501/article/details/51842166 gcc -D选项的作用,声明宏 参考链接:  http://blog. ...

  3. 【blog】SpringBoot普通类中如何获取其他bean例如Service、Dao

    自己写工具类 工具类 import org.springframework.beans.BeansException; import org.springframework.context.Appli ...

  4. Kotlin中,lateinit 和 lazy{} 的区别

    1.lazy{} 只能用在val类型, lateinit 只能用在var类型 如 : val name: String by lazy { "sherlbon" }lateinit ...

  5. vue 学习笔记—路由篇

    一.关于三种路由 动态路由 就是path:good/:ops    这种 用 $route.params接收 <router-link>是用来跳转  <router-view> ...

  6. 机器学习超参数优化算法-Hyperband

    参考文献:Hyperband: Bandit-Based Configuration Evaluation for Hyperparameter Optimization I. 传统优化算法 机器学习 ...

  7. openstack Q版部署-----安装报错问题

    1.实例开机提示找不到磁盘Booting from Hard Disk... GRUB. 开启 CPU 虚拟化支持. 将计算节点 nova.conf 配置修改如下即可: [libvirt] cpu_m ...

  8. flask 源码剖析

    flask 上下文管理源码流程及涉及的部分技术点 [flask源码梳理]之一  偏函数_mro [flask源码梳理]之二  面向对象中__setattr__ [flask源码梳理]之三  Local ...

  9. (转载)深度剖析 | 可微分学习的自适配归一化 (Switchable Normalization)

    深度剖析 | 可微分学习的自适配归一化 (Switchable Normalization) 作者:罗平.任家敏.彭章琳 编写:吴凌云.张瑞茂.邵文琪.王新江 转自:知乎.原论文参考arXiv:180 ...

  10. Scala 入门介绍

    1 基础 1.1 Scala 解释器 REPL - 交互式解释器环境 R(read).E(evaluate).P(print).L(loop) 输入值,交互式解释器会读取输入内容并对它求值,再返回结果 ...