spring mvc简单使用
spring mvc
pom.xml依赖与插件
导入servlet、springmvc、Jackson的依赖,编译插件、tomcat
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>springmvc</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>springmvc Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<!--必要的servlet依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--springmvc的核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!--jackson依赖,用来方便数据转java格式 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
</dependencies>
<build>
<finalName>springmvc</finalName>
<pluginManagement>
<plugins>
<!--jdk的编译插件,用1.8的版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!--tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
springmvc相关文件配置
先在web.xml上注册中央调度器,这是最关键的
<!--配置DispqtcherServlet -->
<servlet>
<!--自定义名称,就当个id吧, -->
<servlet-name>springmvc</servlet-name>
<!--全限定类名,固定 -->
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!--大于零代表启动时创建servlet-->
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>contextConfigLocation</param-name>
<!--springmvc配置文件的路径 -->
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<!--配置地址映射,将请求映射到对应的Servlet -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name><!--上面的中央调度器的名称 -->
<url-pattern>*.do</url-pattern>
<!--一般情况不要写/*,这样的话,所有的请求将全部由Spring的DispatcherServlet来处理,显然是不合适的,jsp文件还是应该由Tomcat配置的JSP Servlet来处理 -->
<!--大概感觉有点像过滤器的作用,代表这个形式的访问地址才经过中央调度器 -->
</servlet-mapping>
接下来就在resources目录里写springmvc的配置文件
当然这里的配置文件的路径就是你在web.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: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.xsd">
<!-- 声明组件扫描器 -->
<context:component-scan base-package="top.changtong1819.controller"/>
<!--mvc的注解驱动 -->
<mvc:annotation-driven/>
<!--注册视图解析器,用来帮我们自动在文件路径上添加前后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
那么组件扫描器的作用是什么呢
组件扫描(component scanning):
Spring能够从指定的classpath下自动扫描,侦测和实例化具有特定注解的bean。
Spring提供了一下几个注解来标注需要被扫描到的bean:
@Component:标注一个普通的Spring Bean类
@Controller:标注一个控制器组件类
@Service:标注一个业务逻辑组件类
@Repository:标注一个Dao组件类
有了组件扫描器之后,相当于不需要再写bean标签去实例化某个类了,扫描到注解会自动实例化
Controller
@Controller//表示当前类是处理类
public class MyController {
@RequestMapping(value = "/some.do")//表示当前方法为处理器方法,value属性指定URl地址
public ModelAndView doSome(){
ModelAndView mv = new ModelAndView();
mv.addObject("name","changtong");
mv.addObject("age","21");
mv.setViewName("show");
return mv;
}
}
要返回自定义对象,需要在方法上使用@ResponseBody注解,这里要在springmvc的配置文件上先注册注解驱动,前面已经注册了
@Controller//表示当前类是处理类
public class MyController {
@RequestMapping(value = "/ajax.do")
@ResponseBody
public Student doAjax(HttpServletRequest req, HttpServletResponse resp,int age,String name) throws IOException {
Student stu = new Student();
stu.setAge(age);
stu.setName(name);
/* ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(stu);
resp.getWriter().write(json);*/ //不需要再写这些了
return stu;//直接返回对象就是json格式
}
}
解决乱码问题
使用过滤器,在web.xml里注册
<!--注册过滤器,解决请求乱码的问题 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 声明字符集 -->
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<!-- 强制request请求使用encoding格式-->
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<!-- 强制response请求使用encoding格式-->
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!--过滤器所过滤的地址 -->
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
spring mvc简单使用的更多相关文章
- Spring mvc系列一之 Spring mvc简单配置
Spring mvc系列一之 Spring mvc简单配置-引用 Spring MVC做为SpringFrameWork的后续产品,Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块 ...
- Spring mvc 简单异常配置jsp页面
原文出处:http://howtodoinjava.com/spring/spring-mvc/spring-mvc-simplemappingexceptionresolver-example/ 这 ...
- Spring MVC简单原理
Spring MVC原理 针对有Java Web基础.Spring基础和Spring MVC使用经验者. 前言 目前基于Java的web后端,Spring生态应该是比较常见了.虽然现在流行前后端分离, ...
- spring mvc简单介绍xml版
spring mvc介绍:其实spring mvc就是基于servlet实现的,只不过他讲请求处理的流程分配的更细致而已. spring mvc核心理念的4个组件: 1.DispatcherServl ...
- 基于XML配置的Spring MVC 简单的HelloWorld实例应用
1.1 问题 使用Spring Web MVC构建helloworld Web应用案例. 1.2 方案 解决本案例的方案如下: 1. 创建Web工程,导入Spring Web MVC相关开发包. Sp ...
- Spring MVC 简单介绍
Spring MVC 是典型的mvc架构,适合web开发. controler 输入输出的控制器,也是对外view提供数据的接口,调用service层. model 数据,由bean组成(相应表),关 ...
- spring mvc 简单搭建
文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下. web.xml配置: </load-on-startup> </servlet> ...
- Maven+Eclipse+Spring MVC简单实例
1. ToolsVersion and Preparations: Eclipse: 3.5 (eclipse-jee-galileo-win32) Maven: 2.0.11 Spring MVC ...
- spring mvc 简单的文件上传与下载
上传文件有很多种方法,这里主要讲解的是spring mvc内提供的文件上传 前提使用:spring mvc 在这个之前我们需要把环境给配置好 1:springmvc的XML配置文件加上这一段就即可, ...
- 基于注解的 Spring MVC 简单入门
web.xml 配置: <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class> ...
随机推荐
- 七种join的书写规范
在mysql中的两表进行连接时,总共有7种连接情况,具体可见下图 由图的从左到右的顺序 图1.左连接(left join):返回左表中的所有记录和右表中的连接字符字段相等的记录,若右表没有匹配值则补N ...
- 【图像处理】OpenCV+Python图像处理入门教程(五)阈值处理
这篇随笔介绍使用OpenCV进行图像处理的第五章 阈值处理. 5 阈值处理 阈值是指像素到达某临界值.阈值处理表示像素到达某临界值后,对该像素点进行操作和处理. 例如:设定一幅图像素阈值为200,则 ...
- 「HTML+CSS」--自定义按钮样式【002】
前言 Hello!小伙伴! 首先非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 哈哈 自我介绍一下 昵称:海轰 标签:程序猿一只|C++选手|学生 简介:因C语言结识编程,随后转入计算机 ...
- java例题_35 找到最大值和最小值并交换位置
1 /*35 [程序 35 最大最小交换] 2 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组. 3 */ 4 5 /*分析 6 * 1.先初始化一个数组,然后从键盘获得值 ...
- 附032.Kubernetes实现蓝绿发布
蓝绿发布原理 蓝绿发布本质上是希望能优雅无误的迭代应用,以便于使应用平稳提供服务.通常是不停老版本的同时对新版本进行先发布,然后确认无误后进行流量切换,即并行部署. Kubernetes中可以通过de ...
- [矩阵乘法]裴波拉契数列III
[ 矩 阵 乘 法 ] 裴 波 拉 契 数 列 I I I [矩阵乘法]裴波拉契数列III [矩阵乘法]裴波拉契数列III Description 求数列f[n]=f[n-1]+f[n-2]+1的第N ...
- Dapper, Ef core, Freesql 插入大量数据性能比较(二)
在上一篇文章中,我们比较出单表插入9999行数据,Dapper > EfCore > Freesql.在本文中,我们来看看级联插入 构建9999行数据 List<Entity> ...
- Python 高级特性(4)- 生成器
列表生成式 通过上一篇介绍 列表生成式文章可以知道,它可以快速创建我们需要的列表 局限性 受内存限制,列表生成式创建的列表的容量肯定有限的 不仅占用很大的存储空间,如果我们仅仅需要访问前几个元素,那后 ...
- (十九)VMware Harbor 详细介绍
一 . 简介 Harbor是VMware公司开源的企业级DockerRegistry项目,项目地址为https://github.com/vmware/harbor.其目标是帮助用户迅速搭建一个企业级 ...
- NNLM原理及Pytorch实现
NNLM NNLM:Neural Network Language Model,神经网络语言模型.源自Bengio等人于2001年发表在NIPS上的<A Neural Probabilistic ...