新建项目添加maven依赖:Web、MySQL、JPA、Druid,
配置application.properties(参考第四章)
添加对jsp的支持(参考第二章)
1.引入依赖:
<!--1.添加jsp的maven支持 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--2.jsp对servlet容器的maven支持-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<!--3.jstl的maven支持 (javascript tag lib)-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
2.配置application.properties
如果是使用过eclipse工具的人肯定知道jsp文件之前是在/webapp/WEB-INF/jsp目录下,那么我们也沿用eclipse的风格。
1. 在main目录下创建webapp文件夹
2. 在webapp下创建WEB_INF,在WEB_INF下创建jsp文件夹
3. 修改application.yml文件让springmvc支持视图的跳转目录指向为/main/webapp/jsp
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
在jsp文件夹中新建index.jsp,login.jsp
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录页</title>
</head>
<body>
<form action="/login" method="post">
用户名:<input type="text" placeholder="请输入用户名" name="username">
密码:<input type="password" placeholder="请输入密码" name="password">
<input type="submit" value="登录">
</form>
</body>
</html>
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
主页面
</body>
</html>
数据库中建表并插入数据
create table t_user2(id int primary key auto_increment,username varchar(20),password varchar(20));
insert into t_user2 values(1,'sun','123');
配置控制器(UserController)
@RequestMapping(value = "/showLogin")
public String showLogin(){
return "login";
}
@RequestMapping(value = "/index")
public String showIndex(){
return "index";
}
@RequestMapping(value = "/login")
@ResponseBody
public String login(String username,String password){
UserEntity user = userRepository.findByUsername(username);
if (user==null){
return "用户不存在";
}
if (password.equals(user.getPassword())){
return "登陆成功";
}
else {
return "密码错误";
}
}
UserEntity.java
@Entity
@Table(name="t_user2") //参数为表名
public class UserEntity implements Serializable {
@Id
@GeneratedValue
@Column(name="id")
private Integer id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
public Integer getId() {
return id;
}
public void setId(Integer 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;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserEntity that = (UserEntity) o;
return Objects.equals(id, that.id) &&
Objects.equals(username, that.username) &&
Objects.equals(password, that.password);
}
@Override
public int hashCode() {
return Objects.hash(id, username, password);
}
@Override
public String toString() {
return "UserEntity{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
UserRepository.java
@Repository
public interface UserRepository extends JpaRepository<UserEntity,Integer> {
UserEntity findByUsername(String username);
}
配置拦截器(LoginInterceptor)
//实现spring mvc内部接口HandlerInterceptor
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
if (request.getRequestURI().equals("/login")||request.getRequestURI().equals("/showLogin")){
return true;
}
if (request.getSession().getAttribute("user")==null){
response.sendRedirect("/showLogin");
return false;
}
return true;
}
}
将SessionInterceptor拦截器添加到SpringBoot的配置中(新建WebConfig)
WebConfig.java
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
//添加拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**");
}
}
请求/index,若session中没有用户信息,则被拦截