求用java编登录页面,可以连接MySql 数据库

求用java编登录页面,可以连接MySql 数据库,第1张

第一步:创建一个查询过程,因为在登录时要根据用户名查询用户密码

此步要用到pl/sql编程知识,代码如下:

create or replace procedure sel_user(uname in varchar2,pass out varchar2) is

begin

select users.password into pass from users where users.username=uname and rownum = 1

end

第二步:编写登录页面(login.java)(采用纯java+servlet编写)

//login.java如下

package cn.hnu

import java.io.IOException

import java.io.PrintWriter

import javax.servlet.ServletException

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

public class testhtml extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

resp.setContentType("text/htmlcharset=gbk")

try {

PrintWriter pw = resp.getWriter()

pw.println("<html>")

pw.println("<head>")

pw.println("<title>")

pw.println("用户登录")

pw.println("</title>")

pw.println("</head>")

pw.println("<body>")

pw.println("<h1>用户登录</h1>")

pw.println("<hr>")

pw.println("<form method=post action=loginCl>")

pw.println("用户名:<input type=text name=userName><br>")

pw.println("密&nbsp&nbsp码:<input type=password name=password><br>")

pw.println("<input type=submit value=登录>")

pw.println("<input type=reset value=重置>")

pw.println("</form>")

pw.println("</body>")

pw.println("</html>")

} catch (Exception e) {

e.printStackTrace()

// TODO: handle exception

}

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doGet(req, resp)

}

}

第三步:编程成功登录页面(wel.java) //wel.java如下,它主要用于用户正常登录后显示信息给用户

package cn.hnu

import java.io.IOException

import java.io.PrintWriter

import javax.servlet.ServletException

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import javax.servlet.http.HttpSession

public class Wel extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

//防止用户非法登录

HttpSession hs = req.getSession()

String s = (String)hs.getAttribute("pass")

if(s == null){

resp.sendRedirect("login")

}

PrintWriter pw = resp.getWriter()

pw.write("welcome,hello")

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doGet(req, resp)

}

}

第四步:编写login处理页面(loginCl.java)

package cn.hnu

import java.io.IOException

import java.sql.*

import javax.servlet.ServletException

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import javax.servlet.http.HttpSession

public class loginCl extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

String u = req.getParameter("userName")

String p = req.getParameter("password")

//查询数据库

String pa=null

Connection ct = null

CallableStatement cs = null

try {

Class.forName("oracle.jdbc.driver.OracleDriver")

ct = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracle",

"scott", "tiger")

cs = ct.prepareCall("{call sel_user(?,?)}")

cs.setString(1, u)

cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR)

cs.execute()

pa = cs.getString(2)

