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. 第25月第11天 deeplearning.ai

    1.网易云课堂 深度学习工程师 点击进入课程地址(英文)(收费) 点击进入课程地址(中文)(免费) 第一门 神经网络和深度学习 第二门 改善神经网络 第三门 结构化机器学习项目 第四门 卷积神经网络 ...

  2. BZOJ4921「Lydsy1706月赛」互质序列

    吐槽一下BZOJ没有C++11  题还是不难的 BZOJ 4921 题意 在长度为$ n$的数列中去掉非空的连续一段并保证剩下数字不少于$ 2$ 求合法的所有方案中剩下数字的最大公约数的总和 $Sol ...

  3. 【转】shell速查表

    shell速查表 转自:https://www.jianshu.com/p/a98a334bfb25 1. 变量 #!/bin/bash msg="hello world" ech ...

  4. python中“*”、"*args"、"kwargs"三种用法

    参考链接:https://www.cnblogs.com/cwind/p/8996000.html 注意的是: (1)"*"符号的用法很类似C++中的指针,针对列表; (2)&qu ...

  5. R-FCN论文讲解(转载链接)

    总结一下一下R-FCN的思想:由于分类网络具有位置的“不敏感性”和检测网络具有“位置的敏感性”这两者之间的矛盾, 而ResNet论文中为了解决这个问题,做出了一点让步,即将RoI Pooling层不再 ...

  6. boost.asio包装类st_asio_wrapper开发教程(2013.12.8更新)(二)

    如果你是偶然浏览到这里,请先看 源代码及例程下载地址:命令行:svn checkout http://st-asio-wrapper.googlecode.com/svn/trunk/ st-asio ...

  7. CFtpFileFind例子

    #include <afx.h> #include <afxwin.h> #include <afxinet.h> #include <stdio.h> ...

  8. 题解-CodeForces835F Roads in the Kingdom

    Problem CodeForces-835F 题意:求基环树删去环上任意一边后直径最小值,直径定义为所有点对最近距离的最大值 Solution 首先明确删去环上一点是不会影响树内直径的,所以应当先把 ...

  9. oracle procedure存储过程

    1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS/AS 变量1 ; 变量2 DATE: BEG ...

  10. ansible笔记(7):常用模块之系统类模块

    ansible笔记():常用模块之系统类模块 cron模块 cron模块可以帮助我们管理远程主机中的计划任务,功能相当于crontab命令. 在了解cron模块的参数之前,先写出一些计划任务的示例,示 ...