为了账号安全,请及时绑定邮箱和手机立即绑定

请问一下springboot 怎么实现用户登录带头像的 页面啊?

/ 猿问

请问一下springboot 怎么实现用户登录带头像的 页面啊?

繁星点点滴滴 2019-10-30 06:03:54

springboot 怎么实现用户登录带头像的 页面啊


查看完整描述

3 回答

?
幕布斯7119047
  1. pom.xml


  2. .properties

    spring.mvc.view.prefix=/WEB-INF/jsp/
    spring.mvc.view.suffix=.jsp
    #添加数据库连接信息
    spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=111
    spring.datasource.driverClassName=com.mysql.jdbc.Driver
    spring.datasource.max-active=20
    spring.datasource.max-idle=8
    spring.datasource.min-idle=8
    spring.datasource.initial-size=10
    ##SPring JPA配置信息
    spring.jpa.database = MYSQL
    spring.jpa.show-sql = true
    spring.jpa.hibernate.ddl-auto = update
    spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
    spring.freemarker.charset=UTF-8

3.@SpringBootApplication
public class HelloApplication {

public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}

4.@Controller
public class HelloWorldController {
@Autowired
UserRepository   userRepository;
@RequestMapping("/hello")
public String index() {
return "hello";
}
@RequestMapping("/")
public String toIndex() {
return "index";
}
@RequestMapping("/register")
public String register(User user,@RequestParam(value="file")MultipartFile file,Model model) {

if (!file.isEmpty()) {
try {
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(new File("D:/workpace/workspace-template/template/01_spring-boot-hello/src/main/webapp/"+user.getUsername()+".jpg")));//保存图片到目录下
out.write(file.getBytes());
out.flush();
out.close();
String filename="D:/workpace/workspace-template/template/01_spring-boot-hello/src/main/webapp/"+user.getUsername()+".jpg";
user.setTupian(filename);
userRepository.save(user);//增加用户
}
catch (Exception e) {
e.printStackTrace();
return "上传失败," + e.getMessage();
}
model.addAttribute(user);
return "index2";
} else {
return "上传失败,因为文件是空的.";
}


}
}

5.@Entity(name="user3")
public class User {
@Id
@GeneratedValue
private Long id;
private String username;
private String password;
private String tupian;//图片地址
public User(){}

public Long getId() {
return id;
}

public String getUsername() {
return username;
}

public String getPassword() {
return password;
}

public String getTupian() {
return tupian;
}

public void setId(Long id) {
this.id = id;
}

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

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

public void setTupian(String tupian) {
this.tupian = tupian;
}
}

6.

/*
* 最后,我们需要继承JpaRepository这个类,这里我们实现了两个查询方法,第一个是符合JPA命名规范的查询,
JPA会自动帮我们完成查询语句的生成,另一种方式是我们自己实现JPQL(JPA支持的一种类SQL的查询)。
*/
@Repository
public interface UserRepository  extends  JpaRepository<User,Long>{

}

7.

@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter{
//SpringBoot重写addResourceHandlers解决resources下面静态资源无法访问
//列:写addResourceHandlers()后,\webapp\ 下的静态资源可以访问了
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/src/main/webapp/**").addResourceLocations("classpath:/webapp/");
super.addResourceHandlers(registry);
}

}

8.

9.

10.



查看完整回答
反对 回复 2019-11-02
?
一只甜甜圈

1、将数据保存在session中,不要保存着request中;
2、两种方式清除session:服务器清除 和程序员写程序清除
服务器清除
setMaxInactiveInterval() 写在 session.setAttribute()之后
配置<session-config>放在web.xml

查看完整回答
反对 回复 2019-11-02
?
冉冉说

第一个问题,由于BS结构的特点是基于请求和应答的,换句话说,服务器处于被动位置,客户浏览器处于主动为止,如果你不主动发出请求,服务器是不会鸟你的,或者说,服务器根本就不知道你是谁!
要想实现你的需求,可以在JSP页面放置一个定时器,用JavaScript搞,通过Ajax异步请求服务器,做登录状态轮询,如果发现在别的地方登录了,强制下线。
这样的话,就需要一个状态保存的容器,这个自己去搞吧,实现方案很多的。

第2个问题就更简单了,登录失败时,修改计数器的值,例如设置为错误3次就锁定,那么没错误一次就减1,到0就不让登了呗,然后启动一个解锁定时器线程,在设定的时间后将这个值修改成3
这些参数都是可以人为设定的

查看完整回答
反对 回复 2019-11-02

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信