• spring boot(二)


    Web 综合开发

    Web 开发

    Spring Boot Web 开发非常的简单,其中包括常用的 json 输出filters、property、log

    json 接口开发

    在以前的spring 开发的时候需要我们提供json接口的时候需要做那些配置呢:

    1.添加 jackjson 等相关jar包

    2.配置spring controller扫描

    3.对接的方法添加@ResponseBody

    就这样我们会经常由于配置错误,导致406错误等等,spring boot如何做呢,只需要类添加 @RestController 即可,默认类中的方法都会以json的格式返回。

    @RestController
    public class HelloWorldController {
        @RequestMapping("/getUser")
        public User getUser() {
        	User user=new User();
        	user.setUserName("小明");
        	user.setPassWord("xxxx");
            return user;
        }
    }
    

    如果我们需要使用页面开发只要使用 @Controller ,下面会结合模板来说明

    自定义Filter

     

    我们常常在项目中会使用filters用于录调用日志、排除有XSS威胁的字符、执行权限验证等等。Spring Boot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,并且我们可以自定义Filter。

    两个步骤:

    1. 实现Filter接口,实现Filter方法
    2. 添加@Configurationz 注解,将自定义Filter加入过滤链

    代码:

    @Configuration

    public classWebConfiguration {
        @Bean
        public RemoteIpFilter remoteIpFilter() {
            return new RemoteIpFilter();
        }
        
        @Bean
        public FilterRegistrationBean testFilterRegistration() {
    
            FilterRegistrationBean registration = new FilterRegistrationBean();
            registration.setFilter(new MyFilter());
            registration.addUrlPatterns("/*");
            registration.addInitParameter("paramName", "paramValue");
            registration.setName("MyFilter");
            registration.setOrder(1);
            return registration;
        }
        
        public class MyFilter implements Filter {
        @Override
        public void destroy() {
        // TODO Auto-generated method stub
        }
    
        @Override
         public void doFilter(ServletRequest srequest, ServletResponse sresponse, 
    FilterChain filterChain) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletRequest request = (HttpServletRequest) srequest; System.out.println("this is MyFilter,url :"+request.getRequestURI()); filterChain.doFilter(srequest, sresponse); } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } } }

    自定义Property

    在web开发的过程中,我经常需要自定义一些配置文件,如何使用呢

    配置在application.properties中

    com.neo.title=快乐生活

    com.neo.description=分享生活与技术

    自定义配置类

    @Component
    public class NeoProperties {
    	@Value("${com.neo.title}")
    	private String title;
    	@Value("${com.neo.description}")
    	private String description;
    
    	//省略getter settet方法
    
    	}
    

    log配置

    配置输出的地址和输出级别

    logging.path=/user/local/log
    logging.level.com.favorites=DEBUG
    logging.level.org.springframework.web=INFO
    logging.level.org.hibernate=ERROR
    

    path为本机的log地址,logging.level 后面可以根据包路径配置不同资源的log级别

    数据库操作

    在这里我重点讲述mysql、spring data jpa的使用,其中mysql 就不用说了大家很熟悉,jpa是利用Hibernate生成各种自动化的sql,如果只是简单的增删改查,基本上不用手写了,spring内部已经帮大家封装实现了。

    下面简单介绍一下如何在spring boot中使用

    第一步:添加相jar包

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
         <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

    第二步:添加配置文件

     spring.datasource.url=jdbc:mysql://localhost:3306/test

     spring.datasource.username=root

    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    spring.jpa.properties.hibernate.hbm2ddl.auto=update
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
    spring.jpa.show-sql= true

    第三步:添加实体类和Dao


    @Entity
    public class User implements Serializable {
    
    	private static final long serialVersionUID = 1L;
    	@Id
    	@GeneratedValue
    	private Long id;
    	@Column(nullable = false, unique = true)
    	private String userName;
    	@Column(nullable = false)
    	private String passWord;
    	@Column(nullable = false, unique = true)
    	private String email;
    	@Column(nullable = true, unique = true)
    	private String nickName;
    	@Column(nullable = false)
    	private String regTime;
    	//省略getter settet方法、构造方法
    }
    

    dao只要继承JpaRepository类就可以,几乎可以不用写方法,还有一个特别有尿性的功能非常赞,就是可以根据方法名来自动的生产SQL,比如findByUserName 会自动生产一个以 userName 为参数的查询方法,比如 findAlll 自动会查询表里面的所有数据,比如自动分页等等。。

    Entity中不映射成列的字段得加@Transient 注解,不加注解也会映射成列。

     

  • 相关阅读:
    图解JavaScript原型和原型链
    hash数组快速查找一个字符串中出现最多的字符,并统计出现的次数
    JS中数组和字符串的方法大全
    用js实现排列组合
    js中一个对象当做参数传递时候?
    用JavaScript按一定格式解析出URL 串中所有的参数
    从Object.definedProperty中看vue的双向数据的绑定
    Uncaught (in promise) TypeError:的错误
    vue之生命周期的一点总结
    原子性和原子性操作
  • 原文地址:https://www.cnblogs.com/ptxxc/p/12237083.html
Copyright © 2020-2023  润新知