写一段Java代码实现登录注册,要求基于ssm框架,要求实现十天免登录
时间: 2023-08-31 15:25:47 浏览: 142
SSM框架下实现登录注册的示例代码
5星 · 资源好评率100%
### 回答1:
public class LoginController {
@Autowired
private LoginService loginService;
//实现十天免登录
@RequestMapping("/login")
public void login(HttpServletRequest request, HttpServletResponse response,String userName,String password){
//获取cookie
Cookie[] cookies = request.getCookies();
//检查cookie中是否有记住密码
if(cookies!=null && cookies.length>0){
for(Cookie cookie : cookies){
if("remember".equals(cookie.getName())){
//有记住密码,则判断有没有过期
String remember = cookie.getValue();
String[] split = remember.split("#");
String username = split[0];
String password = split[1];
//判断用户名和密码是否正确
boolean flag = loginService.checkUserNameAndPassword(username, password);
if(flag){
//未过期,则自动登录
Date expireDate = new Date(System.currentTimeMillis() + 10 * 24 * 3600 * 1000);
//设置cookie过期时间
cookie.setMaxAge((int) (expireDate.getTime()/1000));
//重新设置cookie
response.addCookie(cookie);
//登录成功
return;
}
}
}
}
//未登录或者登录过期,则从数据库中查询用户名和密码
boolean flag = loginService.checkUserNameAndPassword(userName, password);
if(flag){
//登录成功
Date expireDate = new Date(System.currentTimeMillis() + 10 * 24 * 3600 * 1000);
//记住我
Cookie cookie = new Cookie("remember", userName + "#" + password);
//设置cookie过期时间
cookie.setMaxAge((int) (expireDate.getTime()/1000));
response.addCookie(cookie);
}else {
//登录失败
}
}
}
### 回答2:
使用SSM框架实现登录注册,并且实现十天免登录的Java代码如下:
首先,在数据库中创建用户表user,包含id、username、password、lastLoginTime等字段。
登录功能代码:
```java
@RequestMapping("/login")
@ResponseBody
public String login(String username, String password, HttpSession session, HttpServletResponse response) {
User user = userService.getUserByUsername(username);
if (user == null || !user.getPassword().equals(password)) {
return "登录失败,请检查用户名和密码";
}
// 设置登录信息
session.setAttribute("user", user);
// 设置cookie
if (rememberMe) {
setLoginCookie(response, user.getId());
}
return "登录成功";
}
private void setLoginCookie(HttpServletResponse response, int userId) {
// 获取当前时间
Date now = new Date();
// 计算10天后的时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
calendar.add(Calendar.DATE, 10);
Date expireTime = calendar.getTime();
// 创建cookie
Cookie cookie = new Cookie("userId", String.valueOf(userId));
cookie.setMaxAge((int) ((expireTime.getTime() - now.getTime()) / 1000)); // 设置cookie有效期
cookie.setPath("/"); // 设置cookie路径
response.addCookie(cookie); // 将cookie添加到响应中
}
```
注册功能代码:
```java
@RequestMapping("/register")
@ResponseBody
public String register(String username, String password) {
User checkUser = userService.getUserByUsername(username);
if (checkUser != null) {
return "用户名已存在";
}
User user = new User();
user.setUsername(username);
user.setPassword(password);
userService.addUser(user);
return "注册成功";
}
```
在拦截器中实现免登录功能:
```java
public class LoginInterceptor extends HandlerInterceptorAdapter {
@Autowired
private UserService userService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
if (user == null) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if ("userId".equals(cookie.getName())) {
int userId = Integer.parseInt(cookie.getValue());
user = userService.getUserById(userId);
if (user != null) {
session.setAttribute("user", user);
break;
}
}
}
}
}
return true;
}
}
```
将拦截器配置到Spring MVC配置文件中:
```xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
```
### 回答3:
为了实现登录注册功能,并使用ssm框架,同时保证十天免登录,我们可以按以下步骤进行实现:
1. 创建数据库表
首先,创建一个名为user的数据库表,包含以下字段:id(主键自增)、username(用户名)、password(密码)、last_login_time(最后登录时间)等。
2. 创建用户实体类
在Java项目中创建一个User类,定义与数据库表对应的属性,并生成相应的getter和setter方法。
3. 创建Dao接口与Mapper文件
使用MyBatis创建UserDao接口,并创建对应的Mapper配置文件。在Mapper文件中,通过SQL语句实现用户登录、注册和更新最后登录时间等功能。
4. 创建Service接口与实现类
创建UserService接口,并实现用户登录、注册和更新最后登录时间等功能。在实现类中,调用UserDao中相应的方法完成相关操作。
5. 创建Controller类
创建UserController类,处理用户登录、注册等请求。在Controller类中,通过调用UserService中的方法处理请求,并返回相应的结果。
6. 实现十天免登录功能
为了实现十天免登录,我们可以在用户成功登录后,在Cookie中设置一个token,该token具有一定的时效性,比如设置为10天。在用户访问需要登录权限的接口时,后台首先检查Cookie中的token是否有效,如果有效则允许访问,否则需要重新登录。
7. 进行前后端交互
使用前端技术(如HTML、CSS和JavaScript)创建用户登录、注册的页面,通过Ajax技术与后台进行数据交互。前端页面通过调用相应的Controller方法来实现登录、注册功能。
通过以上步骤的实现,我们可以在Java项目中基于ssm框架实现登录注册功能,并且保证了十天免登录的要求。
阅读全文