SpringMVC_3.x_入门指南_1

SpringMVC 3.x

注解的(annotation)全新的MVC框架;

 

M -model
模型,包括DAO,Service等部分
V -view
视图,JSP等部分
C -controller
控制器

 

Spring的web框架围绕DispatcherServlet设计。
DispatcherServlet的作用是将请求分发到不同的处理器。
相当于Struts中的中央控制器,Struts中的控制器是过滤器,而SpringMVC是一个Servlet;



SpringMVC的简单请求流程:

前台控制器(Front Controller)接收到请求(Incoming Request)让下面的具体的控制器(Controller)去完成相应操作,给出响应(model)给前台控制器,前台控制器把model交给视图模板(View Template),应用模板后给用户做出显示!

 



SpringMVC的请求方式:

1,普通的请求
浏览器发出普通请求,经过SpringMVC的Dispatcher跳转到相应的Controller,Controller调用Service去请求持久层,结合Model Bean(pojo等)产生视图,给用户做出响应;
2,Ajax请求
用户发出Ajax请求,到达Dispatcher,跳转Controller,调用Service结合Model Bean产生请求的资源信息,以XML或者JSON的形式给浏览器做出响应;

 

使用Maven搭建SpringMVC开发环境
1,在pom.xml添加基本的jar和配置web服务器环境jetty

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>3.2.4.RELEASE</version>
</dependency>
        
<!-- 提供对c标签的支持 -->
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
	<version>1.2</version>
</dependency>
<!-- servlet api -->
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
</dependency>
<!-- javax提供的annotation -->
<dependency>
	<groupId>javax.inject</groupId>
	<artifactId>javax.inject</artifactId>
	<version>1</version>
</dependency>

<build>
    <finalName>springmvc</finalName>
    <!-- maven的jetty服务器插件 -->
    <plugins>
    	<plugin>
		  <groupId>org.mortbay.jetty</groupId>
		  <artifactId>jetty-maven-plugin</artifactId>
		  <configuration>
		    <scanIntervalSeconds>10</scanIntervalSeconds>
		    <webApp>
		      <contextPath>/</contextPath>
		    </webApp>
		    <!-- 修改jetty的默认端口 -->
		    <connectors>
		       <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
		          <port>80</port>
		          <maxIdleTime>60000</maxIdleTime>
		       </connector>
		    </connectors>
		  </configuration>
		</plugin>
    </plugins>
</build>

2,在web.xml中配置基本的DispatcherServlet注意修改默认的web.xml中的xsd约束)

<?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>Archetype Created Web Application</display-name>
  
  
  <!-- 配置springmvc servlet -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<!-- / 表示所有的请求都要经过此serlvet -->
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

配置完成,启动服务器!jetty:run

启动不会报错,启动完成后,在浏览器中输入:localhost访问默认页面!

提示:500错误
原因:

写道
java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]

不能找到/WEB-INF/下的一个文件,文件叫作:springmvc-servlet.xml

意思是说:我们还需要一个配置文件

SpringMVC推荐加载此配置文件,在容器启动的时候!在web.xml中修改如下:

<!-- 配置springmvc servlet -->
<servlet>
	<servlet-name>springmvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>springmvc</servlet-name>
	<!-- / 表示所有的请求都要经过此serlvet -->
	<url-pattern>/</url-pattern>
</servlet-mapping>

再次启动服务器,将会报错!!!仍然是缺配置文件!

配置文件的名称:springmvc-servlet.xml中的springmvc跟你配置的servlet-name保持一致;

我们在WEB-INF下建立我们的:springmvc-servlet.xml
使用springmvc的schema约束,基本结构如下:

<?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:context="http://www.springframework.org/schema/context"	 
    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/context	 
        http://www.springframework.org/schema/context/spring-context.xsd	 
        http://www.springframework.org/schema/mvc	 
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">	 
	 
	 
</beans>

添加这些约束的配置文件会变成一个树叶,表示这是springmvc的配置文件!


spring的配置文件:applicationContext.xml跟这个配置不冲突,这个配置文件跟spring的配置文件其实就是多了一个mvc项的配置

那么我们这个配置文件里面到底配置哪些东西呢?

<mvc:annotation-driven/>

表示我要使用基于注解的springmvc

<context:component-scan base-package="com.cn.controller">
	<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

base-package表示自动扫描com.cn.controller包中的注解

include-filter表示只扫描expression="org.springframeword.stereotype.Controller"的注解,也就是只扫描类上有@Controller注解的类:

package com.cn.controller;

import org.springframework.stereotype.Controller;

@Controller
public class HomeController {

}

