user
=
dao.login(userName,
password)//
数据库中判断用户名和密码if
(null
!=
user)
{//
表示用户存在
session.setAttribute("user",
user)//
把用户放进session中
application.setAttribute(userName,
session.getId())/*
把用户所在的sessionId放进application中,首先要明白一点,一个session对应一个浏览器,其次要注意一点,userName必须是唯一的*/}当用户访问到其他url的时候,可以在过滤器或你的拦截器中这样写:User
user
=
(User)
session.getAttribute("user")//
从session中取出用户if
(null
==
user)
{//
未登录或者登录已经过期
response.sendRedirect(request.getContextPath())//
跳转到首页或登录页面}String
sessionId
=
(String)
application.getAttribute(user.getUserName())if
(null
==
sessionId
||
!sessionId.equals(session.getId()))
{/*这说明用户已经在其他电脑或其它浏览器登录了,那么之前登录的session就无效了,自动被后面的登录给踢掉*/
response.sendRedirect(request.getContextPath())//
跳转到首页或登录页面}chain.doFilter(request,
response)//
通过验证,放行用户进入目标url这种方式是我的一个前辈想到的,我们公司的所有项目都采纳了这种方式,确保一个账号只能在一个浏览器中使用
以下代码就是了。
详细参照附件
import java.awt.GridLayoutimport java.awt.event.ActionEvent
import java.awt.event.ActionListener
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.JPanel
import javax.swing.JPasswordField
import javax.swing.JTextField
public class LoginJFrame extends JFrame implements ActionListener {
private JTextField text_username
private JPasswordField password_pwd
private JButton button_lg, button_close
private JLabel msgArea
public LoginJFrame() {
super("登录")
this.setBounds(500, 240, 320, 260)
setResizable(false)
setBackground(java.awt.Color.lightGray)
setDefaultCloseOperation(EXIT_ON_CLOSE)
getContentPane().setLayout(new GridLayout(4, 1, 20, 10))
getContentPane().add(new JLabel("在线考试系统用户登录", JLabel.CENTER))
JPanel panel_1 = new JPanel(new GridLayout(2, 2, 0, 5))
getContentPane().add(panel_1)
panel_1.add(new JLabel("用户名:", JLabel.CENTER))
text_username = new JTextField(20)
panel_1.add(text_username)
panel_1.add(new JLabel("密 码:", JLabel.CENTER))
password_pwd = new JPasswordField(20)
panel_1.add(password_pwd)
JPanel panel_2 = new JPanel(new GridLayout(1, 2, 30, 0))
getContentPane().add(panel_2)
button_lg = new JButton("登陆")
panel_2.add(button_lg)
button_lg.addActionListener(this)
button_close = new JButton("注册")
panel_2.add(button_close)
setVisible(true)
// 添加一个控件用于显示提示信息
JPanel panel_3 = new JPanel()
msgArea = new JLabel()
getContentPane().add(panel_3.add(msgArea))
setVisible(true)
}
public static void main(String arg[]) {
new LoginJFrame()
}
public void actionPerformed(ActionEvent e) {
// 登录按钮
if (e.getSource() == button_lg) {
if (text_username.getText().isEmpty() && password_pwd.getText().isEmpty()) {
msgArea.setText("请输入用户名和密码!")
return
}
if (text_username.getText().isEmpty()) {
msgArea.setText("用户名不能为空!")
return
}
if (password_pwd.getText().isEmpty()) {
msgArea.setText("密码不能为空!")
return
}
// TODO 连接数据库验证用户
}
}
}
实现jiava短信验证码可以按下面的步奏进行:1、首先,找到一个支持Java语言的接口短信平台。
2、接着下载接口文档,和自己的开发平台进行对接。
3、注意在对接之前测试一下短信的速度,一旦对接好想换就比较麻烦,之前就吃过这个亏,最后有个朋友介绍我去短信网。
4、如果要购买的话,一定要多测试几家。
如果在碰到有疑问的地方一定要和技术或者客服多多沟通。