SpingBoot

SpingBoot
潘SpingBoot
创建项目步骤
- 创建项目步骤:(必须确保网络能正常访问)
1.File->new ->module
2.选择spring initializr
3.配置项:
4.选择需要的依赖,选中的依赖会自动配置到pom.xml文件中,也可以手动配置1.group name(默认包) 2.name(发布包的名称) 3.type(maven项目) 4.packaging(打包方式,jar,war)
5.修改pom.xml文件
6.启动项目(找到BootdemoApplication类)1.修改jdk版本为本机环境对应的版本 2.修改打包方式 3.添加需要的依赖 4.配置web路径,资源路径
SpingBoot整合mybatis
- 修改pom.xml
1.添加Mybatis和Mysql依赖
2.修改application.properties
SpringBoot配置数据源
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.url= jdbc:mysql://192.168.0.188:3306/boot?useUnicode=truecharacterEncoding=utf8& useSSL=false
spring.datasource.username= root
spring.datasource.password= 11111111
3.配置扫描实体类和配置扫描 映射文件
mybatis-plus.type-aliases-package=com.example.luo.entity
mybatis-plus.mapper-locations=classpath*:/mapper/*.xml
4.配置扫描 dao
只需要在 SpringBoot启动 main方法中添加注解 @MapperScan 扫描Dao 组件
//配置mybatis dao所在的包
@MapperScan(“com.lgr.bootdemo1.dao”)
//启动类注解,包含main方法的类要添加该注解,作为程序的入口
@SpringBootApplication
public class Bootdemo1Application {
public static void main(String[] args) {
SpringApplication.run(Bootdemo1Application.class, args);
}
}
5.创建数据库表
6.创建实体类
注意:实体类路基需和第三步配置的包路径一致。
7.创建dao接口
注意:dao接口需和第四步创建的包路径下
8.创建dao接口映射文件(.xml编写简便的sql语句)
注意:接口映射文件必须配置在第三步配置路径下
9.在项目的test文件夹下项目包里有一个测试类
导入实体类如:
@Autowired
BatchDAO batchDAO;
编写测试类,选中运行
@Test
void contextLoads() {
BatchVo batchVo = new BatchVo();
batchVo.setBatchId(0);
batchVo.setBatchName(“2024暑假社会实践”);
batchVo.setState(1);
batchVo.setRemark(“”);
batchDAO.insert(batchVo);
}
SpringBoot 整合 SpringMVC
1.在pom文件中添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
-----------------------------------------------------------
spring-boot-starter-web包自动帮我们引入了web模块开发需要的相关jar包
此 starter pom 内嵌tomcat、servlet、SpringMVC 依赖。
启动后会默认启动tomcat 占用8080端口
没有加此依赖SpringBoot 不能启动 tomcat容器。
-----------------------------------------------------------
spring-boot-starter-web 所做的事
自动配置内嵌Servlet 容器 tomcat
自动配置http编码 utf-8
自动配置SpringMVC
自动配置文件上传(文件上传大小限制)
------------------------------------------------------------
添加完spring-boot-starter-web 依赖 就可以使用SpringMVC的注解
@Controller 表示这是一个控制层bean
@RequestMapping 处理请求地址映射注解
@GetMapping 使用get 方式处理请求地址映射注解
@PostMapping 使用post 方式处理请求地址映射注解
@ResponseBody 设置JSON格式响应
注意:此时没有配置视图页面,只能显示html页面,不能解析JSP或者thymeleaf 等模板引擎。
添加@ResponseBody 注解可以返回JSON格式数据
SpringBoot 返回JSON数据
创建IndexController(控制器)
注意:IndexController 一定要创建在SpringBoot 启动main方法同级,或者下级,不然扫描不到Controller
使用方法:和SpringMVC 没有区别
项目启动:和普通的web项目启动不同,在SpringBoot中,启动web项目也是启动main方法,和普通的java项目没有区别!
访问:http://localhost:8080/getMapJSON 得到json数据。
@GetMapping("/json")
@ResponseBody
public Map json(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("值1","1");
map.put("值2","2");
return map;
}
SpringBoot 整合 JSP
修改pom.xml添加依赖,修改打包信息
修改application.properties 配置文件
添加webapp文件夹,添加WEB-INF文件夹
修改idea web项目配置
修改Controller
添加jsp页面
1.修改pom.xml 增加依赖
<!-- jsp支持 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- jstl标签库 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
2.修改pom.xml修改项目打包设置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 默认版本和SpringBoot版本一致,
使用高版本的打包方式,不能正确打包。 -->
<version>1.4.2.RELEASE</version>
</plugin>
</plugins>
<resources>
<!-- 打包时将jsp文件拷贝到META-INF目录下-->
<resource>
<!-- 指定处理哪个目录下的资源文件 -->
<directory>${basedir}/src/main/webapp</directory>
<!--注意此次必须要放在此目录下才能被访问到-->
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
</resource>
</resources>
</build>
3.修改application.properties 配置文件
spring.mvc.view.suffix=.jsp
spring.mvc.view.prefix=/WEB-INF/jsp/
4.添加webapp文件夹
1、在src --> main 下添加webapp文件夹
2、在webapp下添加WEB-INF文件夹
3、在WEB-INF下添加jsp文件夹
4、在jsp文件夹下添加hello.jsp
5、配置idea指定WEB目录
控制器传递数据的六种方式
1.Map
@GetMapping("/map")
public String getMap(Map map){
map.put("msg1","map对象返回的值");
return "test";
}
2.Model
@GetMapping("/model")
public String getModel(Model model){
model.addAttribute("msg2","Model对象返回的值");
return "test";
}
3.ModelMap
@GetMapping("/modelMap")
public String getModelMap(ModelMap model){
model.addAttribute("msg3","ModelMap对象返回的值");
return "test";
}
4.ModelAndView
@GetMapping("/modelAndView")
public ModelAndView getModelMap(){
ModelAndView mv = new ModelAndView();
//设置返回值
mv.addObject("msg4","ModelAndView对象返回的值");
//设置页面名称
mv.setViewName("test");
return mv;
}
5.servlet的返回方式
@GetMapping("/request")
public String getRequest(HttpServletRequest request, HttpServletResponse response){
//设置返回值
request.setAttribute("msg5","request对象返回的值");
return "test";
}
6.返回JSON格式数据需要使用@ResponseBody注解
@GetMapping("/json")
@ResponseBody
public BatchVo getJson(){
BatchVo batchVo = new BatchVo();
batchVo.setBatchId(0);
batchVo.setBatchName("2024暑假社会实践");
batchVo.setState(1);
batchVo.setRemark("");
return batchVo;
}
控制器接收前端数据的六种方式
方法一:
前端:
function login(){
var user = $("#userName").val();
var pass = $("#password").val();
if(user==""){
alert("请输入用户名称");
//设置焦点
$("#userName").focus();
return false;
}
if(pass==""){
alert("密码不能为空");
//设置焦点
$("#password").focus();
return false;
}
//使用jquery的post方法提交数据
$.post(
'/login/login',
{
'userName': user,
'password':pass
},
//回调函数,接收后端返回的值,data变量就是后端返回的值
function(data){
alert(data.userName);
}
);
return true;
}
控制器:
//jquery的post方法提交数据
@PostMapping("/login")
@ResponseBody
public UserVo login(UserVo userVo){
System.out.println(userVo);
return userVo;
}
方法二:
前端:
function login1(){
var user = $("#userName").val();
var pass = $("#password").val();
if(user==""){
alert("请输入用户名称");
//设置焦点
$("#userName").focus();
return false;
}
if(pass==""){
alert("密码不能为空");
//设置焦点
$("#password").focus();
return false;
}
//使用jquery的post方法提交数据
$.get(
'/login/login1?userName=' + user + '&password=' + pass,
//回调函数,接收后端返回的值,data变量就是后端返回的值
function(data){
alert(data.userName);
}
);
return true;
}
控制器:
//jquery的get方法提交数据
@GetMapping("/login1")
//login/login1?userName=张三&password=1234
//使用@RequestParam注解接收参数,表单返回的变量与控制器的变量名称不一致时,可以转换
@ResponseBody
public UserVo login1(@RequestParam("userName") String name,@RequestParam("password") String pass){
UserVo userVo = new UserVo();
userVo.setUserName(name);
userVo.setPassword(pass);
System.out.println(userVo);
return userVo;
}
方法三:
前端:
function login2(){
var user = $("#userName").val();
var pass = $("#password").val();
if(user==""){
alert("请输入用户名称");
//设置焦点
$("#userName").focus();
return false;
}
if(pass==""){
alert("密码不能为空");
//设置焦点
$("#password").focus();
return false;
}
//使用jquery的post方法提交数据
$.get(
'/login/login2?userName=' + user + '&password=' + pass,
//回调函数,接收后端返回的值,data变量就是后端返回的值
function(data){
alert(data.userName);
}
);
return true;
}
控制器:
//jquery的get方法提交数据
@GetMapping("/login2")
//login/login2?userName=张三&password=1234
//使用@RequestParam注解接收参数,表单返回的变量与控制器的变量名称不一致时,可以转换
@ResponseBody
public UserVo login2(String userName,String password){
UserVo userVo = new UserVo();
userVo.setUserName(userName);
userVo.setPassword(password);
System.out.println(userVo);
return userVo;
}
方法四:
前端:
function login3(){
var user = $("#userName").val();
var pass = $("#password").val();
if(user==""){
alert("请输入用户名称");
//设置焦点
$("#userName").focus();
return false;
}
if(pass==""){
alert("密码不能为空");
//设置焦点
$("#password").focus();
return false;
}
//使用jquery的post方法提交数据
$.get(
'/login/login3/' + user + '/' + pass,
//回调函数,接收后端返回的值,data变量就是后端返回的值
function(data){
alert(data.userName);
}
);
return true;
}
控制器:
//jquery的get方法提交数据
@GetMapping("/login3/{userName}/{password}")
//login/login3/张三/1234
//使用@RequestParam注解接收参数,表单返回的变量与控制器的变量名称不一致时,可以转换
@ResponseBody
public UserVo login3(@PathVariable("userName") String userName,@PathVariable("password") String password){
UserVo userVo = new UserVo();
userVo.setUserName(userName);
userVo.setPassword(password);
System.out.println(userVo);
return userVo;
}
方法五:
前端:
function login4(){
var user = $("#userName").val();
var pass = $("#password").val();
if(user==""){
alert("请输入用户名称");
//设置焦点
$("#userName").focus();
return false;
}
if(pass==""){
alert("密码不能为空");
//设置焦点
$("#password").focus();
return false;
}
return true;
}
控制器:
@PostMapping("/login4")
public String login4(UserVo userVo){
System.out.println(userVo);
return "index";
}
//接收表单提交数据(效果与login4一样)
@PostMapping("/login5")
public String login5(HttpServletRequest request, HttpServletResponse response){
UserVo userVo = new UserVo();
userVo.setUserName(request.getParameter("userName"));
userVo.setPassword(request.getParameter("password"));
System.out.println(userVo);
return "index";
}
SpringBoot整合使用druid连接池
1.添加MybatisPlusConfig类
//启动事务
@EnableTransactionManagement
/*
配置文件
使用了@Configuration注解的类就是配置类,程序启动时系统会自动执行,
该注解的作用就是把以往的xml文件转换为java类
@Bean注解,就是配置一个bean,相当于mvc项目中的xml配置文件中bean
*/
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件,创建一个分页的拦截器
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
2.添加以下依赖
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<!--druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.20</version>
</dependency>
3.添加配置
#所有参数的配置,冒号后面必须有一个空格
#配置tomcat的端口
server:
port: 8888
servlet:
#项目访问路径
context-path: /
#session的有效期为30分钟,m分钟,s秒
session:
timeout: 30m
#数据源配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/boot?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 11111111
druid:
#配置监控url
stat-view-servlet:
#连接池的监控地址
url-pattern: /druid/*
#登录名
login-username: root
#登录密码
login-password: 123456
enabled: true
#初始值
initial-size: 10
#最大连接数
max-active: 100
#最小连接数
min-idle: 10
#最大等待时间
max-wait: 60000
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
#validation-query: SELECT 1 FROM DUAL
validation-query: SELECT 1 'X'
test-while-idle: true
test-on-borrow: false
test-on-return: false
filters: stat,wall,slf4j
mvc:
#配置jsp文件存放的根路径
view:
#后缀
suffix: .jsp
#前缀
prefix: /WEB-INF/jsp/
http:
#设置字符编码
encoding:
charset: UTF-8
#mybatis配置(dao在启动类用@MapperScan注解配置)
mybatis-plus:
#mybatis的映射文件路径,放在resources的子文件夹内
mapper-locations: classpath:mapper/*.xml
#配置别名,javabean的包路径
type-aliases-package: com.lgr.bootdemo1.entity
global-config:
#数据库相关配置
db-config:
#主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
id-type: AUTO
#字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"
field-strategy: NOT_NULL
#驼峰下划线转换
column-underline: true
#逻辑已删除值(默认为 1)
logic-delete-value: 1
#逻辑未删除值(默认为 0)
logic-not-delete-value: 0
banner: false
configuration:
# 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
jdbc-type-for-null: 'null'
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3.添加dao包新建BatchDAO类继承bean(extends BaseMapper
4.service添加BatchServiceDAO类继承bean(extends IService
5.impl包添加BatchServiceDaoImpl继承service包下面的BatchServiceDAO类(implements BatchServiceDAO )
6.BatchServiceDaoImpl引入dao
@Autowired
BatchDAO batchDAO;
7.右键生成方法注意添加启动事务@Transactional(查询操作外)
比如无条件查询表
@Override
public List<User> list() {
return userDao.selectList(null);
}
8.添加控制器引入
@Autowired
private UserServiceDao userServiceDao;
实现方法
@RequestMapping("/list")
public List<User> getEricUserList(){
return userServiceDao.list();
}
页面通过项目ip/druid/访问监控页面