session 实例,登录并在成功界面显示欢迎

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

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);
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值