springboot Web开发

本文介绍了SpringBoot进行Web开发的简化操作,包括@RestController的使用,自定义Filter、Interceptor的实现,自定义Property配置,日志配置,数据库操作,以及Thymeleaf模板引擎的集成与优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot web开发非常的简单,其中包括常用的json输出、filters、property、log等。

json 接口开发
在以前的spring 开发的时候需要我们提供json接口的时候需要做那些配置呢?
1.添加 jackjson 等相关jar包
2.配置spring controller扫描
3.对接的方法添加@ResponseBody
就这样我们会经常由于配置错误,导致406错误等等,spring boot如何做呢,只需要类添加 @RestController 即可,默认类中的方法都会以json的格式返回。

@RestController
public class HelloController {
    @RequestMapping("/getUser")
    public User getUser() {
        User user = new  User("0001","zhangsan",30);
        return user;
    }
}

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

自定义Filter
两个步骤:

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

@Configuration
public class WebConfiguration {
    @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
        }
    }
}

注解版Filter
1、首先在启动类前面加上扫描器

@SpringBootApplication
@ComponentScan(basePackages= {"com.zmj.web"})
@ServletComponentScan("com.zmj.web.filter")
public class Springboot01Application {
    public static void main(String[] args) {
        SpringApplication.run(Springboot01Application.class, args);
    }
}

2、然后自定义扫描器

@WebFilter(urlPatterns="/*",filterName="LoginFilter2")
public class LoginFilter2 implements Filter {
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }
    @Override
    public void doFilter(ServletRequest arg0,  ServletResponse arg1, FilterChain arg2)
            throws IOException, ServletException  {
        long start = System.currentTimeMillis();
        arg2.doFilter(arg0, arg1);
        System.out.println("LoginFilter2 Execute  cost=" + (System.currentTimeMillis() - start));
    }
    @Override
    public void init(FilterConfig arg0) throws  ServletException {
        // TODO Auto-generated method stub
    }
}

运行即可实现!

自定义拦截器
1、首先编写拦截器

public class LoginInterceptor implements  HandlerInterceptor {
    long start = System.currentTimeMillis();
    @Override
    public boolean preHandle(HttpServletRequest  request, HttpServletResponse response, Object  handler)
            throws Exception {
        start = System.currentTimeMillis();
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest  request, HttpServletResponse response, Object  handler,
            ModelAndView modelAndView) throws  Exception {
        System.out.println("Interceptor  cost="+(System.currentTimeMillis()-start));
    }
    @Override
    public void  afterCompletion(HttpServletRequest request,  HttpServletResponse response, Object handler,  Exception ex)
            throws Exception {
        // TODO Auto-generated method stub
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}

2、添加拦截器

@Configuration
public class WebInterceptor extends  WebMvcConfigurationSupport {
    @Override
    protected void  addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new  LoginInterceptor())
        .addPathPatterns("/*");
        super.addInterceptors(registry);
    }
}

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

air.name=zhangsan
air.age=20
air.desc=i am a student

自定义配置类

@Component
public class TestProperties {
    @Value("${air.name}")
    private String name;
    @Value("${air.age}")
    private int age;
    @Value("${air.desc}")
    private String desc;
    //省略get/set方法
}

controller自动注入配置类

@RestController
public class HelloController {
    @Autowired
    TestProperties prop;
    @RequestMapping("/hello")
    public String hello() {
        System.out.println(prop.getName());
        System.out.println(prop.getAge());
        System.out.println(prop.getDesc());
        return "hello springboot";
    }

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

logging.path=E:/logs/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中使用。 1、添加相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>

2、添加配置文件

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

3、添加实体类和Dao

@Entity
@Table(name="t_user")
public class User {
    @Id
    @Column(name = "uid")
    private String userId;
    @Column(name = "uname")
    private String userName;
    @Column(name = "age")
    private int age;
    ...
}

@Repository
public interface UserDao extends JpaRepository<User,String> {

    @Override
    List<User> findAll();

    List<User> findByUserName(String name);
}

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

Thymeleaf 介绍
Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎。类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。与其它模板引擎相比,Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个Web应用。 好了,你们说了我们已经习惯使用了什么 velocity,FreMaker,beetle之类的模版,那么到底好在哪里呢? 比一比吧 Thymeleaf是与众不同的,因为它使用了自然的模板技术。这意味着Thymeleaf的模板语法并不会破坏文档的结构,模板依旧是有效的XML文档。模板还可以用作工作原型,Thymeleaf会在运行期替换掉静态值。Velocity与FreeMarker则是连续的文本处理器。 下面的代码示例分别使用Velocity、FreeMarker与Thymeleaf打印出一条消息:

  Velocity: $message
    FreeMarker: ${message}
    Thymeleaf: Hello World!

注意:由于Thymeleaf使用了XML DOM解析器,因此它并不适合于处理大规模的XML文件。 1.首先要引入starter

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2.配置controller

@RequestMapping("/goIndex")
public String thym(Model model){
     model.addAttribute("name","张三");
     return "index";
}

3.页面直接html渲染

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link href="css/index.css" rel="stylesheet">
    </head>
<body>
        <p th:text="${name}">测试内容</p>
</body>
</html>

经过这样简单的配置,页面就可以渲染出来啦!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值