• 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 注解,不加注解也会映射成列。

     

  • 相关阅读:
    浅析深度优先和广度优先遍历实现过程、区别及使用场景
    浅析为什么要用setTimeout模拟setInterval
    app弹出软键盘获取键盘高度不准确的原因及导致底部定位的元素无法贴近键盘的问题
    App平台iOS设备上因内存不足导致白屏、闪退的原因及其解决方案
    浅谈移动端开发技术
    浅析Console命令调试常用方法
    js正则表达式中的正向肯定预查和正向否定预查, 反向肯定和反向否定(这个翻译不准确)
    javascript的版本查看及js的历史
    【转】JS-正则表达式的反向引用
    【转】Linux虚拟网络设备之tun/tap
  • 原文地址:https://www.cnblogs.com/ptxxc/p/12237083.html
Copyright © 2020-2023  润新知