SpringMVC 注解配置
使用注解配置spring mvc
(1)spring mvc的配置文件
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!--配置包扫描-->
<context:component-scan base-package="com.chy.controller" /> <!-- 配置注解的HandlerMapping-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /> <!--配置注解的HandlerAdapter-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> <!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/" />
<!--后缀-->
<property name="suffix" value=".jsp" />
</bean> </beans>
上面我们手动配置了HandlerMapping、HandlerAdpater,很麻烦。可以使用注解驱动:
<mvc:annotation-driven />
会自动注册HandlerMapping、HandlerAdapter,无需我们手动配置。
(2)controller
//在controller上标注@Controller
@org.springframework.stereotype.Controller
public class UserController{ //在业务方法上标注@RequestMapping
@RequestMapping("/userController")
public ModelAndView handle(){
ModelAndView mav = new ModelAndView("user_info");
User user = new User();
user.setUsername("chy");
user.setPassword("abcd");
mav.addObject("user", user);
return mav;
} }
- controller不必实现接口,只需要在controller上标注@Controller,无需在xml中配置controller的<bean>
(使用xml配置需要在xml中配置此controller的<bean>,麻烦且xml文件冗杂)
- controller中可以有多个业务方法
(使用xml配置时controller中只能有1个业务方法,这很不方便,比如UserController,要有saveUser、updateUser、queryUser等多个方法)
- 业务方法的参数类型、返回值类型可以是任意的
(使用xml配置时参数类型、返回值都是固定的,ajax查询数据、访问静态页面,都需要返回ModelAndView,没有必要)
一般都是使用注来配置。
@RequestMapping 配置业务方法
(1)value指定此业务方法对应(映射)的url
@RequestMapping(value = "/userController")
//只有value一个属性时可简写
@RequestMapping("/userController") //可以不要开头的斜杠
@RequestMapping(value = "userController")
@RequestMapping("userController")
以上4种写法等价,红色标示的写法最常用。
访问路径都是:
http://localhost:8080/springmvc_war_exploded/userController //也可以在末尾加上.do
http://localhost:8080/springmvc_war_exploded/userController.do
(3)method 指定请求方式
@RequestMapping(value = "/userController",method = RequestMethod.GET)
@RequestMapping(value = "/userController",method = RequestMethod.POST)
只有请求地址符合,且请求方式是GET|POST时,才使用此方法处理业务。
以上2个注解分别等价于:
@GetMapping(value = "/userController")
@PostMapping(value = "/userController")
(4)url映射的拼接
有时候controller中有多个业务方法:
@org.springframework.stereotype.Controllerpublic class UserController{
@RequestMapping("/userController/saveUser")
public void saveUser(){
//......
}
@RequestMapping("/userController/deleteUser")
public void deleteUser(){
//......
}
@RequestMapping("/userController/updateUser")
public void updateUser(User user){
//......
}
@RequestMapping("/userController/queryUser")
public User queryUser(){
//......
}
}
每次url都要写一长串,麻烦。
可以把共同的父路径提出来,写在controller上,业务方法上写子路径即可:
@org.springframework.stereotype.Controller
@RequestMapping("/userController")
public class UserController{ @RequestMapping("/saveUser")
public void saveUser(){
//......
} @RequestMapping("/deleteUser")
public void deleteUser(){
//......
} @RequestMapping("/updateUser")
public void updateUser(User user){
//......
} @RequestMapping("/queryUser")
public User queryUser(){
//......
} }
访问方式和原来一样。
我在业务方法中使用了new,实际上,使用spring时,尽量不要使用new,能用依赖注入就用依赖注入。
如果是通用的bean,比如工具类,实例都一样,设计为单例,放到spring容器中,使用时写成成员变量的形式,用注解自动装配。
如果是实例不一样,比如User类,每个用户的信息是不同的,设计为多例,放到spring容器中,使用时写成成员变量的形式,用注解自动装配,可以在方法中调用bean的setter方法赋值。
SpringMVC 注解配置的更多相关文章
- spring-mvc注解配置小记
Controller中注解Service时,Service的实现类需加@Service,dao的实现类需加@Repository. 另:配置文件中对应的包也需要扫描到!!! <context:a ...
- SpringInAction--Spring Web应用之SpringMvc 注解配置
Spring MVC 是当前Web服务器中常用的结构,今天就来学习这相关的知识,首先上图——Spring请求的时候所经历的坎坷之路: (书上原话,算是解释..) 在请求离开浏览器时① ,会带有用户所请 ...
- SpringMVC注解配置处理器映射器和处理器适配器
一.springmvc.xml中配置方式 <!--注解映射器 --> <bean class="org.springframework.web.servlet.mvc.me ...
- springmvc注解配置
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.s ...
- springMVC注解方式+easyUI+MYSQL配置实例
刚接触springMVC,使用的注解方式,也在学习阶段,所以把自己学习到的记下来.本文利用springMVC从数据库读取用户信息为例,分享一下. 1.准备相关架包及资源.因为使用springMVC+e ...
- SpringMVC基础配置(通过注解配置,非xml配置)
SpringMVC是什么,有多火,我这里就不再啰嗦了,SpringMVC比Struts2好用太多,我在学校的时候私下里两种都接触过,对比之后果断选择了SpringMVC,后来在做Android应用开发 ...
- 学习笔记_J2EE_SpringMVC_02_注解配置
SpringMVC注解配置 1.测试环境: 名称 版本 备注 操作系统 Windows10 专业版1809X64 WEB服务器 Tomcat 8.5 X64 浏览器 Google Chrome ...
- 《SpringMVC从入门到放肆》八、SpringMVC注解式开发(基本配置)
上一篇我们结束了配置式开发,配置式开发目前在企业中用的并不是很多,大部分企业都在使用注解式开发,所以今天我们就来学习注解式开发.所谓SpringMVC注解式开发是指,处理器是基于注解的类的开发方式.对 ...
- 关于什么是SpringMVC,和SpringMVC基于xml配置、注解配置、纯注解配置
首先我们先要了解一下,什么是SpringMVC? SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC子框架,也就是说SpringMVC的相关包都 ...
随机推荐
- Java_Habse_shell
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.had ...
- go get下载包失败问题
文章引用自 解决go get下载包失败问题 从github克隆 golang在github上建立了一个镜像库,如https://github.com/golang/net就对应是 https://go ...
- MTSQL主主同步方案
** MySQL主主+Keepalived **MySQL+DRBD+Heartbeat 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主主方案,一主多从,读写分离等,但是 ...
- IDEA中使用Springboot+SSM的踩坑记(一)
今天由于电脑无限蓝屏,不知怎么把我IDEA里面破解过的一些东西给搞没了,包括IDEA本体和JRebel,照着原来的方法破解连本体都开不起来了(哭死),索性下了个最新版来用,结果JRebel还是破解不得 ...
- 深入细枝末节,Python的字体反爬虫到底怎么一回事
内容选自 即将出版 的<Python3 反爬虫原理与绕过实战>,本次公开书稿范围为第 6 章——文本混淆反爬虫.本篇为第 6 章中的第 4 小节,其余小节将 逐步放送 . 字体反爬虫开篇概 ...
- 4_5 追踪电子表格中的单元格(UVa512)(选做)
在电子表格中的数据都存储在单元格中,它是按行和列(R)(C).一些在电子表格上的操作可以应用于单个单元格(研发),而其他的可以应用于整个行或列.典型的单元操作包括插入和删除行或列和交换单元格内容.一些 ...
- Bugku-CTF加密篇之ok(Ook!)
- leetcode 0214
目录 ✅ 965. 单值二叉树 描述 解答 c++ updated dfs c++ py py 生成器 ✅ 762. 二进制表示中质数个计算置位 描述 解答 cpp other cpp mine ja ...
- 学习笔记——springMVC架构
springMVC是一个MVC模式的实现,至于具体什么是MVC大佬们写了多很详细的博文给出一些链接: 链接1. SpringMVC框架“简单”执行流程 1.首先用户(或浏览器)发送请求到服务端. 2. ...
- vue.js_①
前言: Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手, ...