完成一個登錄系統(tǒng)的大致步驟如下:
10年積累的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有滕州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
1.創(chuàng)建一個表來存儲用戶的注冊信息,比如USERNAME、PASSWORD等。
2.編寫JSP頁面實(shí)現(xiàn)登錄的界面,并且在這個頁面上放置一個提交按鈕,提交按鈕會把用戶輸入的用戶名和密碼傳遞到Servlet程序中。
3.編寫Servlet程序,實(shí)現(xiàn)用戶賬號和密碼的驗(yàn)證,同時還要處理用戶錯誤提交以及重復(fù)登錄等問題。
4.編寫一個過濾器,實(shí)現(xiàn)已經(jīng)登錄認(rèn)證
5.認(rèn)證成功后,在客戶端或服務(wù)器端創(chuàng)建session對象,用來保存當(dāng)前登錄的用戶的信息,如用戶ID、用戶名等。
6.跳轉(zhuǎn)頁面到指定界面,并把session信息傳遞到新頁面中。
7.編寫一個過濾器,用來檢查是否已經(jīng)登錄,如果還沒有登錄,就跳轉(zhuǎn)回到登錄頁面。
我使用幾系統(tǒng)都B/S結(jié)構(gòu)每登錄都需要輸入用戶名密碼覺非麻煩考慮其同事需求妨寫自登錄程序吧前考慮使用單點(diǎn)登錄幾經(jīng)嘗試放棄
我習(xí)慣使用Java本能始尋找Java解決Google輸入Java自登錄、Java網(wǎng)頁模擬登錄、Java Post 登錄結(jié)倒少內(nèi)容差我嘗試終究沒達(dá)我預(yù)期目標(biāo)我都知道些代碼應(yīng)該jsp頁面執(zhí)行c/s結(jié)構(gòu)程序執(zhí)行些代碼確實(shí)管用
我先析代碼
String surl = "";
URL url = new URL(surl);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter out=new OutputStreamWriter(conn.getOutputStream());
String str = "username=yournamepassword=123456";
out.write(str);
out.flush();
out.close();
C/S結(jié)構(gòu)且參數(shù)確程序能夠功登錄oa系統(tǒng)要看結(jié)通面代碼系統(tǒng)服務(wù)器返結(jié)System.out.println()
String sling = "";
String scontent = "";
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
while ((sling = in.readLine()) != null)
scontent += in + "\r\n";
System.out.println(scontent);
C/S結(jié)構(gòu)控制臺輸返值返內(nèi)容看程序已經(jīng)功登錄要網(wǎng)址瀏覽器打重新登錄問題沒根本解決惡意注冊應(yīng)該達(dá)目
看C/S結(jié)構(gòu)容易實(shí)現(xiàn)網(wǎng)頁程序自登錄除非C/S程序內(nèi)嵌瀏覽器直接瀏覽器自訪問系統(tǒng)應(yīng)該沒別主要問題于我沒辦共享Session
便于共享Session我能瀏覽器實(shí)現(xiàn)網(wǎng)頁自登錄通面代碼jsp頁面測試達(dá)預(yù)期目標(biāo)
網(wǎng)頁自登錄希望程序自填充用戶名密碼Post式提交給登錄頁面Form所指向action頁面或我系統(tǒng)登錄頁面源代碼保存網(wǎng)頁usernamepassword文本框設(shè)置默認(rèn)值通網(wǎng)頁登錄系統(tǒng)測試發(fā)現(xiàn)行接能已經(jīng)想解決
我通url.openConnection()建立連接返scontent打印接著打印代碼:
out.println("\r\n");
原理簡單通login.jsp登錄頁面全部源代碼寫前頁面使用javascript腳本用戶名密碼值填充提交表單終于實(shí)現(xiàn)自登錄目標(biāo)現(xiàn)我通特殊網(wǎng)址例自訪問oa
能注意參數(shù)url值經(jīng)加密內(nèi)容用戶名密碼加效期即效期內(nèi)鏈接才效才實(shí)現(xiàn)自登錄
import java.awt.*; \x0d\x0aimport javax.swing.*; \x0d\x0aimport java.awt.event.*; \x0d\x0aimport java.sql.*; \x0d\x0a\x0d\x0aclass LoginFrm extends JFrame implements ActionListener \x0d\x0a{ \x0d\x0aJLabel lbl1=new JLabel("用戶名"); \x0d\x0aJLabel lbl2=new JLabel("密碼"); \x0d\x0aJTextField txt=new JTextField(15); \x0d\x0aJPasswordField pf=new JPasswordField(); \x0d\x0aJButton btn1=new JButton("確定"); \x0d\x0aJButton btn2=new JButton("取消"); \x0d\x0a\x0d\x0apublic LoginFrm() \x0d\x0a{ \x0d\x0athis.setTitle("登陸"); \x0d\x0aJPanel jp=(JPanel)this.getContentPane(); \x0d\x0ajp.setLayout(new GridLayout(3,2,10,10)); \x0d\x0ajp.add(lbl1);jp.add(txt); \x0d\x0ajp.add(lbl2);jp.add(pf); \x0d\x0ajp.add(btn1);jp.add(btn2); \x0d\x0abtn1.addActionListener(this); \x0d\x0abtn2.addActionListener(this); \x0d\x0a} \x0d\x0a\x0d\x0apublic void actionPerformed(ActionEvent ae) \x0d\x0a{ \x0d\x0aif(ae.getSource()==btn1) \x0d\x0a{ \x0d\x0atry \x0d\x0a{ \x0d\x0aClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); \x0d\x0aConnection con=DriverManager.getConnection("jdbc:odbc:MyDB","",""); \x0d\x0aStatement cmd=con.createStatement(); \x0d\x0aResultSet rs=cmd.executeQuery("select * from loginAndpassword where login='"+txt.getText()+"' and password='"+pf.getText()+"'"); \x0d\x0aif(rs.next()) \x0d\x0a{ \x0d\x0aJOptionPane.showMessageDialog(null,"登陸成功!"); \x0d\x0a} \x0d\x0aelse \x0d\x0aJOptionPane.showMessageDialog(null,"用戶名或密碼錯誤!"); \x0d\x0a} catch(Exception ex){} \x0d\x0a\x0d\x0aif(ae.getSource()==btn2) \x0d\x0a{ \x0d\x0atxt.setText(""); \x0d\x0apf.setText(""); \x0d\x0a} \x0d\x0a} \x0d\x0a} \x0d\x0a\x0d\x0apublic static void main(String arg[]) \x0d\x0a{ \x0d\x0aJFrame.setDefaultLookAndFeelDecorated(true); \x0d\x0aLoginFrm frm=new LoginFrm(); \x0d\x0afrm.setSize(400,200); \x0d\x0afrm.setVisible(true); \x0d\x0a} \x0d\x0a}
第一個java文件LogoingDemo.java
import?java.util.Scanner;
public?class?LogoingDemo?{
public?static?void?main(String[]?args)?{
System.out.println("請輸入用戶名");
Scanner?sc??=?new?Scanner(System.in);
String?name?=?sc.nextLine();
System.out.println("請輸入密碼");
String?psw??=?sc.nextLine();
sc.close();
CheckDemo?cd?=?new?CheckDemo(name,psw);//用戶名和密碼傳入驗(yàn)證類
boolean?bo?=?cd.check();//調(diào)用方法進(jìn)行驗(yàn)證
if(bo){
System.out.println("登錄成功");
}else{
System.out.println("登錄失敗:提示?用戶名?admin?密碼123");
}
}
}
第二個java文件CheckDemo.java
public?class?CheckDemo?{
public?String?name;
public?String?psw;
public?CheckDemo(String?name,String?psw){//構(gòu)造器
this.name?=?name;
this.psw?=?psw;
}
public?boolean?check()?{
//?用戶名?密碼不能為空.?用戶名=admin?密碼?=?123
if?(name?!=?null??psw?!=?null??name.equals("admin")??psw.equals("123"))?{
return?true;
}
return?false;
}
}
效果
請輸入用戶名
admin
請輸入密碼
123
登錄成功
------------------------------------
請輸入用戶名
add
請輸入密碼
123
登錄失敗:提示?用戶名?admin?密碼123
importjava.awt.*;\x0d\x0aimportjava.awt.event.*;\x0d\x0aimportjava.applet.*;\x0d\x0aimportjava.applet.Applet;\x0d\x0aimportjava.io.*;\x0d\x0aimportjavax.xml.parsers.DoumentBuilderFactory;\x0d\x0a\x0d\x0apublicclassUserPanelextendsAppletimplentsActionListener\x0d\x0a{\x0d\x0aLabellblName,lblNumber,lblSex,lblJob,lblText;\x0d\x0aTextFieletfName.tfNumber;\x0d\x0acheckboxchMale,chFemale;\x0d\x0aTextAreataText;\x0d\x0achoicechJob;\x0d\x0aButtonbtnOk,btnDisply;\x0d\x0aPanelp1,p2,p3,p4,p5,p6,p7,p8,p9;\x0d\x0aStringstrName,strNumber,strSex,strJob,strText;\x0d\x0a\x0d\x0apublicvoidinit()\x0d\x0a{\x0d\x0alblName=newLabel("姓名");\x0d\x0alblNumber=newLabel("身份證號");\x0d\x0alblSex=newLabel("性別");\x0d\x0alblJob=newLabel("職業(yè)");\x0d\x0alblText=newLabel("個性化宣言");\x0d\x0atfName=newTextField(23);\x0d\x0atfNumber=newTextFidle(20);\x0d\x0ataText=newTextArea(10,20);\x0d\x0ac=newcheckboxGroup();\x0d\x0achMale=newcheckbox("男",c,true);\x0d\x0achFemale=newcheckbox("女",c,false);\x0d\x0achJob=newchoice();\x0d\x0achJob.add("學(xué)生");\x0d\x0abtnOk=newButton("確定");\x0d\x0abtnDisplay=newButton("顯示");\x0d\x0ap1=newpanel();\x0d\x0ap2=newpanel();\x0d\x0ap3=newpanel();\x0d\x0ap4=newpanel();\x0d\x0ap5=newpanel();\x0d\x0ap6=newpanel();\x0d\x0ap7=newpanel(newBorderLayout());\x0d\x0ap8=newpanel();\x0d\x0ap9=newpanel(newBorderLayout());\x0d\x0a//\x0d\x0ap1.add(lblName);\x0d\x0ap1.add(tfName);\x0d\x0ap2.add(lblNumber);\x0d\x0ap2.add(lblNumber);\x0d\x0ap3.add(lblSex);\x0d\x0ap3.add(chMale);\x0d\x0ap3.add(chFemale);\x0d\x0ap4.add(lblJob);\x0d\x0ap4.add(chJob);\x0d\x0ap5.add(p3);\x0d\x0ap5.add(p4);\x0d\x0ap6.setLayout(newBorderLayout());\x0d\x0ap6.add(p1,BorderLayout.NORTH);\x0d\x0ap6.add(p2,BorderLayout.CENTER);\x0d\x0ap6.add(p5,BorderLayout.SOUTH);\x0d\x0ap7.add(lblText,BorderLayout.NORTH);\x0d\x0ap7.add(lblText,BorderLayout.CENTER);\x0d\x0ap8.setLayout(newFlowLayout(FlowLayout.CENTER,30,10));\x0d\x0ap8.add(btnOK);\x0d\x0ap8.add(btnDisplay);\x0d\x0ap9.add(p6,BorderLayout.NORTH);\x0d\x0ap9.add(p7,BorderLayout.CENTER);\x0d\x0ap9.add(p8,BorderLayout.SOUTH);\x0d\x0aadd(p9);\x0d\x0a//\x0d\x0abtnOK.addActionListener(this);\x0d\x0abtnDisplay.addActionListener(this);\x0d\x0abtnDisplay.setEnabled(false);\x0d\x0astrName=newString();\x0d\x0astrNumber=newString();\x0d\x0astrSex=newString();\x0d\x0astrJob=newString();\x0d\x0astrText=newString();\x0d\x0a}\x0d\x0a\x0d\x0apublicvoidactionPerformed(ActionEventevt)\x0d\x0a{\x0d\x0astringarg=evt.getActionCommand();\x0d\x0a//\x0d\x0aif(arg.equals("確定"))\x0d\x0a{\x0d\x0astrName=tfName.getText().trim();\x0d\x0astrNumber=tfNumber.getText().trim();\x0d\x0aif(chMale.getState())\x0d\x0astrSex="男";\x0d\x0aelse\x0d\x0astrSex="女";\x0d\x0astrJob=chJob.getselectedItem();\x0d\x0astrText=taText.getText().trim();\x0d\x0atry\x0d\x0a{\x0d\x0a//\x0d\x0aDoumentBuildFactorydbf=DocumentBuilderFactory.newInstance();\x0d\x0adb=dbf.newDocumentBuilder();\x0d\x0aDoumentdoc=db.newDoument();\x0d\x0a//\x0d\x0aElementroot=doc.CreateElement("UserDAta");\x0d\x0aElementeName=doc.createElement("Name");\x0d\x0aElementeNumber=doc.createElement("Number");\x0d\x0aElementeJob=doc.createElement("Job");\x0d\x0aElementeText=doc.createElement("Text");\x0d\x0a//\x0d\x0aroot.appendChild(eName);\x0d\x0aroot.appendChild(eNumber);\x0d\x0aroot.appendChild(eSex);\x0d\x0aroot.appendChild(eJob);\x0d\x0aroot.appendChild(eText);\x0d\x0a//\x0d\x0aeName.appendChild(doc.creatTextNode("\n"strName"\n"));\x0d\x0aeNumber.appendChild(doc.creatTextNode("\n"strNumber"\n"));\x0d\x0aeSex.appendChild(doc.creatTextNode("\n"strSex"\n"));\x0d\x0aeJob.appendChild(doc.creatTextNode("\n"strJob"\n"));\x0d\x0aeText.appendChild(doc.creatTextNode("\n"strText"\n"));\x0d\x0a//\x0d\x0aFilef=newFile("user.xml");\x0d\x0aFileOutputStreamfOut=newFileOutStream(f);\x0d\x0a//\x0d\x0afOut.write("