发表于: 2020-06-01 22:05:31
1 1262
今天完成的事情:
学习了一下注解。
关于昨天碰到的那个问题:根据ID查询学员和查询所有学员使用的都是@GetMapping,同时存在会报错。
其实可以使用@PathVariable注解来解决:
@GetMapping("/Rest/{ID}")
@ResponseBody
public JSONObject SelectById(@PathVariable(name = "ID")Long ID,Model model){
JSONObject jsonObject = new JSONObject();
jsonObject =jsonObject.fromObject(model.addAttribute("student",studentService.SelectById(ID)));
return jsonObject;
}
这样在发送请求的时候,如果/Rest则是查询所有学员;如果/Rest/1,则是根据ID查询。
@RequestParam:把请求中指定的参数传给控制器(Controller)中的形参。
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)required表示是否必传,defaultValue表示默认值。
@RequestBody:主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
@ModelAttribute:出现在方法上,表示当前方法会在控制器的方法执行前先执行。出现在参数上,可以获取指定的数据给参数赋值。
@SessionAttribute:用于方法之间参数的共享。
页面跳转有两种方式:
1,转发:
request.getRequestDispatcher().forward()方法,只能将请求转发给同一个WEB应用中的组件。
2,重定向:
response.sendRedirect() 方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
例如
//删除学员
@RequestMapping("/Delete")
public void Delete(Long ID, HttpServletRequest request, HttpServletResponse response)throws Exception{
studentService.Delete(ID);
response.sendRedirect(request.getContextPath()+"/Student/GetAllStudent");
return;
}
执行删除操作之后返回所有学员页面。
响应:
1,返回值是String类型:之前用的都是这种,例如:
@RequestMapping("/Update")
public String Update(Student student){
studentService.Update(student);
return "Update";
}
会跳转到Update.jsp页面。
2,返回值是void类型:
@RequestMapping("/Delete")
public void Delete(Long ID, HttpServletRequest request, HttpServletResponse response)throws Exception{
studentService.Delete(ID);
response.sendRedirect(request.getContextPath()+"/Student/GetAllStudent");
return;
}
默认会跳转到对应的jsp页面,一般会用转发或重定向解决。
3,返回值是ModelAndView:
和第一种类似,但是写法不一样。
学习jetty:run。
首先在pom中:
添加jetty
启动jetty
这里我启动失败了,一直报错插件未加载。没办法只能从官网手动下载了。
解压之后
跟Tomcat有点相似。
运行报错:
明天再解决了。
今天的收获:学习了几个常用注解,初步了解jetty。
明天计划完成的事情:解决jetty的问题。
碰到的问题:jetty使用问题。
评论