import java.awt.BorderLayout;
成都創新互聯專注于鶴山網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供鶴山營銷型網站建設,鶴山網站制作、鶴山網頁設計、鶴山網站官網定制、小程序開發服務,打造鶴山網絡公司原創品牌,更為您提供鶴山網站排名全網營銷落地服務。
import java.awt.Container;
import java.awt.FlowLayout;
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 Login {
private JFrame frame = new JFrame("登錄");
private Container c = frame.getContentPane();
private JTextField username = new JTextField();
private JPasswordField password = new JPasswordField();
private JButton ok = new JButton("確定");
private JButton cancel = new JButton("取消");
public Login(){
frame.setSize(300,200);
c.setLayout(new BorderLayout());
initFrame();
frame.setVisible(true);
}
private void initFrame() {
//頂部
JPanel titlePanel = new JPanel();
titlePanel.setLayout(new FlowLayout());
titlePanel.add(new JLabel("系統管理員登錄"));
c.add(titlePanel,"North");
//中部表單
JPanel fieldPanel = new JPanel();
fieldPanel.setLayout(null);
JLabel l1 = new JLabel("用戶名:");
l1.setBounds(50, 20, 50, 20);
JLabel l2 = new JLabel("密 碼:");
l2.setBounds(50, 60, 50, 20);
fieldPanel.add(l1);
fieldPanel.add(l2);
username.setBounds(110,20,120,20);
password.setBounds(110,60,120,20);
fieldPanel.add(username);
fieldPanel.add(password);
c.add(fieldPanel,"Center");
//底部按鈕
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
buttonPanel.add(ok);
buttonPanel.add(cancel);
c.add(buttonPanel,"South");
}
public static void main(String[] args){
new Login();
}
}
程序如下:
mport java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
@SuppressWarnings("serial")
public class MainFrame extends JFrame {
JLabel lbl1 = new JLabel("用戶名:");
JLabel lbl2 = new JLabel("密 ? ? 碼:");
JTextField txt = new JTextField("admin",20);
JPasswordField pwd = new JPasswordField(20);
JButton btn = new JButton("登錄");
JPanel pnl = new JPanel();
private int error = 0;
public MainFrame(String title) throws HeadlessException {
super(title);
init();
}
private void init() {
this.setResizable(false);
pwd.setEchoChar('*');
pnl.add(lbl1);
pnl.add(txt);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if ("admin".equal花憨羔窖薏忌割媳公顱s(new String(pwd.getPassword()))){
pnl.removeAll();
JLabel lbl3 = new JLabel();
ImageIcon icon = new ImageIcon(this.getClass().getResource("pic.jpg"));
lbl3.setIcon(icon);
pnl.add(lbl3);
}
else{
if(error 3){
JOptionPane.showMessageDialog(null,"密碼輸入錯誤,請再試一次");
error++;
}
else{
JOptionPane.showMessageDialog(null,"對不起,您不是合法用戶");
txt.setEnabled(false);
pwd.setEnabled(false);
btn.setEnabled(false);
}
}
}
});
}
public static void main(String[] args) {
MainFrame frm = new MainFrame("測試");
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setBounds(100, 100, 300, 120);
frm.setVisible(true);
}
}
編程的注意事項:
1、Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。
2、 Java具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。
3、2006年11月13日,Java技術的發明者Sun公司宣布,將Java技術作為免費軟件對外發布。Sun公司正式發布的有關Java平臺標準版的第一批源代碼,以及Java迷你版的可執行源代碼。從2007年3月起,全世界所有的開發人員均可對Java源代碼進行修改。
你要先學會截圖哦,你發的看不清楚,重新寫了一個你參考參考!
import java.awt.GridLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class Day30A extends JFrame {
private static final long serialVersionUID = 1L;
private JLabel labelName,labelId,labelPass,labelMoney,labelSelect,labelCar;
private JComboBoxString jcb;
private JPanel jp1,jp2,jp3,jp4,jp5,jp6,jp7;
private ButtonGroup btg;
private JRadioButton jr1,jr2;
Day30A(){
this.setTitle("注冊賬戶");
this.setLayout(new GridLayout(7,1));
this.setSize(300,280);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
init();
this.setVisible(true);
}
private void init() {
String str="卡片類型1,卡片類型2,卡片類型3,卡片類型4,卡片類型5";
jcb=new JComboBox(str.split(","));
labelId=new JLabel("賬號: ");
labelName=new JLabel("姓名: ");
labelPass=new JLabel("密碼: ");
labelMoney=new JLabel("開戶金額:");
labelSelect=new JLabel("存款類型:");
labelCar=new JLabel("卡片類型:");
addFun1();
addFun2();
}
private void addFun2() {
this.add(jp1);
this.add(jp2);
this.add(jp3);
this.add(jp4);
this.add(jp5);
this.add(jp6);
this.add(jp7);
}
private void addFun1() {
jp1=new JPanel();
jp1.add(labelId);
jp1.add(new JTextField(15));
jp2=new JPanel();
jp2.add(labelName);
jp2.add(new JTextField(15));
jp3=new JPanel();
jp3.add(labelPass);
jp3.add(new JTextField(15));
jp4=new JPanel();
jp4.add(labelMoney);
jp4.add(new JTextField(13));
jp5=new JPanel();
jp5.add(labelSelect);
btg=new ButtonGroup();
jr1=new JRadioButton("定期");
jr2=new JRadioButton("活期",true);
btg.add(jr1);
btg.add(jr2);
jp5.add(jr1);
jp5.add(jr2);
jp6=new JPanel();
jp6.add(labelCar);
jp6.add(jcb);
jp7=new JPanel();
jp7.add(new JButton("確定"));
jp7.add(new JButton("取消"));
}
public static void main(String[] args) {
new Day30A();
}
}
/* Main.java
*
* Created on __DATE__, __TIME__
*/
import javax.swing.JOptionPane;
/**
*
* @author __USER__
*/
public class Main extends javax.swing.JFrame {
/** Creates new form Main */
public Main() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
// editor-fold defaultstate="collapsed" desc="Generated Code"
private void initComponents() {
jPanel1 = new javax.swing.JPanel(); //標簽
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton(); //登錄按鈕
jButton2 = new javax.swing.JButton(); //
jTextField1 = new javax.swing.JTextField(); //文本框
jTextField2 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); //關閉時的操作,即退出程序
setTitle("登錄界面"); //設置標題:歡迎使用股票管理系統
setResizable(false); //設置窗口不可調節大小
jLabel1.setFont(new java.awt.Font("微軟雅黑", 0, 18)); //設置標簽的字體
jLabel1
.setText("您好,請輸入信息");
jLabel2.setText("用戶名");
jLabel3.setText("用戶密碼");
jButton1.setText("登錄");
jButton1.addActionListener(new java.awt.event.ActionListener() { //采用匿名內部類來實現按鈕監聽功能
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("退出");
jButton2.addActionListener(new java.awt.event.ActionListener() { //同上
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout( //層次布局管理器,下面n長的代碼,就是設置位置,自己看吧,呵呵,這個必須的,就不多寫了
jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout
.setHorizontalGroup(jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap(159, Short.MAX_VALUE)
.addComponent(jLabel1).addGap(140, 140,
140))
.addGroup(
jPanel1Layout
.createSequentialGroup()
.addGap(110, 110, 110)
.addGroup(
jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jLabel3))
.addGap(54, 54, 54)
.addGroup(
jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
jPanel1Layout
.createSequentialGroup()
.addComponent(
jTextField2,
javax.swing.GroupLayout.DEFAULT_SIZE,
191,
Short.MAX_VALUE)
.addGap(
112,
112,
112))
.addGroup(
jPanel1Layout
.createSequentialGroup()
.addComponent(
jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE,
191,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())))
.addGroup(
jPanel1Layout
.createSequentialGroup()
.addGap(141, 141, 141)
.addComponent(
jButton1,
javax.swing.GroupLayout.PREFERRED_SIZE,
68,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(89, 89, 89)
.addComponent(
jButton2,
javax.swing.GroupLayout.PREFERRED_SIZE,
72,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(145, Short.MAX_VALUE)));
jPanel1Layout
.setVerticalGroup(jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
jPanel1Layout
.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addGap(55, 55, 55)
.addGroup(
jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(
jTextField1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(41, 41, 41)
.addGroup(
jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(
jTextField2,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(43, 43, 43)
.addGroup(
jPanel1Layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
jButton1,
javax.swing.GroupLayout.PREFERRED_SIZE,
33,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
jButton2,
javax.swing.GroupLayout.PREFERRED_SIZE,
33,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(48, Short.MAX_VALUE)));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addComponent(
jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap()));
layout.setVerticalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addComponent(
jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)));
pack();
setLocationRelativeTo(null); //居中
}// /editor-fold
//GEN-END:initComponents
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { //事件處理,不建議這樣做
// TODO add your handling code here:
String name = this.jTextField1.getText().trim(); //獲得用戶名,去空格
String password = this.jTextField2.getText().trim(); //獲得密碼,去空格
if (name.equals("admin") password.equals("123456")) { //如果符合條件.....其實這里應該去和數據庫關聯,這是死代碼
// Showinformation sf=new Showinformation(); //我估計是另外一個框架,就是登錄成功之后的框架
// sf.setVisible(true);
// sf.show(); //這個方法就直接秒殺,不用了,因為sf.setVisible(true)已經被調用了,這里就多次一舉了
} else { //用戶名或者密碼驗證失敗
JOptionPane.showMessageDialog(this, "用戶名或者密碼錯誤啦~", "提示", //提示框
JOptionPane.INFORMATION_MESSAGE);
this.jTextField1.setText(""); //清空輸入框
this.jTextField2.setText("");
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { //事件處理,其實可以將jButton1ActionPerformed放在一起處理,只要獲得按鈕的標簽內容 (JButton)(evt.getSuorse()).getText()就做對比就ko了
// TODO add your handling code here:
System.exit(0);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() { //好方法,呵呵使用該方式的原因是:awt是單線程模式的,所有awt的組件只能在(推薦方式)事件處理線程中訪問,從而保證組件狀態的可確定性。java核心編程技術中每個實例基本都用到了
public void run() {
new Main().setVisible(true);
}
});
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;}
// End of variables declaration//GEN-END:variables
你修改一下吧,從記事本獲得用戶名判斷一下就行了
本系統分為兩個功能:
注冊和登錄,
當用戶注冊一個新用戶時
(可以使用英
文和中文用戶名)
,就是向數據庫的
user
表中添加一條記錄。
當用戶輸入注冊信息時,
本系統提供了基本的客戶端驗證,
來判斷用戶輸入
的合法性,
只有當用戶的輸入滿足系統的要求時,
才會將用戶輸入的數據提交到
服務器端負責處理注冊信息的
Action
。
在注冊
Action
成功處理完用戶提交的注
冊信息后,
客戶端仍然會回到注冊頁面。
如果用戶想使用已經注冊的用戶名來登
錄,可以通過單擊“登錄”超鏈接轉到登錄頁面進行登錄。
當用戶在登錄頁面正確輸入在數據庫中已經存在的用戶名和密碼時,
就可以
成功登錄了。
在用戶登錄頁面也擁有和用戶注冊頁面類似的客戶端驗證機制。
也
就是說,
只有當用戶名和密碼都輸入時,
系統才會向服務器端負責登錄的
Action
提交信息。通過驗證用戶名和密碼都正確,系統才允許登錄。
系統總體結構
本系統的注冊系統和登錄系統是相互獨立的,
但可以通過使用注冊和登錄系
統的相應超鏈接導航到另一個系統中。每一個系統分別由一個處理業務邏輯的
Action
、
DAO
層代碼和若干個
JSP
頁面組成。其中注冊系統的
Action
是
RegisterAction
類,
另外還有一個用于顯示用戶注冊頁面的
register.jsp
文件
和
一
個
負
責
顯
示
處
理
結
果
的
result.jsp
文
件
。
登
錄
系
統
的
Action
是
LoginAction
類,
另外還有一個
login.jsp
文件和一個表示用戶已經成功登錄的
success.jsp
文件
3
、
實
現系統的基礎類
在這一部分內容中將實現在注冊登錄系統中使用的一些重要的類,
如用于操
作數據庫的
UserDAO
接口及其實現類。
這些類在整個系統中都起著舉足輕重的作
用。
3.1
實現訪問數據庫的
UserDAO
類
UserDAO
實際上是一個接口,
由于注冊系統和登錄系統都需要訪問和操作數
據庫,
因此,
將這些功能都封裝在
UserDAO
接口中,
然后
UserDAOImpl
類對該接
口進行實現,這樣,在
LoginAction
類和
RegisterAction
類的類體中添加
UserDAO
類型的屬性,這兩個
Action
就都可以訪問和操作數據庫了。
UserDAO
接口及其實現類有以下功能:
通過
HibernateTemplate
對數據庫進行連接和操作
對數據庫進行增刪查改操作。
執行
hql
。
UserDAO接口和UserDAOImpl
類的實現代碼請查看UserDAO.java和UserDAOImpl.java文件。
實現MD5加密(選做)
本系統保存在數據庫中的密碼是通過
MD5
算法加密的。
在
JDK
中提供了實現
MD5
算法的類。
通過
java.security.MessageDigest
類的
getInstance
方法可以
獲得支持
MD5
算法的
MessageDigest
對象實例。關于
MD5
加密,詳見關于
MD5
加密
.doc
文檔。
由于被
MD5
算法加密后的字符串中可能含有非可視的字符,
這些字符可能無
法保存在數據庫中,因此,需要將被加密后的字符串再次使用
Base64
格式進行
編碼。實現
MD5
加密的完整代碼見
Encrypter.java
6
4
、
實現注冊系統
在這個系統中,有一個處理用戶提交的注冊信息的
RegisterAction
類,除
此之外,還有一個
register.jsp
,這個頁面負責顯示注冊頁面。當
Register
類
處理完注冊信息后,
如果注冊成功,
會轉向
result.jsp
頁面,
如果注冊不成功,
則直接返回
register.jsp,
可以重新注冊。
1.
實現注冊
RegisterAction
類
RegisterAction
類負責處理用戶提交的注冊信息。如果注冊信息正確,就
向
user
表中添加一條記錄,否則,會通過消息對話框顯示出現消息。
在開始處理用戶注冊信息之前,
需要先在
RegisterAction
類中添加
userDAO
屬性,這樣通過該屬性就可以對數據庫進行操作。然后向
user
表中插入記錄之
前,
需要先判斷一下用戶輸入的用戶名或者密碼是否有效,
如果用戶名和密碼輸
入都合法,
就調用
userDAO
屬性的
save
方法向
user
表中根據用戶輸入的信息插
入一條記錄。如果無法成功插入記錄,說明該用戶名在
user
表中已經存在了。
為了更穩妥,
我們可以先使用
select
語句來查詢用戶名是否存在,
然后再向
user
表中插入記錄。
RegisterAction
類的完整代碼見
RegisterAction.java
。
2.
實現注冊系統的主頁面
Register.jsp
頁面是顯示了用戶輸入注冊信息的頁面。
在
register.jsp
中
使用
form
向Register類提交注冊信息。
register.jsp頁面的代碼見
register.jsp
。
3.
實現結果
JSP頁面
在Register類處理完注冊信息后,如果注冊成功,就會轉向到result.jsp頁面。
這個頁面顯示了注冊成功的結果,并且可以直接通過超鏈,轉向到登錄頁面login.jsp
首先是Token主類。類很簡單\x0d\x0a\x0d\x0apackage com.company.util;\x0d\x0a\x0d\x0aimport java.util.ArrayList;\x0d\x0a\x0d\x0aimport javax.servlet.http.HttpSession;\x0d\x0a\x0d\x0apublic class Token {\x0d\x0a\x0d\x0aprivate static final String TOKEN_LIST_NAME = "tokenList";\x0d\x0a\x0d\x0apublic static final String TOKEN_STRING_NAME = "token";\x0d\x0a\x0d\x0aprivate static ArrayList getTokenList(HttpSession session) {\x0d\x0a\x0d\x0a Object obj = session.getAttribute(TOKEN_LIST_NAME);\x0d\x0a\x0d\x0a if (obj != null) {\x0d\x0a\x0d\x0a return (ArrayList) obj;\x0d\x0a\x0d\x0a } else {\x0d\x0a\x0d\x0a ArrayList tokenList = new ArrayList();\x0d\x0a\x0d\x0a session.setAttribute(TOKEN_LIST_NAME, tokenList);\x0d\x0a\x0d\x0a return tokenList;\x0d\x0a\x0d\x0a }\x0d\x0a\x0d\x0a }\x0d\x0a\x0d\x0aprivate static void saveTokenString(String tokenStr, HttpSession session) {\x0d\x0a\x0d\x0a ArrayList tokenList = getTokenList(session);\x0d\x0a\x0d\x0a tokenList.add(tokenStr);\x0d\x0a\x0d\x0a session.setAttribute(TOKEN_LIST_NAME, tokenList);\x0d\x0a\x0d\x0a }\x0d\x0a\x0d\x0aprivate static String generateTokenString(){\x0d\x0a\x0d\x0a return new Long(System.currentTimeMillis()).toString();\x0d\x0a\x0d\x0a }\x0d\x0a\x0d\x0a/** *//**\x0d\x0a\x0d\x0a * Generate a token string, and save the string in session, then return the token string.\x0d\x0a\x0d\x0a * \x0d\x0a\x0d\x0a * @param HttpSession\x0d\x0a\x0d\x0a * session\x0d\x0a\x0d\x0a * @return a token string used for enforcing a single request for a particular transaction.\x0d\x0a\x0d\x0a */\x0d\x0a\x0d\x0a public static String getTokenString(HttpSession session) {\x0d\x0a\x0d\x0a String tokenStr = generateTokenString();\x0d\x0a\x0d\x0a saveTokenString(tokenStr, session);\x0d\x0a\x0d\x0a return tokenStr;\x0d\x0a\x0d\x0a }\x0d\x0a\x0d\x0a/** *//**\x0d\x0a\x0d\x0a * check whether token string is valid. if session contains the token string, return true. \x0d\x0a\x0d\x0a * otherwise, return false.\x0d\x0a\x0d\x0a * \x0d\x0a\x0d\x0a * @param String\x0d\x0a\x0d\x0a * tokenStr\x0d\x0a\x0d\x0a * @param HttpSession\x0d\x0a\x0d\x0a * session\x0d\x0a\x0d\x0a * @return true: session contains tokenStr; false: session is null or tokenStr is id not in session\x0d\x0a\x0d\x0a */\x0d\x0a\x0d\x0a public static boolean isTokenStringValid(String tokenStr, HttpSession session) {\x0d\x0a\x0d\x0a boolean valid = false;\x0d\x0a\x0d\x0a if(session != null){\x0d\x0a\x0d\x0a ArrayList tokenList = getTokenList(session);\x0d\x0a\x0d\x0a if (tokenList.contains(tokenStr)) {\x0d\x0a\x0d\x0a valid = true;\x0d\x0a\x0d\x0a tokenList.remove(tokenStr);\x0d\x0a\x0d\x0a }\x0d\x0a\x0d\x0a }\x0d\x0a\x0d\x0a return valid;\x0d\x0a\x0d\x0a }\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a在jsp頁面端。\x0d\x0a\x0d\x0a首先import該類:\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a表單包含隱藏的token字符串:\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a在Servlet中添加如下代碼。\x0d\x0a\x0d\x0aif(Token.isTokenStringValid(request.getParameter(Token.TOKEN_STRING_NAME), request.getSession())){\x0d\x0a\x0d\x0a//進行正常業務流程
網站欄目:java登錄系統代碼設計 Java登錄代碼
網頁路徑:http://m.newbst.com/article40/hihjho.html
成都網站建設公司_創新互聯,為您提供虛擬主機、用戶體驗、微信小程序、網站設計、網站內鏈、移動網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