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 ...
随机推荐
- 20165327 2017-2018-2 《Java程序设计》第一周学习总结
第1章 Java入门 一.Java 的特点 简单 面向对象 平台无关 多线程:允许同时完成多个任务 动态:Java程序的基本组成单元就是类(有些类是自己编写的,有一些是从类库中引入的,而类又是运行时动 ...
- 【异常及源码分析】org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping
一.异常出现的场景 1)异常出现的SQL @Select("SELECT\n" + " id,discount_type ,min_charge, ${cardFee} ...
- inflate()引发NullPointerException
有时候我们在infalete的时候明明什么都对为什么它会提示出错 原意是你的资源layout出错了 注意看有没有把View写成view 这个View应该大写!V而不是小写v 踩坑踩了两次了!上次以为是 ...
- Count Up Down(上下计数)
这个题目是 Kayak 发布的代码挑战题目. 最简单的描述就是不使用循环,输出 0 到 5,然后同样不是会用循环的方式再次输出 5 到 0. 英文描述 Part 1 Write a program t ...
- Confluence 6 自定义空间布局
你可以通过编辑布局文件来对 Confluence 的外观和表现进行编辑.这个页面将会告诉你如何来为空间自定义布局文件.你需要系统管理员的 全局权限(global permission) 和你希望进行修 ...
- 微擎查询SQL语句常用
pdo_fetch:根据SQL语句,查询一条记录 array | boolean pdo_fetch($sql, $params = array()); // :uid 是参数的一个点位符,没有使用引 ...
- P3784 [SDOI2017]遗忘的集合
非常神仙的一道题! 题意:给出某n个数字跑完全背包m容量的dp数组,求满足要求的字典序最小的n个元素,不知道n是多少. 首先考虑付公主的背包这个题. 对dp数组求一个ln,设它为F. 已知 e^(G1 ...
- 数组的typedef 和函数的typedef
#include<stdio.h> #include<string.h> #include<stdlib.h> // 数组指针 语法 梳理 // //int a[1 ...
- python-项目流程分析及优化查询方法
项目流程分析: ****** 1. 需求分析 2. 知识点 - 插件 3. 功能分析: - 用户登录 - session - 签名cookie PS: 主动设置超时时间:request.session ...
- div中文字上下居中
<div class="title">Title</div> 1. 将div高度设成定值 2. 将line-height设成定值 3. 将text-alig ...