分类无人机 无人机是如何进行分类的
无人机是如何进行分类的为实现对无人驾驶航空器的依法管理,相关部门共同起草了《无人驾驶航空器飞行管理暂行条例(征求意见稿)》,日前在工信部官网上对外征求意见,意见...
2024-05-17
在Spring MVC中,如果你想要从请求中获取JSON格式的数据,你需要将请求参数转换为String类型,然后使用JSON库将其解析为Java对象。
以下是一个示例,说明如何在Spring MVC控制器中获取请求参数中的JSON数据:
首先,确保你的项目中已经添加了JSON库的依赖。例如,使用Jackson库,可以在pom.xml文件中添加以下依赖:
xml复制代码
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version>
</dependency>
在控制器中,你可以使用@RequestBody注解将请求体中的JSON数据绑定到一个Java对象。例如,假设你有一个名为User的Java类,具有name和age属性,你可以编写以下控制器方法:
java复制代码
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController{
@PostMapping("/user")
public String createUser(@RequestBody String json){
try{
ObjectMapper mapper= new ObjectMapper();
User user= mapper.readValue(json, User.class);
//在这里处理user对象,例如保存到数据库
return"User created successfully";
} catch(Exception e){
return"Failed to create user:"+ e.getMessage();
}
}
}
在这个例子中,我们使用ObjectMapper类的readValue()方法将JSON字符串转换为User对象。如果转换失败(例如,由于JSON格式错误或缺少必要的属性),这个方法将抛出异常。你可以根据需要处理这个异常。
请注意,使用@RequestBody注解时,Spring MVC将自动将请求体中的JSON数据绑定到指定的Java对象。如果你的请求体包含其他数据(例如,嵌套的JSON对象或数组),你需要相应地修改你的Java类以匹配数据结构。
spring mvc常用的注解:
个介绍。
@Controller
@Controller负责注册一个bean到spring上下文中,bean的ID默认为
类名称开头字母小写,你也可以自己指定,如下
方法一:
@Controller
public class TestController{}
方法二:
@Controller("tmpController")
public class TestController{}
@RequestMapping
1.@RequestMapping用来定义访问的URL,你可以为整个类定义一个
@RequestMapping,或者为每个方法指定一个。
把@RequestMapping放在类级别上,这可令它与方法级别上的
@RequestMapping注解协同工作,取得缩小选择范围的效果。
例如:
@RequestMapping("/test")
public class TestController{}
则,该类下的所有访问路径都在/test之下。
2.将@RequestMapping用于整个类不是必须的,如果没有配置,所有的方法
的访问路径配置将是完全独立的,没有任何关联。
3.完整的参数项为:@RequestMapping(value="",method=
{"",""},headers={},params={"",""}),各参数说明如下:
value:String[]设置访问地址
method: RequestMethod[]设置访问方式,字符数组,查看RequestMethod
类,包括GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE,常用
RequestMethod.GET,RequestMethod.POST
headers:String[] headers一般结合method= RequestMethod.POST使用
params: String[]访问参数设置,字符数组例如:userId=id
4.value的配置还可以采用模版变量的形式,例如:@RequestMapping
(value="/owners/{ownerId}", method=RequestMethod.GET),这点将在介
绍@PathVariable中详细说明。
5.@RequestMapping params的补充说明,你可以通过设置参数条件来限制
访问地址,例如params="myParam=myValue"表达式,访问地址中参数只有
包含了该规定的值"myParam=myValue"才能匹配得上,类似"myParam"之类
的表达式也是支持的,表示当前请求的地址必须有该参数(参数的值可以是
任意),"!myParam"之类的表达式表明当前请求的地址不能包含具体指定的
参数"myParam"。
6.有一点需要注意的,如果为类定义了访问地址为*.do,*.html之类的,则
在方法级的@RequestMapping,不能再定义value值,否则会报错,例如
Java代码
@RequestMapping("/bbs.do")
public class BbsController{
@RequestMapping(params="method=getList")
public String getList(){
return"list";
}
@RequestMapping(value="/spList")
public String getSpecialList(){
return"splist";
}
}
如上例:/bbs.do?method=getList可以访问到方法getList();而访
问/bbs.do/spList则会报错.
@PathVariable
1.@PathVariable用于方法中的参数,表示方法参数绑定到地址URL的模板
变量。
例如:
Java代码
@RequestMapping(value="/owners/{ownerId}",
method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model
model){
Owner owner= ownerService.findOwner(ownerId);
model.addAttribute("owner", owner);
return"displayOwner";
}
2.@PathVariable用于地址栏使用{xxx}模版变量时使用。
如果@RequestMapping没有定义类似"/{ownerId}",这种变量,则使用在
方法中@PathVariable会报错。
@ModelAttribute
1.应用于方法参数,参数可以在页面直接获取,相当于
request.setAttribute(,)
2.应用于方法,将任何一个拥有返回值的方法标注上@ModelAttribute,使
其返回值将会进入到模型对象的属性列表中.
3.应用于方法参数时@ModelAttribute("xx"),须关联到Object的数据类型
,基本数据类型如:int,String不起作用
例如:
Java代码
@ModelAttribute("items")//<——①向模型对象中添加一个名为items的
属性
public List<String> populateItems(){
List<String> lists= new ArrayList<String>();
lists.add("item1");
lists.add("item2");
return lists;
}
@RequestMapping(params="method=listAllBoard")
public String listAllBoard(@ModelAttribute("currUser")User user,
ModelMap model){
bbtForumService.getAllBoard();
//<——②在此访问模型中的items属性
System.out.println("model.items:"+((List<String>)
model.get("items")).size());
return"listBoard";
}
在①处,通过使用@ModelAttribute注解,populateItem()方法将在
任何请求处理方法执行前调用,Spring MVC会将该方法返回值以“items
”为名放入到隐含的模型对象属性列表中。
所以在②处,我们就可以通过 ModelMap入参访问到 items属性,当执
行 listAllBoard()请求处理方法时,②处将在控制台打印
出“model.items:2”的信息。当然我们也可以在请求的视图中访问到模型
对象中的 items属性。
@ResponseBody
这个注解可以直接放在方法上,表示返回类型将会直接作为HTTP响应字节
流输出(不被放置在Model,也不被拦截为视图页面名称)。可以用于ajax。
@RequestParam
@RequestParam是一个可选参数,例如:@RequestParam("id")注解,所以
它将和URL所带参数 id进行绑定
如果入参是基本数据类型(如 int、long、float等),URL请求参数中
一定要有对应的参数,否则将抛出
org.springframework.web.util.NestedServletException异常,提示无
法将 null转换为基本数据类型.
@RequestParam包含3个配置@RequestParam(required=,value="",
defaultValue="")
required:参数是否必须,boolean类型,可选项,默认为true
value:传递的参数名称,String类型,可选项,如果有值,对应到设置方
法的参数
defaultValue:String类型,参数没有传递时为参数默认指定的值
@SessionAttributes session管理
Spring允许我们有选择地指定 ModelMap中的哪些属性需要转存到
session中,以便下一个请求属对应的 ModelMap的属性列表中还能访问
到这些属性。这一功能是通过类定义处标注@SessionAttributes注解来
实现的。@SessionAttributes只能声明在类上,而不能声明在方法上。
例如
@SessionAttributes("currUser")//将ModelMap中属性名为currUser的属性
@SessionAttributes({"attr1","attr2"})
@SessionAttributes(types= User.class)
@SessionAttributes(types={User.class,Dept.class})
@SessionAttributes(types={User.class,Dept.class},value={"attr1","attr2"})
@CookieValue获取cookie信息
@RequestHeader获取请求的头部信息
publicContentResultds()
{
strings="<script>window.open('../top.htm');</script>";
returnContent(s);
}
window.open()方法
语法:window.open(pageurl,name,parameters);
window对象的open()方法用于创建一个新的窗口实例,新创建的窗口的外观由参数:parameters指定。新窗口中打开的文档由参数:pageurl指定。系统能够根据参数:name确定的名称访问该窗口
下表为parameters参数表:
参数衩始值说明
alwaysLoweredyes/no指定窗口隐藏在所有窗口之下。
alwaysRaisedyes/no指定窗口浮在所有窗口之上。
dependentyes/no指定打开的窗口为父窗口的一个了窗口。并随父窗口的关闭而关闭。
directionsyes/no指定Navigator2和3的目录栏是否在新窗口中可见。
heightpixelvalue设定新窗口的像素高度。
hotkeysyes/no在没有菜单栏的新窗口设置安全退出热键。
innerHeightpixelvalue设置新窗口中文档的像素高度。
innerWidthpixelvalue设置新窗口中文档的像素宽度。
locationyes/no指明位置栏在新窗口中是否可见。
menubaryes/no指明菜单栏在新窗口中是否可见。
outerHeightpixelvalue设定窗口(包括装饰边框)的像素高度。
outerWidthpixelvalue设定窗口(包括装饰边框)的像素宽度。
resizableyes/no指明新窗口是否可以调整。
screenXpixelvalue设定新窗口离屏幕边界的像素长度。
screenYpixelvalue设定新窗口离屏幕上边界的像素长度。
scrollbarsyes/no指明滚动栏在新窗口中是否可见。
titlebaryes/no指明菜单题目栏在新窗口是否可见。
toolbaryes/no指明工具栏在新窗口中是否可见。
Widthpixelvalue设定窗口的像素宽度。
z-lookyes/no在文档中包含各个<pplet>标签的数组。
fullscreenyes/no打开的窗体是否进行全屏显示
leftpixelvalue设定新窗口距屏幕左方的距离
toppixelvalue设定新窗口距屏幕上方的距离
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件至 465747283@qq.com举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
相关文章
无人机是如何进行分类的为实现对无人驾驶航空器的依法管理,相关部门共同起草了《无人驾驶航空器飞行管理暂行条例(征求意见稿)》,日前在工信部官网上对外征求意见,意见...
2024-05-17
机械键盘什么牌子好机械键盘推荐:罗技G610机械键盘、雷柏V500PRO、海盗船K68机械键盘、Cherry(樱桃)、Filco(斐尔可)。1、罗技G610机械...
2024-05-17
电脑进行分区时找不到硬盘发现开机后无法找到硬盘时,按下述步骤进行排查解决:1)首先关机后检查硬盘连接线的情况,SATA线和硬盘电源线是否接牢,重新插拔下,2)再...
2024-05-17
材料的主要强度指标是哪几个强度指标有:弹性极限、屈服极限和强度极限。弹性极限:用来表示材料发生纯弹性变形的最大限度。当金属材料单位横截面积受到的拉伸外力达到这一...
2024-05-17
窖藏酒如何封坛口窖藏酒封坛口方法步骤如下:准备材料:牛皮纸、黄泥、粽叶、棉绳。1、将牛皮纸盖在坛口,粽叶依次交叠放在牛皮纸上方。2、将放好粽叶的酒坛用棉绳扎紧坛...
2024-05-17