session 实例
主要用到的 session 方法有:
- 获得session对象
HttpSession session = request.getSession(); - 设置session属性
User user = new User();
user.setName(name);
session.setAttribute(“user”, user); - 后台获取 session 属性
User usr = (User)session.getAttribute(“user”);
System.out.println(usr.getName()); - 前台获取 session 值
${ user.name }
全部文件如下 :
User.java
package domain;
public class User {
private String name ;
private String password ;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
}
DBlink.java
package com.ck.DB;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
public class DBLink {
String driver ="com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/blogs?useUnicode=true&characterEncoding=utf-8";
String user = "root";
String password = "root";
public Connection conn ;
public DBLink(){
try {
//注册驱动
Class.forName(driver);
conn = DriverManager.getConnection(url,user,password);
if (!conn.isClosed()) {
System.out.println("数据库连接成功!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void close(){
try {
this.conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
UserDao.java
package com.ck.Dao;
public interface UserDao {
public boolean Login(String name, String password);
}
UserDaoImpl.java ( 是 大写的 i , impl ,不是两个 L )
package com.ck.DaoImpl;
import com.ck.DB.DBLink;
import com.ck.Dao.UserDao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDaoImpl implements UserDao {
/**
* 用户登录方法
* @param name
* @param password
* @return 布尔值,为true 时登录成功, false 时登录失败
*/
@Override
public boolean Login(String name, String password) {
boolean flag = false ;
try {
DBLink dbLink = new DBLink();
String sql = " select * from t_user where name = '"+name+"'and password ='"+password+"'";
PreparedStatement ps = dbLink.conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
if (rs.next()){
flag = true ;
}
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
}
}
LoginServlet.java
package com.ck.setvlet;
import com.ck.DB.DBLink;
import com.ck.Dao.UserDao;
import com.ck.DaoImpl.UserDaoImpl;
import domain.User;
import sun.security.pkcs11.Secmod;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String password = request.getParameter("password");
UserDao dao = new UserDaoImpl();
boolean login = dao.Login(name, password);
String message = "";
if (login){
//获得session对象
HttpSession session = request.getSession();
//设置session属性
User user = new User();
user.setName(name);
session.setAttribute("user", user);
User usr = (User)session.getAttribute("user");
System.out.println(usr.getName());
message = "登录成功!!!";
request.setAttribute("message",message);
request.getRequestDispatcher("success.jsp").forward(request,response);
}else{
message = "登录失败,请重新输入。";
request.setAttribute("message",message);
request.getRequestDispatcher("index.jsp").forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}

该博客详细介绍了如何在Java Web开发中利用session进行用户登录操作。首先通过HttpServletRequest对象获取session实例,然后设置session属性存储User对象。接着在后台通过getAttribute方法获取session中的User对象,打印用户名。最后说明了前台如何通过EL表达式获取session中的用户名称。涉及的文件包括User.java、DBLink.java、UserDao.java、UserDaoImpl.java以及LoginServlet.java。
1877

被折叠的 条评论
为什么被折叠?



