此步要用到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
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)