SpringMVC配置及使用
SpringMVC基本配置
SpringMVC是基本请求响应模式的框架。
在项目中集成SpringMVC框架首先需要导入相关的jar包,所需包具体如下:
commons-dbcp.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-logging-1.1.1.jar
jackson-annotations-2.2.3.jar
jackson-core-2.2.3.jar
jackson-databind-2.2.3.jar
spring-aop-4.1.6.RELEASE.jar
spring-beans-4.1.6.RELEASE.jar
spring-context-4.1.6.RELEASE.jar
spring-context-support-4.2.3.RELEASE.jar
spring-core-4.1.6.RELEASE.jar
spring-expression-4.1.6.RELEASE.jar
spring-jdbc-4.2.3.RELEASE.jar
spring-tx-4.1.6.RELEASE.jar
spring-web-4.1.6.RELEASE.jar
spring-webmvc-4.1.6.RELEASE.jar
在导入相关jar包之后需要配置web.xml文件与SpringMVC相关联,完整web.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>springMVC</display-name>
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
在web.xml中关于springMVC的两个标签是<servlet></servlet>和<servlet-mapping></servlet-mapping>
这两个标签的第一个子标签<servlet-name>要互相对应保持一致
<servlet>标签的子标签<servlet-class>指定路由的处理类
<servlet-mapping>标签的子标签<url-pattern>指定被拦截的路由模式,上面的配置表示系统中所有以.do结尾的请求都交给org.springframework.web.servlet.DispatcherServlet来进行处理
<servlet>标签的子标签<init-param>表示参数的配置,<init-param>的子标签<param-name>设置为contextConfigLocation,<param-value>标签表示contextConfigLocation的值,其值classpath:mvc.xml表示路径是在src目录下的mvc.xml,mvc.xml表示具体的关于springMVC应用的配置,如果不进行<init-param>的配置则springMVC的具体的配置文件要指定为[name]-servlet.xml,[name]表示<servlet-name>的值
<load-on-value>表示项目启动则配置生效
在web.xml配置完成之后需要对springMVC.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
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">
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/pages/"/>
</bean>
<context:component-scan base-package="com.wx.controller"/>
</beans>
beans里面的第一个bean表示开启注解扫描
beans里面的第二个bean表示注解映射器
beans里面的第三个bean表示注解适配器,主要实现了返回一个json数据的功能。第二和第三的要有绑定关系,要么全写,要么全不写
beans里面的第四个bean表示视图解析器,里面的<property name=prefix value="/WEB-INF/pages"/>表示对返回的视图添加前缀,与之对应的就是添加后缀,使用方式为<property name="sufix" value=".jsp">,例如controller类中一个方法return "demo",则最终的结果为/WEB-INF/pages/demo.jsp
最后一行表示配置文件对com.wx.controller下的所有java文件起作用(扫描里面的注解)
至此完成了一个最简单的springMVC的配置。
代码实现
在springMVC的配置文件中我们指明了监控com.wx.controller包内的所有文件的注解,我们在该包内新建一个DemoController.java文件,最终其内容如下:
package com.wx.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class DemoController {
@RequestMapping("/demo/html.do")
public String toHtml(){
return "html.html";
}
@RequestMapping("/demo/jsp.do")
public String toJSP(){
return "jsp.jsp";
}
}
在WEB-INF下的pages文件中新建html.html和jsp.jsp文件
运行项目在地址输入/demo/html.do可以跳转到html.html页面,输入/demo/jsp.do可以跳转到jsp.jsp页面
SpringMVC处理json数据格式的数据
我们在客户端已发出如下的请求:
$(function(){
var data = {
name:"zt",
age:23
}
$.ajax({
url:"http://zt:8088/springmvc-demo/demo/send.do",
type:"post",
data:JSON.stringify(data),
contentType:"application/json; charset=utf-8"
}).done(function(data){
console.log(data);
}).fail(function(){
console.error("server error");
})
在服务端的controller类中添加对应的处理方法:
@RequestMapping("/demo/send.do")
@ResponseBody
public List<Person> send(@RequestBody User user){
System.out.println("client send age:"+user.getAge());
System.out.println("client send name:"+user.getName());
List<Person> list = new ArrayList<Person>();
Person p1 = new Person("张三",23);
Person p2 = new Person("李四",22);
list.add(p1);
list.add(p2);
return list;
}
@ResponseBody表示返回的是数据不再是页面不再需要视图解析器的处理
User是一个实体类用来接收从客户端发送过来的数据,前面要用@RequestBody来进行修饰
此时客户端也可以正确的接收到服务端返回的JSON数据:[{"name":"张三","age":23},{"name":"李四","age":22}]
SpringMVC配置及使用的更多相关文章
- SpringMVC配置实例
一.SpringMVC概述 MVCII模式实现的框架技术 Model--业务模型(Biz,Dao...) View--jsp及相关的jquery框架技术(easyui) Contraller--Dis ...
- SpringMVC配置与使用
一.MVC概要 MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范,用一种将业务逻辑.数据.显示分离的方法组织代码,MVC主要作用是降低了视图与业务 ...
- 3.2.2 SpringMVC配置式开发
SpringMVC配置式开发 1. SpringMVC运行原理(执行过程) 2. 需求 用户提交一个请求, 服务端处理器接收到请求后, 给出一条信息,在相应页面中显示该条信息 3. 开发步骤 (1) ...
- springmvc配置之mvc:annotation-driven
为了简化springmvc配置,spring同时引入了mvc namespace, 配置了 <mvc:annotation-driven/> spring会默认注册a RequestMap ...
- SpringMVC配置多视图-内容协商原理
SpringMVC配置多视图-内容协商原理 2014年03月06日 16:46:59 日积月累_滴水石穿 阅读数:10964更多 个人分类: SpringMVC Spring Framework ...
- Spring-MVC配置Gson做为Message Converter解析Json
Spring-MVC配置Gson做为Message Converter解析Json 在学习Spring的时候看到可以使用@RequestBody 和@ResponseBody注解来是的Spring自动 ...
- Spring实战第七章————SpringMVC配置的替代方案
SpringMVC配置的替代方案 自定义DispatherServlet配置 我们之前在SpittrWebAppInitializer所编写的三个方法仅仅是必须要重载的abstract方法.但还有更多 ...
- springMVC 配置jdbcTemplate连接Oracle数据库出错
springMVC 配置jdbcTemplate连接Oracle数据库出错 错误信息: log4j:WARN No appenders could be found for logger (org.s ...
- Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置
用过 Spring Boot 的小伙伴都知道,我们只需要在项目中引入 spring-boot-starter-web 依赖,SpringMVC 的一整套东西就会自动给我们配置好,但是,真实的项目环境比 ...
- javaConfig下的springmvc配置
javaConfig下的springmvc配置 一.静态资源过滤 XML的配置 <mvc:resources mapping="/**" location="/&q ...
随机推荐
- Transcranial magnetic stimulation (TMS)
Transcranial magnetic stimulation (TMS) Effect of Transcranial Magnetic Stimulation on Free Will Tra ...
- WinForm下窗体权限设计
权限设计 笔者不才看了园子里面很多园友写关于权限设计这块内容,那么笔者也在添一笔.这个是笔者在上完软件工程课程后,上交的一篇笔者论文,这里分享给大家交流,当然笔者经验尚浅,若内容有误,请大家指点出 ...
- getopt实现传参自动识别
test.py #!/usr/bin/env python # -*- coding: utf-8 -*- import getopt import sys #-h-f-v为了下面的识别 opts,a ...
- 关于final static修饰的常量部署后没有更新的问题
出现问题的场景是这样的: 项目中有个专门放流程Key值常量的类FlowConstants.java,其中这些常量都用了final static 修饰.某天因为修改了流程,相应的key值也改变了,所以直 ...
- java中堆与栈的区别
堆与栈都是java中常用的存储结构,是内存中存放数据的地方. 堆:主要存放运行时创建(new)的对象.主要用于储存对象,存取速度慢,可以运行时动态分配内存,生命周期不需要提前确定. 栈:主要存放基础类 ...
- 2017-5-19&5-23/系统性能指标
1. 系统性能指标包括哪些? 业务指标.资源指标.中间件指标.数据库指标.前端指标.稳定性指标.批量处理指标.可扩展性指标.可靠性指标. 1)业务指标:主要包括并发用户数.响应时间.处理能力. 指标 ...
- Sona
Sona Sona , Maven of the Strings . Of cause, she can play the zither. Sona can't speak but she can m ...
- js中用来操作字符串的相关的方法
var str = "zhufengpeixun2015yangfanqihang"; 字符串也是存在索引和length的 str.length 获取字符串的长度(字符的个数) 第 ...
- API验证插件
前言 如果在访问某WebAPI过程中request信息被他人截获,若是get请求获取数据还好,如果是post提交数据,势必威胁数据安全,所以对于一个对安全性要求较高的API来说,对每个请求做身份验证显 ...
- JTA 使用 MySQL 分布式事务
假定在MySQL实例1上有表 create table person( id int, name ) ) MySQL实例2上也有一张同样的表,现在从实例1中的 person 表中删除一条数据,并把这条 ...