System.out.println("u=" + u + " p=" + pa)

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

} finally {

try {

if (cs != null) {

cs.close()

}

if (ct != null) {

ct.close()

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

//验证用户信息是否合法

if (p.equals(pa)) {

HttpSession hs = req.getSession(true)//防止用户非法登录

hs.setAttribute("pass", "OK")

resp.sendRedirect("wel")

} else {

resp.sendRedirect("login")

}

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doGet(req, resp)

}

}

亲,sql可以换成MySQL

这个没关系的,别的都可以照搬来用

这是我自己做的一个管理系统的登录界面,代码虽然有点繁琐,不过简单易懂,你根据自己的需要进行修改吧。

import java.awt.Dimension

import java.awt.GridLayout

import java.awt.Toolkit

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.sql.ResultSet

import java.sql.SQLException

import java.sql.Statement

import javax.swing.JDialog

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JPanel

import javax.swing.JPasswordField

import javax.swing.JTextField

/**

*

* @author mzhe

*

*/

class Loginfrm extends JDialog implements ActionListener

{

JLabel l_name,l_pass,l_error

JTextField t_name

JButton b_enter,b_cancle,b_clear

JPanel pan1,pan2,pan3,pan4

JPasswordField t_pass

String sname,spass

int sunit

NetConn sql

Statement sqll

ResultSet rs

Librarybox lbox

int until=0

Loginfrm(JFrame f,String s)

{

//界面布局

super(f,s)

l_name=new JLabel("名字:")

l_pass=new JLabel("密码:")

l_error=new JLabel("请输入用户名和密码登录")

t_name=new JTextField("",10)

t_pass=new JPasswordField("",10)

t_pass.setEchoChar('*')

b_enter=new JButton("确定")

b_enter.addActionListener(this)

b_cancle=new JButton("取消")

b_cancle.addActionListener(this)

b_clear=new JButton("清除")

b_clear.addActionListener(this)

pan1=new JPanel()

pan2=new JPanel()

pan3=new JPanel()

pan4=new JPanel()

pan1.add(l_name)pan1.add(t_name)

pan2.add(l_pass)pan2.add(t_pass)

pan3.add(l_error)

pan4.add(b_enter)pan4.add(b_cancle)pan4.add(b_clear)

setLayout(new GridLayout(4,1))

add(pan1)add(pan2)add(pan3)add(pan4)

//建立数据库连接

sql=new NetConn()

//设置窗口大小

setSize(300,300)

setVisible(false)

//得到屏幕信息以便使框架居中显示

Dimension screeSize = Toolkit.getDefaultToolkit().getScreenSize()

int screeWidth=screeSize.width

int screeHeight=screeSize.height

//得到框架的大小信息

Dimension frameSize=this.getSize()

int x=(screeWidth-frameSize.width)/2

int y=(screeHeight-frameSize.height)/2

this.setLocation(x, y)

}

public void actionPerformed(ActionEvent e)

{

//单击确定按钮的事件处理程序

if(e.getSource()==b_enter)

{

//如果连续登录次数小于4

if(until<=4)

{

//如果用户名或者密码为空,将显示提示信息

if(t_name.getText().equals("")||t_pass.getText().equals(""))

{

l_error.setText("用户名和密码不能为空")

}

else

{

try

{

sqll=sql.connect()

//根据用户名查询

rs=sqll.executeQuery("SELECT * FROM users where username="+"'"+t_name.getText()+"'")

//遍历查询得到的结果集

while(rs.next())

{

sname=rs.getString(2)

spass=rs.getString(3)

//得到登录用户的级别

sunit=Integer.parseInt(rs.getString(4))

//如果密码正确

if(t_pass.getText().equals(spass))

{

//判断用户的级别,根据不同的级别,显示不同的菜单

switch(sunit)

{

case 1:

{

l_error.setText("登录成功")

t_name.setText("")

t_pass.setText("")

lbox=new Librarybox()

lbox.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

lbox.setResizable(false)

lbox.bookfi.setEnabled(true)

lbox.bookse.setEnabled(true)

lbox.bookth.setEnabled(true)

lbox.bookfo.setEnabled(true)

lbox.mi_system_manger.setEnabled(true)

lbox.mi_system_login.setEnabled(false)

lbox.setVisible(true)

this.dispose()

break

}

case 2:

{

l_error.setText("登录成功")

t_name.setText("")

t_pass.setText("")

lbox=new Librarybox()

lbox.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

lbox.setResizable(false)

lbox.bookfi.setEnabled(false)

lbox.bookse.setEnabled(false)

lbox.bookth.setEnabled(true)

lbox.bookfo.setEnabled(false)

lbox.mi_system_manger.setEnabled(false)

lbox.mi_system_login.setEnabled(false)

lbox.setVisible(true)

this.dispose()

break

}

case 3:

{

l_error.setText("登录成功")

t_name.setText("")

t_pass.setText("")

lbox=new Librarybox()

lbox.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

lbox.setResizable(false)

lbox.bookfi.setEnabled(true)

lbox.bookse.setEnabled(false)

lbox.bookth.setEnabled(false)

lbox.bookfo.setEnabled(true)

lbox.mi_system_manger.setEnabled(false)

lbox.mi_system_login.setEnabled(false)

lbox.fi_msglabel_user.setEnabled(false)

lbox.setVisible(true)

this.dispose()

break

}

}

}

else

{

l_error.setText("用户名或密码错误!")

until++

}

}

}

catch(SQLException e2)

{

e2.printStackTrace()

}

}

}

//超出登录次数

else

{

l_error.setText("你已经超出登录次数")

t_name.setEnabled(false)

t_pass.setEnabled(false)

b_enter.setEnabled(false)

b_clear.setEnabled(false)

}

}

//单击清除按钮的事件处理程序

else if(e.getSource()==b_clear)

{

t_name.setText("")

t_pass.setText("")

l_error.setText("请输入用户名和密码登录")

}

//单击取消按钮的事件处理程序

else if(e.getSource()==b_cancle)

{

dispose()

}

}

}

如果你比较认可的话,请采纳吧,不给分也没关系。只希望对你有用。

分三个包,自己建个包,导进去就ok了,数据库是access的。

package 登录

import java.awt.EventQueue

public class Cilent {

private JFrame frame

private JTextField textField

private JPasswordField passwordField

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

Cilent window = new Cilent()

window.frame.setVisible(true)

} catch (Exception e) {

e.printStackTrace()

}

}

})

}

