Spring+SpringMVC常见注解及作⽤和配置⽂件的⼀些常见配置Spring常⽤注解以及作⽤:
1.@Component在类定义之前添加@Component注解,它会被SpringIoC容器识别,并转为bean。
2.@Repository对Dao实现类进⾏注解(特殊的@Component)。
3.@Service⽤于对业务逻辑层进⾏注解(特殊的@Component)。
4.@Controller⽤于控制层注解(特殊的@Component)。
5.@RequestMapping:⽤于处理请求地址映射,可以作⽤于类和⽅法上。
其属性有:value:定义request请求的映射地址
method:定义request地址的请求⽅式(GET/POST/HEAD/PUT/DELETE/OPTIONS/PATCH)
param:定义request请求中必须包含的参数值,⼀般作⽤于表单。
headers:定义request请求中必须包含某些指定的请求头,如text/html、text/plain等
consumes:定义请求提交内容的类型
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
6.@RequestParam:⽤于获取前台参数,⼀般作⽤于表单。
其属性有:value:参数的名称
required:定义传⼊的该参数是否为必须,默认为true
7.@RequestBody:⽤于获取前台参数,⼀般作⽤于ajax、json。
8.@PathVariable:⽤于接收浏览器地址中QueryString的参数。
其属性有:value:参数的名称
required:轻易传⼊参数是否为必须
9.@ResponseBody:作⽤于⽅法上,将整个返回结果以某种格式返回,如json或xml。
10.@CookieValue:⽤于获取请求的Cookie值。
11.@ModelAttribute:⽤于把参数保存到model中,可以注解⽅法或参数,注解在⽅法上的时候,该⽅法将在
处理器⽅法执⾏之前执⾏,然后把返回的对象存放在session(前提是要有@SessionAttributes注解)或模型属性,
注解在标注⽅法的时候指定,如果没有指定,则使⽤返回类型的类名称作为属性名称。
12.@SessionAttributes:⽤于使得模型中的数据存储⼀份到session域中,配合@ModelAttribute使⽤的时候,
会将对应的名称的model值存到session中。
13.@Autowired:⾃动注⼊,如果按照byName来装配,可以结合@Qualifier注解⼀起使⽤。
14.@Resource:此注解和⾃动注⼊注解都是做bean的注⼊时使⽤。
15.@RestController:使得当前的Controller层返回的全部都是Json类型的数据。
16.@Transactional:将类中的⽅法变为事务。
其属性有:readOnly=false,意思为不为只读,可以进⾏增删改查
propagation=Propagation.REQUIRED,传播⾏为
17.@bean:等同于在spring配置⽂件中配置的。
18.@Configuration:⽤于定义配置类,可替换xml配置⽂件。
关于Spring配置⽂件的⼀些常见应⽤:
1.⾃动装配:
声明默认⾃动装配的⽅式。
2.扫描器:
扫描器通过包名进⾏扫描,进⾏匹配,然后放⼊IOC容器中。
3.声明事务:
增加事务的命名空间,增加对事务的⽀持。
transaction为属性(事务管理器)
4.配置事务管理器:
id值需要和事务的命名空间的transaction-manager的属性值⼀致。
5.配置数据源:
事务管理器依赖于数据源,需要写在事务管理器的配置⾥。
6.数据源的具体配置:
需要写在事务管理器的外⾯。
7. l处理中⽂乱码问题:
8.监听Tomcat,通过让SpringIoCIoC容器初始化⼀次(只new⼀个对象):
9.SpringMVC⽅式处理请求的⼊⼝:
10.配置视图解析器:
11.@RequestMapping注解的value属性的ant风格的请求路径:
abc/*/c 意思是:abc⾥的任意中的c。
通配符:代表着在的前后中间,可以有多个⼦⽬录
代表通配符:任意,不限
代表任意⼀个单字符
代表任意字符(0或多个)
** 代表任意个⽬录
12.SpringMVC的REST风格(软件编程风格):
四个常见请求⽅式:
GET 获取 --》查询
POST 增 --》增加
DELETE 删 --》删除
PUT 改 --》更新
⼀般普通浏览器只⽀持get和post,不⽀持delete和put。
若想要浏览器⽀持delte和put⽅式,可以使⽤filte过滤器,使⽤过滤器进⾏拦截并进⾏处理。实现过程:
约定1:过滤器对请求进⾏拦截,
拦截隐藏域hidden,隐藏域的name字段的值必须是_method,
如果满⾜这两个条件,就对请求进⾏拦截,
拦截什么?看value值,如果value的值为delete,
过滤器就将请求⽅式变为delete,
那么,如果value的值为put,
过滤器就将请求⽅式变为put。
约定2:请求⽅式之前是post,然后加隐藏域和指定的value值。
delete:
put:
注意:mvc所有请求为 /,过滤器的所有请求为 /*。
13.向页⾯中带数据的四种⽅式(放⼊request域):
1.ModelAndView
2.Model
3.ModelMap
4.Map
例(ModelAndView⽅式):
@Controller
@RequestMapping(“SpringMVC”)
public class SpringMvcControl{
public ModelAndView testModelAndView(){
ModelAndView modelAndView = new ModelAndView(“success”); //加view
//告诉程序success就是view中的页⾯,也需要在视图解析器中配置前缀和后缀
Student student = new Student();
student.setId(2);
student.setName(“zs”); //addObject⽅法将数据放⼊request作⽤域中
modelAndView.addObject(“student1”,student); = request.setAttribute(“student”,student); //加model return modelAndView;
}
}
例(Model⽅式):
@Controller
@RequestMapping(“SpringMVC”)
public class SpringMvcControl{
@RequestMapping(value=“testModel”)
public String testModel(Model model){
Student student = new Student();
student.setId(2);
student.setName(“zs”);
model.addAttribute(“student4”,student);
return “success”;
}
}
例(ModelMap⽅式):
@RequestMapping(“SpringMVC”)
public class SpringMvcControl{
@RequestMapping(value=“testModelMap”)
public String testModelMap(ModelMap modelMap){
Student student = new Student();
student.setId(2);
student.setName(“zs”);
modelMap.put(“student2”,student);
return “success”;
}
}
例(Map⽅式):
@Controller
@RequestMapping(“SpringMVC”)
public class SpringMvcControl{
@RequestMapping(value=“testMap”)
public String testMap(Map<String,Object> map){
Student student = new Student();
student.setId(2);
student.setName(“zs”);
map.put(“student3”,student);
return “success”;
}
}
14.向页⾯中带数据的⽅式(放⼊session域):
例(@SessionAttributes⽅式):
写@SessionAttributes(“student1”,可以放⼊多个) //数据本⾝放⼊了request⾥,这样写的话,就代表
数据也放⼊了session⾥或@SessionAttributes("types=Student.class) //将Student类型的数据全放⼊session中,是⼀个数组类型,可以这样写types= {Student.class;Address.class}
@Controller
springmvc常用标签@RequestMapping(“SpringMVC”)
public class SpringMvcControl{
@RequestMapping(value=“testModel”)
public String testModel(Model model){
Student student = new Student();
student.setId(2);
student.setName(“zs”);
model.addAttribute(“student1”,student);
return “success”;
}
}
例(@ModelAttribute⽅式–经常在更新时使⽤):
发出更新请求,做⼀个更新修改,将zs改为ls。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论