springBoot整合-登录案例《二》

分享一个我学习springboot自己写的一个登录案例,初学者可以参考用,因为自己不语言表达能力不是很好,所以只是源码+简单的描述,不过如果初学者们碰到了什么问题的话可以留言问我。

首先老套路,我先将我的项目目录结构展示出来,朋友们可以按照我的结构来创建,争取一次性成功理解后,再按照你们的思路自己来。


OK,首先我先将pom.xml文件里面的配置信息展示出来

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jsb</groupId>
  <artifactId>Test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
   <parent >
        <groupId> org.springframework.boot </groupId>
        <artifactId> spring-boot-starter-parent </artifactId>
        <version> 1.3.0.RELEASE </version>
     </parent >
     <properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>
     <!-- 添加 web 应用的依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        
           <!-- thymeleaf -->  
          
     <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-thymeleaf</artifactId>  
        </dependency>  

    </dependencies>
     <!-- 把项目打成jar包运行  -->
     <build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>
需要配置thymeleaf模板,springBoot默认访问thymeleaf文件下的页面。

Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。

Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。Thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。这意味着Thymeleaf还可以作为模板引擎框架。

 

忘了说,这里我用的是mySql数据库,看依赖包应该也可以看出来的。

我们来看数据库的信息 

application.properties的配置信息:

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=wzdsg
spring.datasource.password=1234
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.database = mysql
mybatis.mapper-locations=classpath*:mapper/*.xml
mybatis.type-aliases-package=com.jsb.domain
实体类:

package com.jsb.domain;

/**  
 * @Title: User.java 
 * @Package com.jsb.domain 
 * @Description: 用户的实体类
 * @author twelve   
 * @date 2018年1月19日 上午9:03:48 
 *
 * @version V1.0   
 */
public class User {
	
	// id
	private int id;

	// 用户名
	private String username;
	
	// 密码
	private String password;

	public User() {
		super();
	}

	public User(String username, String password, int id) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
	}


	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
	
	
}


 mapper接口:

package com.jsb.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import com.jsb.domain.User;
/**  
 * @Title: UserMapper.java 
 * @Package com.jsb.mapper 
 * @Description: mapper映射
 * @author twelve   
 * @date 2018年1月19日 上午10:33:53 
 *
 * @version V1.0   
 */
@Mapper
@Repository
public interface UserMapper {

	public User getUserByName(String username);
}
DAO接口与实现类:


package com.jsb.dao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.jsb.domain.User;
import com.jsb.mapper.UserMapper;
/**  
 * @Title: UserDaoImpl.java 
 * @Package com.jsb.dao 
 * @Description: 持久层实现类
 * @author twelve   
 * @date 2018年1月19日 上午10:35:53 
 *
 * @version V1.0   
 */
@Repository
public class UserDaoImpl implements UserDao{
	
	// 注入mapper资源
	@Autowired
	private UserMapper userMapper;

	@Override
	public User findUserByName(String username) {
		
		return userMapper.getUserByName(username);
	}
	


}
service接口与实现类:


package com.jsb.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.jsb.dao.UserDao;
import com.jsb.domain.User;

/**  
 * @Title: UserServiceImpl.java 
 * @Package com.jsb.service 
 * @Description: 业务实现层
 * @author twelve   
 * @date 2018年1月19日 上午9:57:55 
 *
 * @version V1.0   
 */
@Service
public class UserServiceImpl implements UserService{

	@Autowired
	private UserDao userDao;

	@Override
	public User login(String username, String password) {
		// 根据用户名实例化用户对象
		User user = userDao.findUserByName(username);
		// 判断密码是否正确,如果正确返回user对象
		if (null != user && user.getPassword().equals(password)) {
			return user;
		}
		return null;
	}
}
controller:

package com.jsb.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.jsb.domain.User;
import com.jsb.service.UserService;

/**  
 * @Title: UserController.java 
 * @Package com.jsb.controller 
 * @Description: 用户信息的控制层
 * @author twelve   
 * @date 2018年1月19日 上午10:34:24 
 *
 * @version V1.0   
 */
@Controller
public class UserController {
	@Autowired
	private UserService userService;
	
	@RequestMapping("/")
	public String index(){
		return "index";
	}
	
	@RequestMapping("/login")
	public String login(User user,Model model){
		user = userService.login(user.getUsername(), user.getPassword());
		if (null != user) {
			return "success";
		}
		return "index";
	}

}

Thymeleaf文件夹下的页面信息:

index.html
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8"/>
		<title>主界面</title>
	</head>
	<body>
		
		<form method="post" action="../../login">
			用户名:<input type="text" name="username" />
			密码: <input type="password" name="password" />
			<input type="submit" value="登录" />
		</form>
	</body>
</html>
success.html
登录成功就行,随便写。

启动application类: localhost:8080 就OK,测试成功。


好的,以下是一个简单的Spring Boot整合线程池的案例: 1. 在 pom.xml 文件中添加如下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-threadpool</artifactId> </dependency> ``` 2. 在 application.properties 文件中添加如下配置: ``` # 线程池配置 spring.task.execution.pool.core-size=10 spring.task.execution.pool.max-size=20 spring.task.execution.pool.queue-capacity=200 spring.task.execution.pool.keep-alive=30s ``` 3. 创建一个线程池配置类 ThreadPoolConfig: ``` @Configuration public class ThreadPoolConfig { @Bean public ThreadPoolTaskExecutor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); // 设置核心线程数 executor.setCorePoolSize(10); // 设置最大线程数 executor.setMaxPoolSize(20); // 设置队列容量 executor.setQueueCapacity(200); // 设置线程池中线程的名称前缀 executor.setThreadNamePrefix("taskExecutor-"); // 设置线程空闲时间 executor.setKeepAliveSeconds(30); // 设置线程池关闭时等待所有任务完成再继续销毁其他Bean executor.setWaitForTasksToCompleteOnShutdown(true); // 设置线程池中任务的等待时间,超过这个时间还未被执行就会被丢弃 executor.setAwaitTerminationSeconds(60); // 设置拒绝策略 executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); return executor; } } ``` 4. 创建一个测试类 TestController: ``` @RestController public class TestController { @Autowired private ThreadPoolTaskExecutor taskExecutor; @GetMapping("/test") public String test() { taskExecutor.execute(() -> { // 线程执行的任务 System.out.println("Thread " + Thread.currentThread().getName() + " is running."); }); return "success"; } } ``` 5. 启动应用,访问 http://localhost:8080/test,可以看到控制台打印出线程执行的日志。 这就是一个简单的Spring Boot整合线程池的案例。通过配置线程池,可以提高应用程序的性能和并发能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值