/**

* Create the application.

*/

public Cilent() {

initialize()

}

/**

* Initialize the contents of the frame.

*/

private void initialize() {

frame = new JFrame()

frame.setTitle("登陆界面")

frame.setBounds(100, 100, 450, 300)

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

frame.getContentPane().setLayout(null)

frame.setResizable(false)

JLabel lblNewLabel = new JLabel("用户名")

lblNewLabel.setBounds(38, 43, 80, 34)

frame.getContentPane().add(lblNewLabel)

textField = new JTextField()

textField.setBounds(155, 42, 227, 37)

frame.getContentPane().add(textField)

textField.setColumns(10)

JLabel label = new JLabel("密 码")

label.setBounds(38, 115, 80, 34)

frame.getContentPane().add(label)

passwordField = new JPasswordField()

passwordField.setBounds(155, 115, 227, 37)

frame.getContentPane().add(passwordField)

JButton btnNewButton = new JButton("登 录")

btnNewButton.setBounds(60, 187, 115, 34)

frame.getContentPane().add(btnNewButton)

btnNewButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent arg0) {

// TODO Auto-generated method stub

UserCheck UC=new UserCheck(textField.getText(),String.valueOf(passwordField.getPassword()))

if(UC.getI()!=0) //有此用户

{

frame.setVisible(false)

}

else

{

textField.setText("")

passwordField.setText("")

}

}

})

JButton button = new JButton("取 消")

button.setBounds(242, 187, 115, 34)

frame.getContentPane().add(button)

button.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent arg0) {

// TODO Auto-generated method stub

textField.setText("")

passwordField.setText("")

}

})

}

}

/*****************************************************************/

package 登录

import java.sql.Connection

import java.sql.DriverManager

import java.sql.PreparedStatement

import java.sql.ResultSet

import java.sql.SQLException

import java.sql.Statement

import *** 作处理.UsersCL

/**@author 20111024

* 检测登录的用户在数据库中有无,若没有,则提示没有此用户,

* 若有,则判断级别:普通用户还是管理员。

*/

