java数据库登陆页面
下面是一些总结但是部分来源于网络。
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,所以一直不能呈贡跳转页面。
三:
希望自己的团队最后可以开发一个实用好看的系统。
四:
一周至少要总的四天的时间来学习这个系统,很详细的掌握系统的开发技术。