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>
二、过滤器的使用
- 过滤器
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() {
}
}
- 在springboot程序的启动入口中添加过滤器的包扫描
// 启动过滤器,需要指定过滤器所在的包,让spring框架进行包扫描
@ServletComponentScan(basePackages = "com.java.filters")
-
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}