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> ...
随机推荐
- 痞子衡嵌入式:盘点国内MCU级RISC-V内核IP厂商
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内MCU级RISC-V内核IP厂商. 自RISC-V指令集2010年诞生以来,业界普遍认为,RISC-V将会改变现有的由Arm和Int ...
- IDA报错fatal error before kernel init
编写了一个IDA64插件,结果再打开IDA后报错fatal error before kernel init,然后闪退. 检查了一遍代码没发现有问题,后来发现是环境有一处配置错误, IDA64.exe ...
- sqli-labs系列——第四关
less4 第四关的sql语句是这样的: select * from user where id=("$id"); ?id=1")–+回显正常 order by 4报错, ...
- 手把手教你如何使用Charles抓包
一.为什么使用charles 前几天因为需要通过抓包定位问题,打开了尘封已久的fiddler,结果打开软件后什么也干不了,别说手机抓包了,打开软件什么请求也抓不到. 很多时候都是如此,如果一个方案不行 ...
- PAT (Advanced Level) Practice 1005 Spell It Right (20 分) 凌宸1642
PAT (Advanced Level) Practice 1005 Spell It Right (20 分) 凌宸1642 题目描述: Given a non-negative integer N ...
- Python代码简化
让代码更Pythonic 当然不要过分追求简洁,不然阅读的人就遭殃了, 部分逻辑复杂的情况还应按照清晰的逻辑脉络去写方便阅读, 毕竟我们是用代码实现功能然后维护,而不是单单的炫技. ######### ...
- 启用reuse_port参数让Nginx性能提升3倍
为什么启用 reuse_port 记得 2008 年做性能测试的时候,新进7台 lenovo 4核4G 服务器用于性能测试. 当时资源紧张,这7台服务器都装了双系统(Win2003/CentOS5)空 ...
- RabbitMQ 入门 (Go) - 7. 数据持久化(下)【完】
数据库 我使用的是 PostgreSQL. 使用的驱动是 github.com/lib/pq 这个网址 https://pkg.go.dev/github.com/lib/pq 是官方文档. 创建数据 ...
- 死磕Spring之AOP篇 - Spring AOP常见面试题
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...
- 《RT-Thread Studio开发STM32》第一章~第一节《配置STM32H743XIH6点亮LED灯》
安装RT-Thread Studio后添加相关芯片库文件,打开软件 打开SDK管理界面,安装相关的库文件,本次采用STM32H743XIH6芯片,野火开发板. 新建工程并设置相关的参数 先编译下下载到 ...