发表于: 2018-03-06 21:04:39

1 628


今日完成

1.学习REST/restful风格接口

   主要搞清了HTTP动词表示的含义:

      GET(SELECT):从服务器取出资源(一项或多项)。

      POST(CREATE):在服务器新建一个资源。

      PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

      PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

      DELETE(DELETE):从服务器删除资源。


     状态码(Status Codes)

      200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。

      201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。

      202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)

      204 NO CONTENT - [DELETE]:用户删除数据成功。

      400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。

      401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。

      403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。

      404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。

      406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。

      410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。

      422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。

      500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

2.springMVC学习

      Action参数类型、Action返回值类型

参照实例写了下面一些action(Spring MVC中每个控制器中可以定义多个请求处理方法,我们把这种请求处理方法简称为Action,每个请求处理方法可以有多个不同的参数,以及一个多种类型的返回结果)

@Controller
public class HelloController{
@RequestMapping(value = "/hello")
public String printHello(Model model) {
model.addAttribute("hello", "asdsadad");
       return "hello";
   }

@RequestMapping("/action5")
public String action5(Model model) {
return "action5";
   }

@RequestMapping("/action1")
public String action1(Model model, @RequestParam(required = false, defaultValue = "99") int id) {
model.addAttribute("message2", id);
           return "action1";
       }

@RequestMapping(value = "/action6",method=RequestMethod.GET)
public String action6(Model model) {
model.addAttribute("message", "请求谓词只能是POST与DELETE");
       return "hello";
   }
/*  String作为内容输出
   如果方法声明了注解@ResponseBody ,
   将内容或对象作为 HTTP 响应正文返回,
   并调用适合HttpMessageConverter的Adapter转换对象,
   写入输出流。*/
   @RequestMapping("/action32")
@ResponseBody
   public String action32()
{
return "not <b>path</b>,but <b>content</b>";
   }

/*当方法的返回值为void,但输出流中存在输出内容时,
   则不会去查找视图,而是将输入流中的内容直接响应到客户端,
   响应的内容类型是纯文本,*/

@RequestMapping("/action34")
public void action34(HttpServletResponse response)throws IOException{
response.getWriter().write("<h2>2333</h2>");
}
@RequestMapping("/action35")
public ModelAndView action35()
{
//1只指定视图
       //return new ModelAndView("/bar/index");

       //2分别指定视图与模型
       //Map<String, Object> model=new HashMap<String,Object>();
       //model.put("message", "ModelAndView action35");
       //return new ModelAndView("/bar/index",model);

       //3同时指定视图与模型
       //return new ModelAndView("/bar/index","message","action35 ModelAndView ");

       //4分开指定视图与模型
       ModelAndView modelAndView=new ModelAndView();
       //指定视图名称
       modelAndView.setViewName("hello");
       //添加模型中的对象
       modelAndView.addObject("message", "<h2>Hello ModelAndView</h2>");
       return modelAndView;
   }
/*当返回结果为Map时,相当于只是返回了Model,
   并未指定具体的视图,返回视图的办法与void是一样的,
  即URL= prefix前缀+控制器路径+方法名称 +suffix后缀组成*/
   @RequestMapping("/action36")
public Map<String, Object> action36()
{
Map<String, Object> model=new HashMap<String,Object>();
       model.put("message", "Hello Map");
       model.put("other", "more item");
       return model;
   }
/*返回值为任意类型
   * 使用注解@ReponseBody*/
   @RequestMapping("/action38")
@ResponseBody
   public int action381()
{
return 9527;
   }
/*当返值为自定义类型
     当返回值为自定义类型时Spring会把方法认为是视图名称,
     与返回值为void的类似办法处理URL,但页面中获得数据比较麻烦,以下为错误实例*/
   @RequestMapping("/action39")
public Product action38()
{
return new Product(1,"iPhone",1980.5);
   }
/*在上面的例子中加入了@ResponseBody后返回自定义类型对象的本身,而非视图
    Spring会选择一个合适的方式解析对象,默认是json。*/
   @RequestMapping("/action39")
@ResponseBody
   public Product action39()
{
return new Product(1,"iPhone",1980.5);
   }
/*该接口Model定义在包org.springframework.ui下,model
   对象会用于页面渲染,视图路径使用方法名,与void类似*/
   @RequestMapping("/action40")
public Model action40(Model model)
{
model.addAttribute("message", "返回类型为org.springframework.ui.Model");
       return model;
   }
}


3.准备小课堂

  慌得一批

 明天计划

 学习JSP,尝试写一个页面雏形;

遇到问题

--------

收获

师兄帮忙下解决了一些不该犯的错误。以后应注意


返回列表 返回列表
评论

    分享到