spring配置文件中也有自动扫描,你可以设置以下内容排除掉扫描Controller注解:

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>

如何请求我们的Controller中的方法呢?

通过如下注解进行实现:

@RequestMapping("/home")
public String home(){
	return null;
}

springmvc中的url推荐不加后缀!
并且,你还可以使用下面的地址完成特定的请求:
/user/1   查看ID=1的用户
/del/1     删除ID=1的用户
这种方式是如何实现的呢?
我们知道浏览器只能发出get,post请求,但是我们可以通过程序发送其他请求,我们常用的有:

get       获取
post     保存
delete  删除
put       可以用来修改

/user/1
对于上面的url,如果你发送的是get请求,服务器就给你做出get响应
如果你发送的delete请求,服务器就给出删除响应

那么在springmvc中是什么样子的呢?

@RequestMapping(value="/user/1",method=RequestMethod.GET)
public String getUser(){
	System.out.println("get...获取用户");
	return null;
}
@RequestMapping(value="/user/1",method=RequestMethod.DELETE)
public String delUser(){
	System.out.println("delete...删除用户");
	return null;
}

简单说了一下springmvc中的地址,下面我们来说如何请求我们的url;

配置home方法如下:

@RequestMapping("/home")
public String home(){
	System.out.println("home...");
	return "home";
}

启动容器,确定不再报错了,然后在浏览器中请求:localhost/home

又报错了。
错误信息:

写道
javax.servlet.ServletException: Circular view path [home]: would dispatch back to the current handler URL [/home] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

意思是:

检查你的视图解析器是否建立,你输入的url我无法解析;

什么是视图解析器呢?
仍然是在springmvc-servlet.xml中需要配置的一项;

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

视图解析器就是一个类:UrlBasedViewResolver,其中有三个属性:

viewClass,我们使用的是JstlView
prefix,前缀,就是我们请求的页面所在的地方
suffix,后缀,就是标识我们的视图是以什么后缀结尾,eg.home.jsp

这样定义完成之后,我们在/WEB-INF/下建立views文件夹,并新建一个home.jsp

再次启动容器,并请求:localhost/home就可以跳转到home.jsp页面了!

那么如何请求views/user/文件夹下的user.jsp呢?
很简单:

@RequestMapping(value="/user",method=RequestMethod.GET)
public String getUser(){
	System.out.println("get...获取用户");
	return "user/user";
}

 

至此我们可以使用SpringMVC做网站了!最基本的配置就这些!

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 智慧社区背景与挑战 随着城市化的快速发展,社区面临健康、安全、邻里关系和服务质量等多方面的挑战。华为技术有限公司提出智慧社区解决方案,旨在通过先进的数字化技术应对这些问题,提升城市社区的生活质量。 2. 技术推动智慧社区发展 技术进步,特别是数字化、无线化、移动化和物联化,为城市社区的智慧化提供了可能。这些技术的应用不仅提高了社区的运行效率,也增强了居民的便利性和安全性。 3. 智慧社区的核心价值 智慧社区承载了智慧城市的核心价值,通过全面信息化处理,实现对城市各个方面的数字网络化管理、服务与决策功能,从而提升社会服务效率,整合社会服务资源。 4. 多层次、全方位的智慧社区服务 智慧社区通过构建和谐、温情、平安和健康四大社区模块,满足社区居民的多层次需求。这些服务模块包括社区医疗、安全监控、情感沟通和健康监测等。 5. 智慧社区技术框架 智慧社区技术框架强调统一平台的建设,设立数据中心,构建基础网络,并通过分层建设,实现平台能力及应用的可持续成长和扩展。 6. 感知统一平台与服务方案 感知统一平台是智慧社区的关键组成部分,通过统一的RFID身份识别和信息管理,实现社区服务的智能化和便捷化。同时,提供社区内外监控、紧急救助服务和便民服务等。 7. 健康社区的构建 健康社区模块专注于为居民提供健康管理服务,通过整合医疗资源和居民接入,实现远程医疗、慢性病管理和紧急救助等功能,推动医疗模式从治疗向预防转变。 8. 平安社区的安全保障 平安社区通过闭路电视监控、防盗报警和紧急求助等技术,保障社区居民的人身和财产安全,实现社区环境的实时监控和智能分析。 9. 温情社区的情感沟通 温情社区着重于建立社区居民间的情感联系,通过组织社区活动、一键呼叫服务和互帮互助平台,增强邻里间的交流和互助。 10. 和谐社区的资源整合 和谐社区作为社会资源的整合协调者,通过统一接入和身份识别,实现社区信息和服务的便捷获取,提升居民生活质量,促进社区和谐。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值