public class UserCheck {

private int i=0 //用户级别:0不是用户、1是管理员、2是普通用户

UserCheck(String name ,String password)

{

String jdriver="sun.jdbc.odbc.JdbcOdbcDriver"

String connectDB="jdbc:odbc:Students"

Statement stmt=null

ResultSet rs=null

Connection con=null

try {

Class.forName(jdriver)

con=DriverManager.getConnection(connectDB)

stmt=con.createStatement()

String query="select * from users where name='"+name+"' and passwd='"+password+"'"

rs=stmt.executeQuery(query)

if(rs.next())

{

//数据库中有此用户,访问成功

i=Integer.parseInt(rs.getString(3))

UsersCL UL=new UsersCL(i)

}

else

{

i=0 //没有用户是默认是0级

}

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

public int getI() {

return i

}

}

/********************************************************************************************/

package *** 作处理

import java.awt.EventQueue

public class UsersCL implements ActionListener{

private JFrame frame

private JTextField textField

private JTextField textField_1

private JTextField textField_2

private JTextField textField_3

private int i=0

private JLabel label_3

private JTextField textField_4

public UsersCL(int i) {

this.i=i

frame = new JFrame()

frame.setTitle("用户处理界面")

frame.setBounds(100, 100, 450, 300)

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

frame.getContentPane().setLayout(null)

frame.setResizable(false)

frame.setVisible(true)

JLabel lblNewLabel = new JLabel("学 号")

lblNewLabel.setBounds(24, 32, 74, 29)

frame.getContentPane().add(lblNewLabel)

JLabel label = new JLabel("姓 名")

label.setBounds(24, 71, 74, 29)

frame.getContentPane().add(label)

JLabel label_1 = new JLabel("年 龄")

label_1.setBounds(24, 110, 74, 29)

frame.getContentPane().add(label_1)

label_3 = new JLabel("性 别")

label_3.setBounds(24, 149, 74, 29)

frame.getContentPane().add(label_3)

JLabel label_2 = new JLabel("状 态")

label_2.setBounds(24, 195, 74, 29)

frame.getContentPane().add(label_2)

textField = new JTextField()

textField.setBounds(101, 34, 113, 25)

frame.getContentPane().add(textField)

textField.setColumns(10)

textField_1 = new JTextField()

textField_1.setColumns(10)

textField_1.setBounds(101, 73, 113, 25)

frame.getContentPane().add(textField_1)

textField_2 = new JTextField()

textField_2.setColumns(10)

textField_2.setBounds(101, 112, 113, 25)

frame.getContentPane().add(textField_2)

textField_3 = new JTextField()

textField_3.setEditable(false)

textField_3.setColumns(10)

textField_3.setBounds(101, 199, 288, 25)

frame.getContentPane().add(textField_3)

textField_4 = new JTextField()

textField_4.setColumns(10)

textField_4.setBounds(101, 149, 113, 25)

frame.getContentPane().add(textField_4)

if(1==i)

{

JButton btnNewButton = new JButton("追 加")

btnNewButton.setBounds(276, 41, 113, 29)

frame.getContentPane().add(btnNewButton)

btnNewButton.addActionListener(this)

btnNewButton.setActionCommand("追加")

JButton button_1 = new JButton("删 除")

button_1.setBounds(276, 145, 113, 29)

frame.getContentPane().add(button_1)

button_1.addActionListener(this)

button_1.setActionCommand("删除")

}

JButton button = new JButton("查 询")

button.setBounds(276, 91, 113, 29)

frame.getContentPane().add(button)

button.addActionListener(this)

button.setActionCommand("查询")

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

String name,age,sex,query=null

int num,age1,count=0

num=Integer.parseInt(textField.getText())

name=textField_1.getText()

age1=Integer.parseInt(textField_2.getText())

sex=textField_4.getText()

if(e.getActionCommand().equals("追加"))

{

query="insert into students values("+num+","+"'"+name+"',"+age1+",'"+sex+"')"

count=1

}

else if(e.getActionCommand().equals("查询"))

{

query="select * from students where XSB="+num+""

count=2

}

else if(e.getActionCommand().equals("删除"))

{

query="delete from students where XSB="+num+" and name="+"'"+name+"'"

count=3

}

Statement stmt=null

ResultSet rs=null

Connection con=null

String jdriver="sun.jdbc.odbc.JdbcOdbcDriver"

String connectDB="jdbc:odbc:Students"

String query1=null

try {

Class.forName(jdriver)

con=DriverManager.getConnection(connectDB)

stmt=con.createStatement()

if(count==1)

{

query1="select * from students where XSB="+num+""

rs=stmt.executeQuery(query1)

if(rs.next())

textField_3.setText("已经由此记录,不能追加!")

else

{

stmt.executeUpdate(query)

textField_3.setText("已经追加完成!")

}

}

else if(2==count)

{

stmt.executeQuery(query)

rs=stmt.executeQuery(query)

if(rs.next())

{

textField_3.setText("已查找到此记录!")

}

else

{

textField_3.setText("没有此记录,可以追加!")

}

}

else if(3==count)

{

query1="select * from students where XSB="+num+" and name="+"'"+name+"'"

rs=stmt.executeQuery(query1)

if(rs.next())

{

stmt.executeUpdate(query)

textField_3.setText("已删除此记录!")

}

else

textField_3.setText("无此记录!")

}

} catch (ClassNotFoundException e1) {

// TODO Auto-generated catch block

e1.printStackTrace()

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace()

}

finally{

//关闭资源

if(stmt!=null){

try {

stmt.close()

} catch (Exception e2) {

// TODO: handle exception

}

stmt=null

}

if(con!=null){

try {

con.close()

} catch (Exception e2) {

// TODO: handle exception

}

con=null

}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9606937.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存