下面是一些總結但是部分來源於網絡。
1.java語言
2. 面向對象分析設計
- XML 語言
- 網頁腳本語言
- 數據庫
- 應用服務器
- 集成開發環境
.java語言:JSP、Servlet、JDBC、javaBean(Application)從這四部分開始創建web項目。
(一)java Database Connectivity(JBDC)技術
它是一種執行SQL語句的java API,由一組用java編程語言編寫的類與接口組成,為開發人員提供了一個標准的API。
作用:1.與數據庫建立連接
2.發送SQL語句
3.處理結果。
API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節。API與系統調用的區別:系統調用代碼都處於內核態,API是操作系統提供的一組函數,通常以庫的形式存在,供用戶調用。
(二)Servlet技術
Servlet是運行在服務器端的程序,可以認為是服務器端的applet,它被web服務器(Tomcat)加載和執行,然后從客戶端接收該請求,執行某種操作,然后返回結果。
(三)JavaServer Pages(JSP)技術
從Servlet分離而來,簡化了開發,加強界面設計。JSP容器收到客戶端發出的請求時,首先執行其中的程序片段,然后將執行結果以HTML格式響應給客戶端。程序片段可以是:操作數據庫,重新定向網頁。所有程序操作都在服務器端執行,網絡上傳送給客服端的僅是得到的結果,與客戶端的瀏覽器無關。
JSP技術將許多功能封裝起來,成為自定義標簽,根據XML的標准制訂,可以直接供開發人員使用。
(四)JavaBean應用組件技術
提供常用功能可以重復使用,可以讓開發人員將某些功能和核心算法提取出來封裝成為一個組件對象,這樣就增加了代碼的重用率和系統的安全性。
2. 面向對象分析設計思想
在分析項目業務關系的時候,應用一些UML圖,例如用例圖、類圖、時序圖等,這樣可以盡快找出業務邏輯主要面對的對象,然后對每個對象進行行為划分,最后再實現對象間的集成通信。
3 .設計模式和框架結構
如果要是設計一個良好的框架結構,就需要在Java項目實施過程,
有一個設計模式,它決定着項目的應用、部署和實際開發設計。在普通的web項目中很多采用兩層的開發結構,JSP+Servlet 或JSP+JavaBean。它能分有效的分離邏輯開發,使開發人員能專注於各自的開發,也可以使整個開發結構流程更清晰。
4. XML 語言
在服務器和設計模式結構中會應用到自定義文件,而且在應用高級設計時會定義自用的標簽,現在流行的是用XML去定義配置,簡化了數據交換、進程間消息交換這一類的事情,XML的應用大致分為三類:1.間單數據的表示和交換 2.用戶界面相關、表示相關的上下文 3.面向消息的計算
5 .網頁腳本語言
為了提高web項目的整體性能,提高人機交互的友好界面,網頁的腳本語言就會起到一定作用。網頁腳本語言的執行都是客戶端執行的,速度很快,大多數操作與服務器無交互運算。
JavaScript是一種基於對象和事件驅動並具有安全性能的腳本語言。使用它的目的是與HTML超文本標記語言、Java腳本語言一起實現在一個web頁面中鏈接多個對象,與web客戶交互作用。它通過嵌入或調入在標准的HTML語言中實現。它是在程序運行過程中逐行解釋。
6. 數據庫
數據庫(Database)是按照 數據結構來組織、 存儲和管理數據的倉庫
7. 應用服務器
在應用方面,web服務器主要是針對於配置和部署,對目錄的配置,調試,對配置文件屬性的修改;對訪問權限和並發性的控制;java類的部署。
8. 集成開發環境
好的配置環境對項目的幫助也是如虎添翼的。 (這部分來源於網絡)
我弄了兩個系統和截圖,因為一開始按照周日老師講的數據庫連接一直不成功,所以就寫一個建的的連接數據庫表的登陸系統:
一:
1.你覺得網站系統開發需要掌握的技術:數據庫的連接,navicatpremium中表的建立,登陸頁面的設計,登陸頁面照片的 設置,密碼不顯示的設計以及用戶不存在,請輸入密碼和用戶名的設計。
2.源程序代碼
//信1605-1 張迪 20163480
package zzz;
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("C:\\Users\\zhang di\\Pictures\\Saved Pictures\\2.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("C:\\Users\\zhang di\\Pictures\\Saved Pictures\\4.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:3307/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 z";
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 Example1
{
public static void main(String[] args)
{
new A();
}
}
3.結果截圖
二:信1605-1 張迪20163480
1.源程序
1 1.連接數據庫 2 package com.jaovo.msg.Util; 3 import java.sql.*; 4 5 public class DBUtil { 6 public static Connection getConnection() { 7 //加載驅動 8 String dbDrive="com.mysql.jdbc.Driver"; 9 try { 10 try { 11 Class.forName(dbDrive).newInstance(); 12 } catch (InstantiationException e) { 13 14 e.printStackTrace(); 15 } catch (IllegalAccessException e) { 16 17 e.printStackTrace(); 18 } 19 } catch (ClassNotFoundException e) { 20 21 e.printStackTrace(); 22 } 23 //連接數據庫 24 Connection connection=null; 25 String url="jdbc:mysql://localhost:3307/l_user"; 26 try { 27 connection=DriverManager.getConnection(url,"root","root"); 28 } catch (SQLException e) { 29 30 e.printStackTrace(); 31 } 32 return connection; 33 } 34 public static void close(Connection connection ) { 35 try { 36 if (connection != null) { 37 connection.close(); 38 } 39 40 } catch (SQLException e) { 41 // TODO Auto-generated catch block 42 e.printStackTrace(); 43 } 44 } 45 public static void close(PreparedStatement preparedStatement ) { 46 try { 47 if (preparedStatement != null) { 48 preparedStatement.close(); 49 } 50 51 } catch (SQLException e) { 52 53 e.printStackTrace(); 54 } 55 } 56 public static void close(ResultSet resultSet ) { 57 try { 58 if (resultSet != null) { 59 resultSet.close(); 60 } 61 62 } catch (SQLException e) { 63 64 e.printStackTrace(); 65 } 66 } 67 68 }
1 .登錄用戶類 2 package com.jaovo.msg.model; 3 4 public class User { 5 private String name; 6 private String password; 7 public String getName() { 8 return name; 9 } 10 public String getPassword() { 11 return password; 12 } 13 public void setName(String name) { 14 this.name=name; 15 } 16 public void setPassword(String password) { 17 this.password=password; 18 } 19 20 }
4.程序功能方法的借口。 package com.jaovo.msg.dao; import java.util.List; import com.jaovo.msg.model.User; public interface IUserDao { public List<User> load(); public User load(String name); }
1 5.實現功能方法的類。 2 3 package com.jaovo.msg.dao; 4 import com.jaovo.msg.Util.DBUtil; 5 import com.jaovo.msg.model.User; 6 import java.sql.*; 7 import java.util.ArrayList; 8 import java.util.List; 9 public class UserDaoImpl implements IUserDao{ 10 @Override 11 public User load(String name) { 12 13 Connection connection = DBUtil.getConnection(); 14 //准備sql語句 15 String sql = "select * from user3 where user ='"+name+"'"; 16 //創建語句傳輸對象 17 PreparedStatement preparedStatement = null; 18 ResultSet resultSet = null; 19 //集合中只能放入user對象 20 User user = null; 21 try { 22 preparedStatement = connection.prepareStatement(sql); 23 resultSet = preparedStatement.executeQuery(); 24 if(resultSet.next()) { 25 user = new User(); 26 user.setPassword(resultSet.getString("password")); 27 } 28 } catch (SQLException e) { 29 30 e.printStackTrace(); 31 }finally { 32 //關閉資源 33 DBUtil.close(resultSet); 34 DBUtil.close(preparedStatement); 35 DBUtil.close(connection); 36 } 37 return user; 38 } 39 @Override 40 public List<User> load() { 41 Connection connection = DBUtil.getConnection(); 42 //准備sql語句 43 String sql = "select * from user3 "; 44 //創建語句傳輸對象 45 PreparedStatement preparedStatement = null; 46 ResultSet resultSet = null; 47 //集合中只能放入user對象 48 List<User> users = new ArrayList<User>(); 49 User user = null; 50 51 try { 52 preparedStatement = connection.prepareStatement(sql); 53 resultSet = preparedStatement.executeQuery(); 54 while(resultSet.next()) { 55 user = new User(); 56 user.setName(resultSet.getString("user")); 57 user.setPassword(resultSet.getString("password")); 58 users.add(user); 59 } 60 } catch (SQLException e) { 61 62 e.printStackTrace(); 63 }finally { 64 //關閉資源 65 DBUtil.close(resultSet); 66 DBUtil.close(preparedStatement); 67 DBUtil.close(connection); 68 } 69 70 return users; 71 } 72 }
<!-- login.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>用戶登錄</title> </head> <body> <form action="doLogin.jsp" method="get" > <h6>用戶登錄</h6> <table align="center" width="30%" border="1"> <tr><td> 登錄名:</td> s <td><input type=" text" name="username"/></td></tr> <tr><td> 登錄密碼:</td> <td><input type="password" name="password"/></td></tr> <tr><td colspan="2" align="center"><input type="submit" value="登錄" ><td></tr> </table> </form> </body> </html>
1 7.實現用戶登錄。 2 <%@page import="com.jaovo.msg.dao.UserDaoImpl" %> 3 <%@page import="com.jaovo.msg.model.User" %> 4 <%@page import="java.util.List"%> 5 <%@ page language="java" contentType="text/html; charset=UTF-8" 6 pageEncoding="UTF-8"%> 7 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 8 <html> 9 10 <% 11 //接收客戶端傳遞過來的參數 12 String username = request.getParameter("username"); 13 String password = request.getParameter("password"); 14 UserDaoImpl a=new UserDaoImpl(); 15 16 User user=a.load(username); 17 String password1=user.getPassword();//登錄窗口傳遞過來的密碼與數據庫中查詢到的密碼相比較 18 if(password.equals(password1)){ 19 out.println("登錄成功"); 20 } 21 else 22 out.println("輸入密碼或登錄名有錯!"); 23 24 25 %> 26 27 </html>
2.實驗截圖
5.錯誤分析:
一:.
連接數據庫步驟
1.導入java.sql包
import java.sql.*;
2.加載數據庫的連接地址,用戶名和密碼。
Class.forName("com.mysql.jdbc.Driver") ;
3.定義數據庫的鏈接地址,用戶名和密碼。
String user = "root";
String password = "root";
String url = "jdbc:mysql://localhost:3307/jaovo_msg";
4.得到與數據庫的連接對象。
connection = DriverManager.getConnection(url,user,password);
5.聲明sql語句。
String sql = "select * from user1 ";
6.得到語句對象。
preparedStatement = connection.prepareStatement(sql);
7.執行Sql語句。
resultSet = preparedStatement.executeQuery();
8.處理Sql語句的返回語句。
while(resultSet.next()) {
user = new User();
user.setName(resultSet.getString("user"));
user.setPassword(resultSet.getString("password"));
users.add(user);
}
9.關閉對象
DBUtil.close(resultSet);
DBUtil.close(preparedStatement);
DBUtil.close(connection);
2.
由於剛開始這些方法是直接復制的老師的代碼,所以沒改查詢語句中的數據庫表名,也在報錯。后來能運行查詢數據庫表中全部信息的功能,但由於查詢單個用戶的sql語句一直寫錯不能運行查詢單個用戶信息,所以花費了很長時間去檢查出錯的地方和找方法去解決。
3.因為之前jsp的基本語法知識掌握較少,所以編寫的登錄界面較簡單。實現登錄界面的jsp文件的名為doLogin.jsp,但由於之前 <form >標簽中一直寫成dologin.jsp,所以一直不能呈貢跳轉頁面。
三:
希望自己的團隊最后可以開發一個實用好看的系統。
四:
一周至少要總的四天的時間來學習這個系統,很詳細的掌握系統的開發技術。