0052 Spring MVC入门--环境搭建--第一个入门示例
Spring MVC是什么
Spring是一个框架,包括了MVC、IoC、AOP等等组件
MVC是一种思想,并非Spring框架独有,全称是Model、View、Controller,即模型、视图、控制器。服务器收到请求,交给Controller,Controller负责找到对应的一些方法完成计算,将计算的结果放到Model中,再调用View到Model中取出数据,将数据展现出来。工厂生产是不是也是这个过程,接收订单-->车间生产-->出货?
在MVC思想出现以前,是jsp时代,整个web站几乎都由jsp组成,客户端直接请求jsp,调用一些JavaBean完成数据库操作及一些计算,再返回结果。jsp既当Controller,又当view,导致整个站点耦合性过强,代码复用率低,后期不易维护,小站点用这种技术,问题还不大,如果大型站点用这个技术,简直不敢想。
MVC思想将服务器从收到请求到返回结果的全过程进行了拆分,实现了组件间的解耦,组件代码可以重用,后期要增改功能都容易。
MVC框架除了Spring MVC外,还有Struts等
Spring MVC的Hello World
下载Spring框架的jar包:http://maven.springframework.org/release/org/springframework/spring/
下载Spring要依赖的commons-logging.jar:https://commons.apache.org/proper/commons-logging/download_logging.cgi
新建一个web project,解压缩下载的Spring框架,将libs目录下的XXX.RELEASE.jar及commons-logging.jar拷贝到WebRoot/WEB-INF/lib下面。在项目名上右键Refresh,Web App Libraries里就可以看到刚拷贝进去的jar包了
在WEB-INF目录下添加个applicationContext.xml,内容先空着。
在web.xml中添加以下配置:
<servlet>
<servlet-name>springmvc</servlet-name><!-- servlet名称,随意 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 该servelt位于webmvc下 -->
<init-param>
<param-name>contextConfigLocation</param-name> <!-- 固定写法 -->
<param-value>/WEB-INF/applicationContext.xml</param-value> <!-- 这是配置文件路径 -->
</init-param>
<load-on-startup>1</load-on-startup> <!-- 启动顺序,表示web应用启动是立即加载该servlet -->
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern> <!-- 表示所有请求都交给DispatcherServlet处理 -->
</servlet-mapping>
关于DispatcherServlet:这是前端控制器,继承自HttpServlet,负责分发请求到对应的Java类,也就是Handle,就是Controller了。该servlet的加载需要一个xml配置文件,就是applicationContext.xml,这个xml文件的名称不固定,位置也不固定,能让DispatcherServlet找到,又不被用户访问到就行。如果不配置,那么会自动到WEB-INF下去找[DispatcherServlet的名称]-servlet.xml。DispatcherServlet根据xml配置文件创建WebApplicationContext容器对象,就是上下文环境。
写一个Controller,代码如下:
package mvcdemo;
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 HelloController implements Controller { //需要继承Controller接口
@Override //重写handleRequest方法,返回值是ModelAndView对象,参数为request和response
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
ModelAndView mav=new ModelAndView();
mav.getModel().put("msg", "这是Model中的数据");
mav.setViewName("hello");
return mav;
}
}
在WEB-INF/content下写一个jsp页面,就是view。jsp页面一般都放到web-inf下面,可以保护视图页面不被用户直接访问到
<%@page pageEncoding="utf-8"
contentType="text/html;charset=utf-8" %>
<html>
<head>
<title>这是第一个Spring MVC页面</title>
</head>
<body>
${msg} <!-- 到Model中拿到名为msg的数据 -->
</body>
</html>
配置applicationContext.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:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd ">
<!-- 创建HelloController的bean对象,提供给下面的handlerMapping使用 -->
<bean id="helloController" class="net.sonng.mvcdemo.controller.HelloController" ></bean>
<!-- DispatcherServlet找到这个bean,完成请求到Controller的映射,这里是:hello----helloController -->
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
<property name="mappings" >
<props>
<prop key="hello" >helloController</prop>
</props>
</property>
</bean>
<!-- 这是视图解析器,跟Controller里面的mav.setViewName("hello")连起来构成完整的视图地址:/WEB-INF/content/hello.jsp -->,
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/WEB-INF/content/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
将该应用部署到tomcat,访问:localhost:8080/mvcdemo/hello,
其他:
上面的applicationContext.xml配置还改为这样:
<!-- 用请求作为name属性的值,实际上就是请求到controller的映射 -->
<bean name="/hello" class="net.sonng.mvcdemo.controller.HelloController" />
<!-- 下面两个bean用来完成上面请求到controller的映射 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
同时要修改Controller:mav.setViewName("/WEB-INF/content/hello.jsp");,用全地址指定视图
0052 Spring MVC入门--环境搭建--第一个入门示例的更多相关文章
- Spring MVC 的环境搭建和入门小程序
1.1.下载spring框架包. 1.1.1百度搜索Spring Framework. 进入spring官网,在网页右边选择想要下载的版本.如图 1.1.2进入页面按Ctrl+F搜索Distribut ...
- Spring MVC Maven 环境搭建与部署
本文简单演示了本地开发环境的搭建.项目出包.部署运行.HelloWorld,以及部分注意事项. 起初的玩法:先安装Eclipse,然后分别下载并安装Maven.spring的插件,再进行工程模式转换, ...
- 基于maven来Spring MVC的环境搭建遇到“坑”
1.注解配置路径问题: 在web.xml中配置spring mvc 路径时, 应该配置如下:classpath:classpath:spring-* 2.jdk版本和Spring MVC版本不一致问题 ...
- Spring MVC + jpa框架搭建,及全面分析
一,hibernate与jpa的关系 首先明确一点jpa是什么?以前我就搞不清楚jpa和hibernate的关系. 1,JPA(Java Persistence API)是Sun官方提出的Java持久 ...
- Spring ——简介及环境搭建跑通Hello
Spring Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.是为了解决企业应用程序开发复杂性而创建的.框架的主要优 ...
- Spring+Spring MVC+Hibernate环境搭配
Spring+Spring MVC+Hibernate简称"SSH".Spring容器是Spring的核心,该 容器负责管理spring中的java组件.Spring的核心机制:依 ...
- 57.NodeJS入门--环境搭建 IntelliJ IDEA
转自:https://blog.csdn.net/wang19891106/article/details/51127133 NodeJS入门–环境搭建 IntelliJ IDEA 本人也刚开始学习N ...
- NodeJS入门--环境搭建 IntelliJ IDEA
NodeJS入门–环境搭建 IntelliJ IDEA 本人也刚开始学习NodeJS,所以以此做个笔记,欢迎大家提出意见. 1.首先 下载安装NodeJS,下载安装IntelliJ IDEA 2.接下 ...
- 安卓自动化测试(2)Robotium环境搭建与新手入门教程
Robotium环境搭建与新手入门教程 准备工具:Robotium资料下载 知识准备: java基础知识,如基本的数据结构.语法结构.类.继承等 对Android系统较为熟悉,了解四大组件,会编写简单 ...
随机推荐
- [Git] git revert ( revert commit 和 revert merge)
转载自:http://blog.csdn.net/qinjienj/article/details/7621887 我们难免会因为种种原因执行一些错误的commit / push,git提供了reve ...
- codeforces#277.5 C. Given Length and Sum of Digits
C. Given Length and Sum of Digits... time limit per test 1 second memory limit per test 256 megabyte ...
- 【FireMonkey】StyleBook使用方法
近期在开发一个团队文档管理工具,使用Embarcadero的XE2-C++builder进行界面开发,使用Firemonkey框架. 而这个框架十分有趣!可能吸引界面开发者的就是这个StyleBook ...
- 二、ELKStack集群架构设计
一.ELKStack介绍与入门实践 二.Elasticsearch 集群架构图 服务器配置:Centos6.6 x86_64 CPU:1核心 MEM:2G (做实验,配置比较低一些) 注:这里配置el ...
- 【云计算】Docker容器时间同步如何配置?
示例: # 3.8 配置时区.时钟同步 # configure timezone & ntp RUN echo ${TIME_ZONE} > /etc/timezone \ && ...
- [CF 276C]Little Girl and Maximum Sum[差分数列]
题意: 给出n项的数列A[ ], q个询问, 询问 [ l, r ] 之间项的和. 求A的全排列中该和的最大值. 思路: 记录所有询问, 利用差分数列qd[ ], 标记第 i 项被询问的次数( 每次区 ...
- 转:关于android webview实践的文章集合
http://blog.csdn.net/jiangqq781931404/article/category/2681765
- sdut 3-7 类的友元函数的应用
3-7 类的友元函数的应用 Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 通过本题目的练习能够掌握类的友元函数的定义和使用方法 要求设计一个点类Poin ...
- Android编程心得-使用ActionBar+Fragment+ViewPager实现动态切换Menu效果
1.首先上效果图 2.本例实现的效果主要适用于当前页面有多个页签时.进行Fragment切换时,能够利用不同的Menu样式与当前Fragment中的内容进行配合,能够大大添加复用性,看到效果图后,以下 ...
- SOA初探
背景 曾今SOA的概念犹如今日“云计算.大数据”一样,被炒得火热,不少企业便纷纷响应,并宣称会拥抱和实施SOA.而事实上,业界出现了两种极端:一种是由于各类文章和书籍关于SOA的描述往往太过抽象,再加 ...