setattribute和setparameter
时间: 2023-04-24 18:05:00 浏览: 116
setattribute和setparameter都是Java中的方法。
setattribute是用于设置ServletRequest对象中的属性的方法。它的语法如下:
void setAttribute(String name, Object value)
其中,name是属性的名称,value是属性的值。这个方法可以在整个请求过程中传递数据。
setparameter是用于设置ServletRequest对象中的参数的方法。它的语法如下:
void setParameter(String name, String value)
其中,name是参数的名称,value是参数的值。这个方法可以在请求中传递数据,但是只能传递字符串类型的数据。
相关问题
springmvc+hibnate+mysql实现用户的登入和登出日志
实现用户登录和登出日志的步骤如下:
1. 创建一个 User 实体类,用于保存用户信息,包括用户名、密码等。
2. 创建一个 LoginLog 实体类,用于保存用户登录日志信息,包括登录时间、IP 地址等。
3. 在 Spring MVC 中创建一个 LoginController,用于处理用户登录和登出请求。在登录时,需要验证用户输入的用户名和密码是否正确,并记录登录日志;在登出时,记录登出日志。
4. 在 Hibernate 中创建 User 和 LoginLog 的数据表,并配置 Hibernate 的映射关系。
5. 在 MySQL 中创建 User 和 LoginLog 的数据表,并配置数据库连接信息。
6. 在 Spring MVC 的配置文件中配置 Hibernate 和数据库连接信息。
7. 在 LoginController 中使用 Hibernate 实现用户登录和登出操作,并保存登录和登出日志。
具体实现细节可以参考以下代码:
User.java:
```
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
// getters and setters
}
```
LoginLog.java:
```
@Entity
@Table(name = "login_log")
public class LoginLog {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "login_time")
private Date loginTime;
@Column(name = "ip_address")
private String ipAddress;
// getters and setters
}
```
LoginController.java:
```
@Controller
@RequestMapping("/user")
public class LoginController {
@Autowired
private UserDao userDao;
@Autowired
private LoginLogDao loginLogDao;
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
HttpSession session,
HttpServletRequest request) {
User user = userDao.findUserByUsernameAndPassword(username, password);
if (user == null) {
// 用户名或密码错误,返回登录页面
return "login";
} else {
// 记录登录日志
LoginLog loginLog = new LoginLog();
loginLog.setLoginTime(new Date());
loginLog.setIpAddress(request.getRemoteAddr());
loginLogDao.save(loginLog);
// 将用户信息保存到 session 中
session.setAttribute("user", user);
// 跳转到首页
return "index";
}
}
@RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logout(HttpSession session,
HttpServletRequest request) {
// 获取当前登录用户
User user = (User) session.getAttribute("user");
if (user != null) {
// 记录登出日志
LoginLog loginLog = new LoginLog();
loginLog.setLoginTime(new Date());
loginLog.setIpAddress(request.getRemoteAddr());
loginLogDao.save(loginLog);
// 清空 session
session.invalidate();
}
// 跳转到登录页面
return "login";
}
}
```
UserDao.java:
```
public interface UserDao {
User findUserByUsernameAndPassword(String username, String password);
}
```
UserDaoImpl.java:
```
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private SessionFactory sessionFactory;
@Override
public User findUserByUsernameAndPassword(String username, String password) {
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("from User where username = :username and password = :password");
query.setParameter("username", username);
query.setParameter("password", password);
List<User> users = query.list();
if (users.isEmpty()) {
return null;
} else {
return users.get(0);
}
}
}
```
LoginLogDao.java:
```
public interface LoginLogDao {
void save(LoginLog loginLog);
}
```
LoginLogDaoImpl.java:
```
@Repository
public class LoginLogDaoImpl implements LoginLogDao {
@Autowired
private SessionFactory sessionFactory;
@Override
public void save(LoginLog loginLog) {
Session session = sessionFactory.getCurrentSession();
session.save(loginLog);
}
}
```
在 Spring MVC 的配置文件中配置 Hibernate 和数据库连接信息:
```
<!-- Hibernate 配置 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.example.model" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<!-- 数据源配置 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
```
其中,test 是数据库名,root 和 123456 分别是 MySQL 的用户名和密码。
最后,在 MySQL 中创建 User 和 LoginLog 的数据表:
```
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `login_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`login_time` datetime NOT NULL,
`ip_address` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
以上代码就是一个基于 Spring MVC、Hibernate 和 MySQL 的用户登录和登出日志的实现。
springmvc+hibnate+mysql实现用户的登入和登出日志,用jsp页面显示
首先,你需要在项目中引入SpringMVC、Hibernate和MySQL的依赖。可以在pom.xml文件中添加如下依赖:
```xml
<dependencies>
<!-- SpringMVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.10</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.5.7.Final</version>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
```
接下来,创建一个用户实体类User,包含用户名、密码和登录时间等属性,并使用Hibernate注解进行映射:
```java
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username", nullable = false)
private String username;
@Column(name = "password", nullable = false)
private String password;
@Column(name = "login_time", nullable = false)
private Date loginTime;
// 省略getter和setter方法
}
```
接下来创建一个DAO类UserDao,用于对用户实体进行CRUD操作:
```java
@Repository
public class UserDao {
@Autowired
private SessionFactory sessionFactory;
public void save(User user) {
Session session = sessionFactory.getCurrentSession();
session.save(user);
}
public User findByUsername(String username) {
Session session = sessionFactory.getCurrentSession();
Query<User> query = session.createQuery("from User where username=:username", User.class);
query.setParameter("username", username);
return query.uniqueResult();
}
}
```
接下来,创建一个登录控制器LoginController,用于处理用户登录请求:
```java
@Controller
public class LoginController {
@Autowired
private UserDao userDao;
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@RequestParam String username, @RequestParam String password, Model model) {
User user = userDao.findByUsername(username);
if (user == null || !user.getPassword().equals(password)) {
// 登录失败
model.addAttribute("error", "用户名或密码错误");
return "login";
} else {
// 登录成功,记录登录日志
user.setLoginTime(new Date());
userDao.save(user);
// 将用户信息存入session
HttpSession session = request.getSession();
session.setAttribute("user", user);
return "redirect:/index.jsp";
}
}
}
```
最后,创建一个注销控制器LogoutController,用于处理用户注销请求:
```java
@Controller
public class LogoutController {
@RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logout(HttpServletRequest request) {
// 清空session
HttpSession session = request.getSession();
session.invalidate();
return "redirect:/login.jsp";
}
}
```
在JSP页面中,可以通过EL表达式获取用户信息并显示在页面上:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>欢迎 ${user.username} 登录</h1>
<a href="${pageContext.request.contextPath}/logout">注销</a>
</body>
</html>
```
以上就是一个简单的SpringMVC+Hibernate+MySQL实现用户登录和注销日志,并在JSP页面中显示用户信息的示例。
阅读全文