@data注解的作用_SpringMVC 注解式开发

SpringMVC注解式开发

1.搭建环境

1.1 后端控制器无需实现接口,添加相应注解

1.2 springmvc配置文件无需注册controller

1.3 springmvc配置文件中添加组件扫描器、注解驱动

<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与 AnnotationMethodHandlerAdapter 两个bean,并提供了:数据绑定支持, @NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支 持(JAXB),读写JSON的支持(Jackson)等等。

 <!-- 注册组件扫描器 -->
    <context:component-scan base-package="com.bjsxt.handlers"></context:component-scan>
    <!-- 注册注解驱动 -->
    <mvc:annotation-driven/> 
    <!-- 注册视图解析器 -->
    <bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/jsp/" />
		<property name="suffix" value=".jsp" />
    </bean>
    <!-- 静态资源无法访问第二种解决方案 -->
    <!-- <mvc:default-servlet-handler/> -->
    <!-- 静态资源无法访问第三种解决方案 -->
    <mvc:resources location="/images/" mapping="/images/**"></mvc:resources>
    <mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
</beans>

2.涉及常用注解

@Controller、@RequestMapping(类体上【命名空间】、方法上)、@Scope

@Controller //该注解表将当前类交给spring容器管理

@Scope("prototype")

@RequestMapping("/springmvc") //该注解起到限定范围的作用

3.视图解析器(前缀、后缀)

<property name="prefix" value="/jsp/" />
<property name="suffix" value=".jsp" />

4.处理器方法常用的参数(五类)

4.1 HttpServletRequest

4.2 HttpServletResponse

4.3 HttpSession

4.4 用于承载数据的Model、Map、ModelMap【代码示例】

//后端控制器
@Controller //该注解表将当前类交给spring容器管理
@Scope("prototype")
@RequestMapping("/springmvc")  //该注解起到限定范围的作用
public class MyController{
	//接收json字符串并封装成对象
	@RequestMapping("/hello")
	public String  hello1(String username,int age,Model model,Map<String, Object> map,ModelMap modelMap){
		System.out.println(username + " ----------"+age);
		model.addAttribute("username", username);
		map.put("age", age);
		modelMap.addAttribute("gender", "female");
		return "welcome";
	}

4.5 请求中所携带的请求参数

5.接收请求参数

1. 参数接收之逐个接收

(1) 在后端控制器中如何接收前台参数

创建ModelAndView。对象.addObject进行获取方法中的参数。

@RequestMapping("/hello")          //@RequestParam解决当参数名和属性名不一致
	public ModelAndView hello(@RequestParam("username") String name,int age){
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("username", name);
		modelAndView.addObject("age", age);
		modelAndView.setViewName("welcome");
		return modelAndView;
	}

(2)SpringMVC中会自动进行类型转换。

2. 参数接收之对象整体接收

(1) 以对象形式整体接收参数:封装数据对象,提供get和set将对象为参数进行接收

(2) 以对象形式整体接收参数:接收的参数的名称必须和对象内的参数名称一致。

(@RequestParam解决当参数名和属性名不一致)

3. 参数接收之数组或集合接收参数

(1) 用数组或集合接收参数:后端控制器内的方法参数为数组形式或集合形式,然后通过循环遍历获取数据。

//数组接收参数
 /*
 @RequestMapping("/hello")
 public void hello(String[] interest){
 for (String string : interest) {
 System.out.println(string);
 }
 }
 */
 //集合接收参数
 @RequestMapping("/hello")
 public void hello1(@RequestParam List<String> interest){
 for (String string : interest) {
 System.out.println(string);
 }

(2) 数组和集合接收参数的区别:集合参数内加上@RequestParam进行效正。

4. 参数接收之域属性参数接收及restful风格传参

(1) 域属性参数的接收需要

//域属性,也称为对象属性
  private Parter parter;

首先获取域属性,然后获得域属性中的值

(2) restful风格传参:参数作为路径变量的一部分,通过路径传递过来。

5. 参数接收之接收json

(1) 后端控制器中接收前台传过来的Json字符串:

回调函数获取Json字符串 .

导入jackson包

v2-41a66c848610c5aa95a5f271c6eee25e_b.jpg
//后端控制器
@Controller //该注解表将当前类交给spring容器管理
@Scope("prototype")
@RequestMapping("/springmvc")  //该注解起到限定范围的作用
public class MyController{
	//接收json字符串并封装成对象
	@RequestMapping("/hello") 
	public void hello1(@RequestBody Star star) {
		 System.out.println(star);
	 }
}
jsp中代码
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
$(function(){
	$("#myButton").click(function(){
		var data1={username:"zhangsan",age:23};
		$.ajax({
			url:"${pageContext.request.contextPath}/springmvc/hello",
			type: "POST",
			contentType:"application/json",
			data:JSON.stringify(data1),/*将当前的数据转换成json字符串  */
		})
	})
})
</script>
<title>Insert title here</title>
</head>
<body>
	<button id="myButton">点击</button>
</body>

(2)将页面中的Json对象转换成Json字符串:Eval

6. 获取请求头中信息@RequestHeader

(1) 请求头中有哪些常用信息:Host、cookie、session

(注解@RequestHeader)

@RequestHeader该注解放到方法参数里

7. 处理器方法返回值类型String

处理器方法获取Form表单的数据时使用String作为返回值类型。

8. 处理器方法无返回值void

(1) 如果处理器方法无返回值,进行资源跳转及传递数据

//接收json字符串并封装成对象
@RequestMapping(value="/hello",produces="text/html;charset=utf-8")
public void hello1(HttpServletResponse response) throws IOException{
String json="{"name":"weilong","flavor":"hot"}";
response.getWriter().print(json);
 }

(2) 何时处理器方法无返回值较合适?

页面不需要进行资源跳转的时。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC中的@NotNull注解是用于验证请求参数或方法参数是否为null的注解。在使用@NotNull注解时,需要先引入相关的依赖。根据引用和引用所提供的信息,可以使用以下依赖解决这个问题: ```xml <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.7.Final</version> </dependency> ``` 在Spring MVC中使用@NotNull注解时,需要在参数上添加该注解以进行验证。例如: ```java @RequestMapping("/example") public void exampleMethod(@NotNull String parameter) { // method implementation } ``` 这样,在请求参数"parameter"为null时,会抛出验证异常。通过使用@NotNull注解,可以有效地验证参数的有效性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SpringMVC @NotNull校验不生效](https://blog.csdn.net/YKRY35/article/details/100778402)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Java和springmvc@NotNull报错,校验不生效!](https://blog.csdn.net/Mrs_chens/article/details/102664415)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [基于mysql+ssm+bootstrap的员工管理系统项目源码](https://download.csdn.net/download/qq_35831906/88227142)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值