TmallSpringBoot实战学习笔记

匿名 (未验证) 提交于 2019-12-03 00:17:01

POJO

基本意思是说POJO一个普通的Java对象(不是JavaBean,EntityBean等),也不担当任何的特殊的角色,也不实现任何Java框架指定的接口。

错误的POJO

public class DbHello implements Hello {      //实现了接口,就不能称之为POJO,这已经不是简单的Java类了      private DictionaryDAO dao;       public void setDao(DictionaryDAO dao) {             this.dao = dao;      } } 

正确的POJO

public class DbHello {          //简单的Java类,称之为POJO,不继承,不实现接口      private DictionaryDAO dao;      public void setDao(DictionaryDAO dao) {             this.dao = dao;      }  } 

@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键(JPA要求每一个实体Entity,必须有且只有一个主键)

@GeneratedValue提供了主键的生成策略。@GeneratedValue注解有两个属性,分别是strategygenerator,其中generator属性的值是一个字符串,默认为"",其声明了主键生成器的名称(对应于同名的主键生成器@SequenceGenerator和@TableGenerator)。

JPA为开发人员提供了四种主键生成策略,其被定义在枚举类GenerationType中,包括GenerationType.TABLE

GenerationType.SEQUENCE

GenerationType.IDENTITY

GenerationType.AUTO




实例

@Entity //jpa标注实体 @Table(name = "t_customer") // 创建/修改表的名称 @Data public class Customer {      @Id // 主键     //@GeneratedValue(strategy = GenerationType.AUTO)     //主键自增 Auto为默认使用oracle自增的方式      //所以在运行时会多生成一张表 记录从1开始 记录主键     //这里不适用与mysql 但是使用     //@GeneratedValue(strategy = GenerationType.IDENTITY)报主键不能为空错误     private Long id;      @Column(name = "name", nullable = true)      // 数据库对应字段名 非空约束(可以为空)     private String name;      @Column(name = "remark", nullable = true)     // 数据库对应字段名 非空约束(可以为空)     private String remark;          ......  }

RESULTFul

阮一峰博客链接

redirect 和 forward的区别:

重定向 redirect: 完整的重定向包含两次request-response过程,

第一次是访问原始url

第二次是服务器通知客户端访问重定向后的url. 重定向完成后, 浏览器的地址是重定向后的url, 而不是原始的url

重定向的使用场景: 因为重定向会修改浏览器地址, 所以 form 提交应该使用重定向, 以免用户刷新页面导致form重复提交.

转发 forward: 完整的转发仅包含一次 request-response 过程, 用户发出request后, 服务器端视图函数先处理自己的逻辑, 然后在服务器端有调用另一个视图函数, 最后将response返回给浏览器.

harrychinese 刘忠武_博客园引用

控制层调用service层

service调用dao层

dao调用具体的增删改查

@PathVaribale

如果我们需要获取Url=localhost:8080/hello/id中的id值,实现代码如下: @RestController public class HelloController {     @RequestMapping(value="/hello/{id}",method= RequestMethod.GET)     public String sayHello(                         @PathVariable("id") Integer id){         return "id:"+id;     } }   同样,如果我们需要在url有多个参数需要获取,则如下代码所示来做就可以了。 @RestController public class HelloController {     @RequestMapping(value="/hello/{id}/{name}",method=RequestMethod.GET)     public String sayHello(                         @PathVariable("id") Integer id,                         @PathVariable("name") String name){         return "id:"+id+" name:"+name;     } }

@RequestParam

获取Url=localhost:8080/hello?id=98中id的值 @RestController public class HelloController {      @RequestMapping(value="/hello",method= RequestMethod.GET)     public String sayHello(@RequestParam("id") Integer id){         return "id:"+id;     } }   @RequestParam注解给我们提供了这种解决方案,即允许用户不输入id时,使用默认值  @RestController public class HelloController {     @RequestMapping(value="/hello",method= RequestMethod.GET)     //required=false 表示url中可以不穿入id参数,此时就使用默认参数     public String sayHello(@RequestParam(value="id",required = false,defaultValue = "1") Integer id){         return "id:"+id;     } } 

@GetMapping

@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTP Get 映射到 特定的处理方法上。

即可以使用@GetMapping(value = “/hello”)来代替@RequestMapping(value=”/hello”,method= RequestMethod.GET)。即可以让我们精简代码。

HelloWorld_EE_csdn

@RestController

@RestController Spring框架4版本之后出来的注解,之前版本返回json数据需要@ResponseBody配合@Controller

@RestController public class HelloController {      @RequestMapping(value="/hello",method= RequestMethod.GET)     public String sayHello(){         return "hello";     } }  等同于下面 @Controller @ResponseBody public class HelloController {      @RequestMapping(value="/hello",method= RequestMethod.GET)     public String sayHello(){         return "hello";     } }

HelloWorld_EE

CORS(Cross-Origin Resource Sharing)"跨域资源共享",是一个W3C标准,它允许浏览器向跨域服务器发送Ajax请求,打破了Ajax只能访问本站内的资源限制

addMapping:配置可以被跨域的路径,可以任意配置,可以具体到直接请求路径。
allowedMethods:允许所有的请求方法访问该跨域资源服务器,如:POST、GET、PUT、DELETE等。
allowedOrigins:允许所有的请求域名访问我们的跨域资源,可以固定单条或者多条内容,如:"http://www.baidu.com",只有百度可以访问我们的跨域资源。
allowedHeaders:允许所有的请求header访问,可以自定义设置任意请求头信息,如:"X-YAUTH-TOKEN"

恒宇少年――简书

在用spring Bootweb后台时,经常会出现异常,如果每个异常都自己去处理很麻烦,所以我们创建一个全局异常处理类来统一处理异常。通过使用@ControllerAdvice定义统一的异常处理类,而不是在每个Controller中逐个定义。

自定义全局异常处理类 GlobalExceptionHandler.java  @ControllerAdvice public class GlobalExceptionHandler {     @ExceptionHandler(MyException.class)      @ResponseBody     public Result handleMyException(HttpServletRequest request, MyException e){         String message = e.getMessage();         Integer code = e.getCode();         Result result = new Result(code,message);         return result;     } }  只需要使用 @ControllerAdvice 注解来标识即可,可以结合 @Controller 注解来理解.  @Controller 注解标识的类 拦截所有的web请求,使用 @RequestMappering() 进行匹配  @ControllerAdvice 注解标识的类 拦截程序抛出的异常,使用@ExceptionHandler() 进行匹配

赵彦军

PostTruth

fakerswe――csdn

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!