一、網站系統開發須要掌握的技術css
1、界面和用戶體驗(Interface and User Experience)html
1.1 知道如何在基本不影響用戶使用的狀況下升級網站。一般來講,你必須有版本控制系統(CVS、Subversion、Git等等)和數據備份機制(backup)。前端
1.2 除了瀏覽器,網站還有其餘使用方式:手機、屏幕朗讀器、搜索引擎等等。你應該知道在這些狀況下,你的網站的運行情況。MobiForge提供了手機網站開發的一些相關知識。html5
2、安全性(Security)java
2.1 不要明文(plain-text)儲存用戶的密碼,要hash處理後再儲存。mysql
2.2 確認你的數據庫鏈接信息的安全性。jquery
3、性能(Performance)git
3.1 只要有可能,就使用緩存(caching)。正確理解和使用HTTP caching與HTML5離線儲存。程序員
3.2 學習如何用gzip/deflate壓縮內容(deflate方式更可取)。web
3.3 瀏覽Yahoo的Exceptional Performance網站,裏面有大量提高前端性能的優秀建議,還有他們的YSlow工具。Google的page speed則是另外一個用來分析網頁性能的工具。二者都要求安裝Firebug。
3.4 若是你的網頁用到大量的小體積圖片(好比工具欄),就應該使用CSS Image Sprite,目的是減小http請求數。
3.5 大流量的網站應該考慮將網頁對象分散在多個域名(split components across domains)。
3.6 靜態內容(好比圖片、CSS、JavaScript、以及其餘cookie無關的網頁內容)都應該放在一個不須要使用cookie的獨立域名之上。由於域名之下若是有cookie,那麼客戶端向該域名發出的每次http請求,都會附上cookie內容。這裏的一個好方法就是使用"內容分發網絡"(Content Delivery Network,CDN)。
3.7 確保網站根目錄下有favicon.ico文件,由於即便網頁中根本不包括這個文件,瀏覽器也會自動發出對它的請求。因此若是這個文件不存在,就會產生大量的404錯誤,消耗光你的服務器的帶寬。
4、搜索引擎優化(Search Engine Optimization,SEO)
4.1知道robots.txt的做用,以及搜索引擎蜘蛛的工做原理。
4.2使用Google的Webmaster Tools和Yahoo的Site Explorer
4.3知道存在着惡意或行爲不正當的網絡蜘蛛。
4.4若是你的網站有非文本的內容(好比視頻、音頻等等),你應該參考Google的sitemap擴展協議。
5、技術(Technology)
5.1 理解HTTP協議,以及諸如GET、POST、sessions、cookies之類的概念,包括"無狀態"(stateless)是什麼意思。
5.2 確保你的XHTML/HTML和CSS符合W3C標準,使得它們可以經過檢驗。這可使你的網頁避免觸發瀏覽器的古怪行爲(quirk),並且使它在"屏幕朗讀器"和手機上也能正常工做。
5.3 理解瀏覽器如何處理JavaScript腳本。
5.4 理解網頁上的JavaScript文件、樣式表文件和其餘資源是如何裝載及運行的,考慮它們對頁面性能有何影響。在某些狀況下,可能應該將腳本文件放置在網頁的尾部。
5.5 理解JavaScript沙箱(Javascript sandbox)的工做原理,尤爲是若是你打算使用iframe。
5.6 知道JavaScript可能沒法使用或被禁用,以及Ajax並非必定會運行。記住,"不容許腳本運行"(NoScript)正在某些用戶中變得流行,手機瀏覽器對腳本的支持千差萬別,而Google索引網頁時不運行大部分的腳本文件。
5.7 瞭解301重定向和302重定向之間的區別(這也是一個SEO相關問題)。
5.8 考慮使用樣式表重置(Reset Style Sheet)。
5.9 考慮使用JavaScript框架(好比jQuery、MooTools、Prototype),它們可使你不用考慮瀏覽器之間的差別。
6、解決bug
6.1 理解程序員20%的時間用於編碼,80%的時間用於維護,根據這一點相應安排時間。
6.2 創建一個有效的錯誤報告機制。
6.3 創建某些途徑或系統,讓用戶能夠與你接觸,向你提出建議和批評。
6.4 爲未來的維護和客服人員撰寫文檔,解釋清楚系統是怎麼運行的。
6.5 常常備份!(而且確保這些備份是有效的。)除了備份機制,你還必須有一個恢復機制。
6.6 使用某種版本控制系統儲存你的文件,好比Subversion或Git。
6.7 不要忘記作單元測試(Unit Testing),Selenium之類的框架會對你有用。
二、源代碼
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
class B extends JFrame implements ActionListener
{
JPanel Interface = new JPanel(null)
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
ImageIcon img = new ImageIcon("D:\\圖片\\6.jpg");
g.drawImage(img.getImage(),0,0,getWidth(),getHeight(),img.getImageObserver());
}
};
JButton Determine=new JButton("肯定");
JLabel Prompt;
B(int a)
{
if(a==1)
Prompt=new JLabel("用戶名不存在!");
if(a==2)
Prompt=new JLabel("密碼錯誤!");
if(a==3)
Prompt=new JLabel("登錄成功!");
if(a==4)
Prompt=new JLabel("請輸入用戶信息!");
Prompt.setBounds(50,30,150,23);
Determine.setBackground(Color.WHITE);
Determine.setForeground(Color.black);
Determine.setBounds(103,60,64,25);
Determine.setFont(new Font("黑體",Font.PLAIN,15));
Prompt.setFont(new Font("黑體",Font.PLAIN,15));
Prompt.setHorizontalAlignment(SwingConstants.CENTER);
Prompt.setForeground(Color.black);
Interface.add(Prompt);
Interface.add(Determine);
getContentPane().add(Interface);
Determine.addActionListener(this);
setTitle("提示");
setSize(250,150);
setVisible(true);
setResizable(false);
setLocationRelativeTo(null);
setLayout(new GridLayout());
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
dispose();
}
}
class A extends JFrame implements ActionListener
{
JPanel Interface = new JPanel(null)
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
ImageIcon img=new ImageIcon("D:\\圖片\\11.jpg");
g.drawImage(img.getImage(),0,0,getWidth(),getHeight(),img.getImageObserver());
}
};
JLabel[] title = new JLabel [2];
JTextField getid = new JTextField();
JPasswordField getcode = new JPasswordField();
JButton Land = new JButton("登陸");
A()
{
for(int i=0;i<2;i++)
title[i]=new JLabel();
title[0].setText("用戶名:");
title[1].setText("密 碼:");
title[0].setBounds(90, 70, 50, 23);
getid.setBounds(140,70,150,23);
title[1].setBounds(90, 110, 50, 23);
getcode.setBounds(140,110,150,23);
Land.setBounds(100,180,180,25);
Land.setBackground(Color.cyan);
Land.setForeground(Color.black);
for(int i=0;i<2;i++)
{
title[i].setFont(new Font("黑體",Font.PLAIN,13));
title[i].setForeground(Color.black);
}
Land.setFont(new Font("黑體",Font.PLAIN,15));
Interface.add(title[0]);
Interface.add(getid);
Interface.add(title[1]);
Interface.add(getcode);
Interface.add(Land);
Land.addActionListener(this);
getContentPane().add(Interface);
setTitle("登錄窗口");
setSize(400,300);
setVisible(true);
setResizable(false);
setLocationRelativeTo(null);
setLayout(new GridLayout());
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) //觸發事件後的處理方法
{
String str1=null;
String str2=null;
str1=getid.getText().replaceAll(" ","");
str2=String.valueOf(getcode.getPassword()).replaceAll(" ","");
boolean result1=true;
if(str1==null||str1.equals(""))
result1=false;
if(str2==null||str2.equals(""))
result1=false;
if(result1)
{
int result2=queryresult(str1,str2);
if(result2==0)
new B(1);
if(result2==1)
new B(2);
if(result2==2)
new B(3);
}
else
new B(4);
}
public int queryresult(String id,String code)
{
String conURL="jdbc:mysql://localhost:3306/mysql";
int result=0;
try
{
Class.forName("com.mysql.jdbc.Driver");
}
catch (java.lang.ClassNotFoundException e1)
{
System.out.println(e1.getMessage());
}
try {
Connection con;
con = DriverManager.getConnection(conURL,"root","root");
Statement add=con.createStatement();
String str="select * from student";
ResultSet rs=add.executeQuery(str);
while(rs.next())
{
String a1;
String a2;
a1=rs.getString("用戶名");
a2=rs.getString("用戶密碼");
if(a1.equals(id))
{
if(a2.equals(code))
result=2;
else
result=1;
}
}
rs.close();
con.close();
}
catch (SQLException e)
{
e.printStackTrace();
System.out.println(e.getMessage());
}
return result;
}
}
public class Example4
{
public static void main(String[] args)
{
new A();
}
}
三、截圖
四、但願與目標
但願能按時完成老師要求的各類任務,在學有餘力的狀況下提早學習相關的知識,提升自主學習能力,與老師創建良好的師生關係,能多參加相關的比賽。
時間:除了課程與上機外,在完成其餘必須作的事情後,會利用閒暇時間來編程,保證每週在課下至少編程6小時。