springboot--配置视图解析器--过滤器--定时器--整合mybatis

springboot学习02

一、配置视图解析器
1、application.properties
#配置视图解析器
spring.mvc.view.prefix=/pages/
#后缀名根据jsp/html页面自行填写或者不写
spring.mvc.view.suffix=
2、Controller层
@Controller
@RequestMapping("/index")
public class IndexController {

    /**
     * restful访问风格
     * @param uName
     * @param age
     * @return
     */
    @RequestMapping("/toShowPage/{uName}/{age}")
    public String toShowPage(@PathVariable(name = "uName") String uName, @PathVariable(name = "age") Integer age){
        return "show.jsp";
    }
}
3、jsp页面

备注:访问时带参数,localhost:8888/index/toShowPage/鬼见愁/26

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<head>
    <base href="<%=basePath%>"/>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>study</title>
</head>
<body>
    <h1>springboot访问jsp页面</h1>
    <h2>用户名:${uName}    年龄:${age}</h2>
</body>
</html>
二、过滤器的使用
  1. 过滤器
package com.java.filters;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author Liushun
 * @date Created in 2018/10/1 21:50
 * @description 流量统计过滤器
 */

// 过滤路径
@WebFilter(urlPatterns = {"/*"})
public class FlowCountFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        // 获取application域
        ServletContext application = req.getServletContext();
        Object viewCount = application.getAttribute("viewCount");
        int tempViewCount = 0;
        if(viewCount == null){  // 本项目暂无人访问
            tempViewCount = 1;
        }else { // 此项目已有人访问
            tempViewCount = ((Integer)viewCount) + 1;
        }
        application.setAttribute("viewCount",tempViewCount);
        // 放行
        chain.doFilter(req,res);
    }

    @Override
    public void destroy() {

    }
}
  1. 在springboot程序的启动入口中添加过滤器的包扫描
// 启动过滤器,需要指定过滤器所在的包,让spring框架进行包扫描
@ServletComponentScan(basePackages = "com.java.filters")
  1. Controller写方法(同上)跳转到JSP页面

    备注:访问时带参数,localhost:8888/index/toShowPage/鬼见愁/26

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%>
<%
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() +request.getContextPath()+"/";
%>
<!DOCTYPE html>
<html>
<head>
    <base href="<%=basePath %>">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>home</title>
</head>
<body>
    <h1>用户名:${uName}   年龄:${age}</h1>
    <h1>当量浏览量:${applicationScope.viewCount}</h1>
</body>
</html>
三、任务调度(定时器)
1、在springboot启动程序入口开启定时器任务
// 开启定时器任务注解
@EnableScheduling
2、在方法中调用
package com.java.tasks;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;

/**
 * @author Liushun
 * @date Created in 2018/10/2 19:00
 * @description 开启任务调度
 */
@Component
public class Task1 {

    // 每时每分每秒均执行
    @Scheduled(cron = "* * * * * *")
    public void printDate(){
        System.out.println(new Date());
    }
}
四、springboot整合mybatis
1、pom.xml依赖
<!-- spring boot整合mybatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

<!-- MySQL -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
2、配置注解形式的mybatis
1、application.properties中配置数据库信息
#配置数据库信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///assert
spring.datasource.username=root
spring.datasource.password=Root
2、mapper层
package com.java.mapper;

import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;

public interface BookMapper {

    /**
     * 查询book表中的所有数据
     * @return
     */
    @Select("SELECT * FROM `book`")
    List<Map<String,Object>> selectAllBook();
}
3、service层
package com.java.service.impl;

import com.java.mapper.BookMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;

/**
 * @author Liushun
 * @date Created in 2018/10/3 21:04
 * @description	
 */
@Service
public class BookServiceImpl implements IBookService {
    
    @Autowired
    private BookMapper bookMapper;

    public List<Map<String,Object>> findAllBook(){
        return bookMapper.selectAllBook();
    }
}
4、controller层
package com.java.controller;

import com.java.service.impl.BookServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;
import java.util.Map;

/**
 * @author Liushun
 * @date Created in 2018/10/3 21:05
 * @description
 */
@Controller
@RequestMapping("/index")
public class IndexController {

    @Autowired
    private BookServiceImpl bookService;

    @RequestMapping("/getBook")
    public @ResponseBody List<Map<String,Object>> getBook(){
        return bookService.findAllBook();
    }
}
3、配置xml形式的mybatis
1、application.properties中配置数据库信息
#配置数据库信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///assert
spring.datasource.username=root
spring.datasource.password=Root

#配置xml形式的mybatis,指定mybatis的xml文件存放位置
mybatis.mapper-locations=classpath:mapper/*.xml

#配置别名
mybatis.type-aliases-package=com.java.pojo
2、BookMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.java.mapper.BookMapper">
    <select id="selectAllBook" resultType="map" >
      SELECT * FROM `book`
    </select>
</mapper>
3、mapper层
package com.java.mapper;

import java.util.List;
import java.util.Map;

public interface BookMapper {

    /**
     * 查询book表中的所有数据
     * @return
     */
    List<Map<String,Object>> selectAllBook();
}
4、service层,controller层同上
4、springboot中mybatis的参数传递
1、mapper层
package com.java.mapper;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

public interface BookMapper {

    /**
     * 按条件查询
     * @param id
     * @param publish
     * @return
     */
    @Select("SELECT * FROM book WHERE id < #{arg0} AND publish = #{arg1}")
    List<Map<String,Object>> selectBooksByCondition(Integer id, String publish);

    // 第二种传值方式
    @Select("SELECT * FROM book WHERE id < #{id} AND publish = #{publish}")
    List<Map<String,Object>> selectBooksByCondition2(Map<String,Object> paramMap);

    // 第三种传值方式
    @Select("SELECT * FROM book WHERE id < #{id} AND publish = #{publish}")
    List<Map<String,Object>> selectBooksByCondition3(@Param("id") Integer id, @Param("publish") String publish);
}
2、service层
 @Override
public List<Map<String, Object>> findBooksByCondition1(Integer id, String publish) {
    return bookMapper.selectBooksByCondition(id,publish);
}
3、controller层
/**
     * 在springboot中给mybatis传递参数
     * @param id
     * @param publish
     * @return
     */
    @RequestMapping("/getBooksByCondition/{id}/{publish}")
    public @ResponseBody List<Map<String,Object>> getBooksByCondition(@PathVariable(name = "id") Integer id, @PathVariable(name = "publish") String publish){
        return  bookService.findBooksByCondition1(id,publish);
    }
4、总结

如果参数封装到了JavaBean或者Map集合中,取参数的方式:#{属性名};单个参数使用#{arg0},#{arg1}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值