zoukankan      html  css  js  c++  java
  • 软件工程概论——引言课后作业,包括了解开发技术、学习计划,课堂测试内容

    一、Java web开发

    一下的划分并非按技术进行分类,只是个人的一种认识

    1.动态网页技术:静态网页技术HTML的基本知识,servlet、JavaBean、jsp等Java语言层次上的知识以及美化网页的css和增加动态功能的javascript必备的知识

    2.开发工具:数据库(包括JDBC技术)、web服务器(如tomcat)、集成的开发环境(myeclipse或eclipse)

    二、本次课堂测试源代码:一个连接了SQL Server数据库的登录界面的实现

    由于题目是提前公布的,于是我课下多做了些工作,这个题目我用两种方式实现的:

    1.Java swing中自带的框架和组件来构建界面,由于这个方面我比较熟悉,所以我就多写了一个注册界面和登陆成功后的用户个人界面,不过时间有限,写的比较随意简陋:

    数据结构:Student类

     1 public class Student {
     2       private String name;    //姓名
     3       private String pass;     //密码
     4       private String id;         //学号
     5       private String sex;       //性别
     6       private double score;    //分数
     7       private int age;
     8       public Student() {
     9           
    10       }
    11     public String getName() {
    12         return name;
    13     }
    14     public void setName(String name) {
    15         this.name = name;
    16     }
    17     public String getId() {
    18         return id;
    19     }
    20     public void setId(String id) {
    21         this.id = id;
    22     }
    23     public String getSex() {
    24         return sex;
    25     }
    26     public void setSex(String sex) {
    27         this.sex = sex;
    28     }
    29     public double getScore() {
    30         return score;
    31     }
    32     public void setScore(double score) {
    33         this.score = score;
    34     }
    35     public int getAge() {
    36         return age;
    37     }
    38     public void setAge(int age) {
    39         this.age = age;
    40     }
    41     public String getPass() {
    42         return pass;
    43     }
    44     public void setPass(String pass) {
    45         this.pass = pass;
    46     }
    47 }

    工具类:全部为静态成员,包括连接数据库、添加、查找数据库中的成员

      1 package User;
      2 
      3 import java.sql.*;
      4 
      5 public class ConUtil {
      6       public static void InitSQL() {
      7           try {
      8               Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
      9              
     10           }catch(ClassNotFoundException | InstantiationException | IllegalAccessException e) {
     11               System.out.println(e.getMessage());
     12           }
     13           String user = "sa";                //默认就是这个
     14           String password = "******"; //这里输入你密码即可
     15           String url = "jdbc:sqlserver://localhost:1433;DasebaseName=master";
     16          //我使用的表是系统数据库master中我自己新建的表Student_Manage
     17           Connection connection = null;
     18           try {
     19               connection = DriverManager.getConnection(url,user,password);
     20           }catch(SQLException e) {
     21               System.out.println(e.getMessage());
     22           }
     23           ResultSet rs = null;
     24           Statement stmt = null;
     25           try {
     26               stmt = connection.createStatement();
     27             rs = connection.getMetaData().getTables(null,null,"Student_Message",null);
     28             if(!rs.next()) {   //如果数据表不存在则新建
     29                 String query = "create table Student_Message(id varchar(50),pass varchar(50),name nvarchar(50),sex nvarchar(50),score float,age int)";
     30                 stmt.executeQuery(query);
     31             }
     32             rs.close();
     33             stmt.close();
     34             connection.close();
     35         } catch (SQLException e) {
     36             // TODO 自动生成的 catch 块
     37             e.printStackTrace();
     38             System.out.println(e.getMessage());
     39         }
     40       }
     41       public static Connection getConnection() {
     42           try {
     43               Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
     44              
     45           }catch(ClassNotFoundException | InstantiationException | IllegalAccessException e) {
     46               System.out.println(e.getMessage());
     47           }
     48           String user = "sa";
     49           String password = "leomessi10";
     50           String url = "jdbc:sqlserver://localhost:1433;DasebaseName=master";
     51           Connection connection = null;
     52           try {
     53               connection = DriverManager.getConnection(url,user,password);
     54           }catch(SQLException e) {
     55               System.out.println(e.getMessage());
     56           }
     57           return connection;
     58       }
     59       
     60       
     61       public static int add(Student stu) {  //注册时使用
     62           Connection con = getConnection();
     63           String sql = "select * from Student_Message";
     64           PreparedStatement stmt = null;
     65             ResultSet rs = null;
     66             int flag = 1;
     67             try {   //先检查学号信息是否重复
     68               stmt = con.prepareStatement(sql);
     69             rs = stmt.executeQuery();
     70             
     71             while(rs.next()) {
     72                 if(rs.getString("id").equals(stu.getId())) {
     73                     flag = 0;
     74                     break;
     75                 }
     76             }
     77             if(flag==1) {
     78                 stmt = con.prepareStatement("insert into Student_Message values(?, ?, ?, ?, ?, ?)");
     79                 stmt.setString(1,stu.getId());
     80                 stmt.setString(2,stu.getPass());
     81                 stmt.setString(3,stu.getName());
     82                 stmt.setString(4,stu.getSex());
     83                 stmt.setDouble(5,stu.getScore());
     84                 stmt.setInt(6,stu.getAge());
     85                 stmt.executeUpdate();
     86             }
     87             rs.close();
     88             stmt.close();
     89             con.close();
     90         } catch (SQLException e) {
     91             // TODO 自动生成的 catch 块
     92             e.printStackTrace();
     93             System.out.println(e.getMessage());
     94         }
     95         if(flag==1)return 1;
     96         else return 0;
     97       }
     98       
     99       public static Student search(String id,String pass){
    100           //登陆时使用,查找成功则返回对应的Student类对象
    101           Connection con = getConnection();
    102           String sql = "select * from Student_Message";
    103           PreparedStatement stmt = null;
    104             ResultSet rs = null;
    105             Student stu = null;
    106             try {
    107               stmt = con.prepareStatement(sql);
    108             rs = stmt.executeQuery();
    109             
    110             while(rs.next()) {
    111                 if(rs.getString("id").equals(id)&&rs.getString("pass").equals(pass)) {
    112                     stu = new Student();
    113                     stu.setId(id);
    114                     stu.setAge(rs.getInt("age"));
    115                     stu.setName(rs.getString("name"));
    116                     stu.setPass(pass);
    117                     stu.setScore(rs.getDouble("score"));
    118                     stu.setSex(rs.getString("sex"));
    119                     break;
    120                 }
    121             }
    122             rs.close();
    123             stmt.close();
    124             con.close();
    125         } catch (SQLException e) {
    126             // TODO 自动生成的 catch 块
    127             System.out.println(e.getMessage());
    128         }
    129         return stu;
    130       }
    131       public static void update(String id,String pass,String age) {
    132           //修改学生信息,仅限于修改年龄和登陆密码
    133           Connection con = getConnection();
    134           String sql = "update Student_Message set pass = ? , age = ? where id = ?";
    135           PreparedStatement stmt = null;
    136             try {
    137               stmt = con.prepareStatement(sql);
    138             stmt.setString(1,pass);
    139             stmt.setInt(2,Integer.valueOf(age));
    140             stmt.setString(3,id);
    141             stmt.executeUpdate();
    142             stmt.close();
    143             con.close();
    144         } catch (SQLException e) {
    145             // TODO 自动生成的 catch 块
    146             System.out.println(e.getMessage());
    147         }
    148       
    149       }
    150       
    151 }

    界面构建的代码:

     
      1 import javax.swing.*;
      2 import java.awt.CardLayout;
      3 import java.awt.Color;
      4 import java.awt.Font;
      5 import java.awt.Image;
      6 import java.awt.event.ActionEvent;
      7 import java.awt.event.ActionListener;
      8 
      9 public class Login extends JFrame{
     10       Student stu_option = null;
     11       CardLayout card = null;
     12       JPanel Main = null;
     13       JPanel panel1 = null;    //登陆界面
     14       JPanel panel2 = null;    //注册界面
     15       JPanel panel3 = null;    //用户界面
     16       public Login() {
     17           super("乞丐版管理系统");
     18           card = new CardLayout();
     19           Main = new JPanel();
     20           panel1 = new JPanel();
     21           panel2 = new JPanel();
     22           panel3 = new JPanel();
     23           Main.setSize(400,400);
     24           panel1.setSize(400,400);
     25           panel2.setSize(400,400);
     26           panel3.setSize(400,400);
     27           this.setLayout(null);
     28           this.add(Main);
     29           Main.setLayout(card);
     30           Main.add(panel1,"log");
     31           Main.add(panel2,"reg");
     32           Main.add(panel3,"qzone");
     33           
     34           
     35           //登录界面的初始化
     36           panel1.setLayout(null);
     37           JLabel log_id = new JLabel("学号");   
     38           log_id.setFont(new Font("微软雅黑",Font.BOLD,20));
     39           JLabel log_pass = new JLabel("密码");
     40           log_pass.setFont(new Font("微软雅黑",Font.BOLD,20));
     41           JTextField log1_id = new JTextField();
     42           log1_id.setFont(new Font("微软雅黑",Font.BOLD,20));
     43           JPasswordField log1_pass = new JPasswordField();
     44           JButton log_button = new JButton("登陆");
     45           log_button.setFont(new Font("微软雅黑",Font.BOLD,20));
     46           JButton reg_button = new JButton("注册");
     47           reg_button.setFont(new Font("微软雅黑",Font.BOLD,20));
     48           JLabel log_tip = new JLabel();
     49           log_tip.setFont(new Font("微软雅黑",Font.BOLD,20));
     50           
     51           log_id.setBounds(20,50,50,50);   //归置各组件的位置
     52           log1_id.setBounds(100,50,150,50);
     53           log_pass.setBounds(20,110,50,50);
     54           log1_pass.setBounds(100,110,150,50);
     55           log_tip.setBounds(50,170,300,50);
     56          
     57           log_button.setBounds(50,250,100,50);
     58           reg_button.setBounds(200,250,100,50);
     59           
     60           log_button.addActionListener(new ActionListener() {
     61             //为登陆按钮添加监听器
     62             @Override
     63             public void actionPerformed(ActionEvent e) {
     64                 // TODO 自动生成的方法存根
     65                 log_tip.setText("");
     66                 String id = log1_id.getText();
     67                 String pass = new String(log1_pass.getPassword());
     68                 if(id==null||pass==null||
     69                    id.equals("")||pass.equals("")) 
     70                     log_tip.setText("学号或密码不能为空");
     71                 else {
     72                     stu_option = ConUtil.search(id,pass);
     73                     if(stu_option!=null) {
     74                         log_tip.setText("");
     75                         log1_id.setText("");
     76                         log1_pass.setText("");
     77                         
     78                         card.show(Main,"qzone");
     79                     }
     80                     if(stu_option==null) {
     81                         log_tip.setForeground(Color.RED);
     82                         log_tip.setText("学号不存在或密码有误!");
     83                     }
     84                         
     85                 }
     86             }
     87               
     88           });
     89           
     90           reg_button.addActionListener(new ActionListener() {
     91               
     92             @Override
     93             public void actionPerformed(ActionEvent e) {
     94                 // TODO 自动生成的方法存根
     95                 log_tip.setText("");
     96                 log1_id.setText("");
     97                 log1_pass.setText("");
     98                 card.show(Main, "reg");
     99             }
    100               
    101           });
    102           
    103           panel1.add(log_id);        //添加各个组件
    104           panel1.add(log_pass);
    105           panel1.add(log1_pass);
    106           panel1.add(log1_id);
    107           panel1.add(log_tip);
    108           panel1.add(log_button);
    109           panel1.add(reg_button);
    110           
    111           
    112           //注册界面的初始化
    113           panel2.setLayout(null);
    114           JLabel reg_id = new JLabel("学号");
    115           reg_id.setFont(new Font("微软雅黑",Font.BOLD,20));
    116           reg_id.setBounds(10,10,50,50);
    117           JTextField reg1_id = new JTextField();
    118           reg1_id.setFont(new Font("微软雅黑",Font.BOLD,20));
    119           reg1_id.setBounds(60,10,150,50);
    120           JLabel reg_pass = new JLabel("密码");
    121           reg_pass.setBounds(10,60,50,50);
    122           reg_pass.setFont(new Font("微软雅黑",Font.BOLD,20));
    123           JTextField reg1_pass = new JTextField();
    124           reg1_pass.setBounds(60,60,150,50);
    125           JLabel reg_sex = new JLabel("性别");
    126           reg_sex.setFont(new Font("微软雅黑",Font.BOLD,20));
    127           reg_sex.setBounds(10,110,50,50);
    128           JComboBox <String>sex1 = new JComboBox <String>();
    129           sex1.addItem("男");
    130           sex1.addItem("女");
    131           sex1.setBounds(60,110,100,50);
    132           JLabel reg_name = new JLabel("姓名");
    133           reg_name.setFont(new Font("微软雅黑",Font.BOLD,20));
    134           reg_name.setBounds(10,160,50,50);
    135           JTextField reg1_name = new JTextField();
    136           reg1_name.setFont(new Font("微软雅黑",Font.BOLD,20));
    137           reg1_name.setBounds(60,160,150,50);
    138           JLabel reg_mark = new JLabel("分数");
    139           reg_mark.setFont(new Font("微软雅黑",Font.BOLD,20));
    140           reg_mark.setBounds(10,210,50,50);
    141           JTextField reg1_mark = new JTextField();
    142           reg1_mark.setBounds(60,210,150,50);
    143           JLabel reg_age= new JLabel("年龄");
    144           reg_age.setFont(new Font("微软雅黑",Font.BOLD,20));
    145           reg_age.setBounds(10,260,50,50);
    146           JTextField reg1_age = new JTextField();
    147           reg1_age.setBounds(60,260,150,50);
    148           JButton reg = new JButton("确认注册");
    149           reg.setFont(new Font("微软雅黑",Font.BOLD,20));
    150           reg.setBounds(50,310,150,50);
    151           reg.addActionListener(new ActionListener() {
    152 
    153             @Override
    154             public void actionPerformed(ActionEvent e) {
    155                 // TODO 自动生成的方法存根
    156                 if(e.getActionCommand().equals("确认注册")) {
    157                     String name = reg1_name.getText();
    158                     String id = reg1_id.getText();
    159                     String sex = (String)sex1.getSelectedItem();
    160                     String pass = reg1_pass.getText();
    161                     String mark = reg1_mark.getText();
    162                     String age = reg1_age.getText();
    163                     if(name==null||id==null||
    164                        sex==null||pass==null||
    165                        mark==null||age==null||
    166                        name.equals("")||id.equals("")||
    167                        sex.equals("")||pass.equals("")||
    168                        mark.equals("")||age.equals(""))
    169                         reg1_name.setText("不能为空!");
    170                     else {
    171                         double mark1 = Double.valueOf(mark);
    172                         int age1 = Integer.valueOf(age);
    173                         Student stu = new Student();
    174                         stu.setAge(age1);
    175                         stu.setId(id);
    176                         stu.setName(name);
    177                         stu.setSex(sex);
    178                         stu.setPass(pass);
    179                         stu.setScore(mark1);
    180                         ConUtil.add(stu);
    181                         reg.setText("返回登陆");
    182                         
    183                     }
    184                     
    185                 }
    186                 else if(e.getActionCommand().equals("返回登陆")) {
    187                     reg1_name.setText("");
    188                     reg1_id.setText("");
    189                     reg1_pass.setText("");
    190                     reg1_mark.setText("");
    191                     reg1_age.setText("");
    192                     card.show(Main,"log");
    193                 }
    194             }
    195               
    196           });
    197           
    198           panel2.add(reg_id);
    199           panel2.add(reg1_id);
    200           panel2.add(reg_pass);
    201           panel2.add(reg1_pass);
    202           panel2.add(reg_sex);
    203           panel2.add(sex1);
    204           panel2.add(reg_name);
    205           panel2.add(reg1_name);
    206           panel2.add(reg_mark);
    207           panel2.add(reg1_mark);
    208           panel2.add(reg_age);
    209           panel2.add(reg1_age);
    210           panel2.add(reg);
    211           
    212           
    213           //用户界面的设计
    214          
    215           panel3.setLayout(null);
    216           JLabel title = new JLabel("学生空间");
    217           title.setFont(new Font("微软雅黑",Font.BOLD,17));
    218           title.setForeground(Color.RED);
    219           title.setBounds(10,10,90,50);
    220           JButton button_update = new JButton("修改信息");
    221           button_update.setFont(new Font("微软雅黑",Font.BOLD,15));
    222           button_update.setBounds(0,60,100,50);
    223           JButton button_chart = new JButton("个人课表");
    224           button_chart.setBounds(0,110,100,50);
    225           button_chart.setFont(new Font("微软雅黑",Font.BOLD,15));
    226           JButton button_mark = new JButton("个人成绩");
    227           button_mark.setBounds(0,160,100,50);
    228           button_mark.setFont(new Font("微软雅黑",Font.BOLD,15));
    229           panel3.add(title);
    230           panel3.add(button_update);
    231           panel3.add(button_chart);
    232           panel3.add(button_mark);
    233           
    234           
    235           
    236           //用户界面的分界面
    237           JPanel userFrame = new JPanel();
    238           CardLayout card1 = new CardLayout();
    239           userFrame.setSize(300,400);
    240           userFrame.setLayout(card1);
    241           userFrame.setBounds(100,0,300,400);
    242           panel3.add(userFrame);
    243           JPanel[]user = new JPanel[3];
    244           for(int i = 0;i<3;++i) {
    245               user[i] = new JPanel();
    246               user[i].setLayout(null);
    247               user[i].setSize(300,400);
    248           }
    249           
    250           userFrame.add(user[1],"chart");
    251           userFrame.add(user[2],"mark");
    252           userFrame.add(user[0],"update");
    253           
    254          
    255           
    256           
    257           
    258           //修改信息界面
    259           JLabel update_title = new JLabel("修改信息");
    260           update_title.setFont(new Font("微软雅黑",Font.BOLD,15));
    261           update_title.setBounds(50,0,100,50);
    262           JLabel update_age = new JLabel("年龄");
    263           update_age.setFont(new Font("微软雅黑",Font.BOLD,15));
    264           update_age.setBounds(10,50,50,50);
    265           JTextField update_age1 = new JTextField();
    266           update_age1.setFont(new Font("微软雅黑",Font.BOLD,15));
    267           update_age1.setBounds(10,50,100,50);
    268           JLabel update_pass = new JLabel("密码");
    269           update_pass.setFont(new Font("微软雅黑",Font.BOLD,15));
    270           update_pass.setBounds(10,100,50,50);
    271           JTextField update_pass1 = new JTextField();
    272           update_pass1.setFont(new Font("微软雅黑",Font.BOLD,15));
    273           update_pass1.setBounds(10,150,100,50);
    274           JButton update_button = new JButton("确认");
    275           update_button.setFont(new Font("微软雅黑",Font.BOLD,15));
    276           update_button.setBounds(100,200,100,50);
    277           user[0].add(update_title);
    278           user[0].add(update_pass);
    279           user[0].add(update_pass1);
    280           user[0].add(update_age1);
    281           user[0].add(update_age);
    282           user[0].add(update_pass);
    283           user[0].add(update_pass1);
    284           user[0].add(update_button);
    285           update_button.addActionListener(new ActionListener() {
    286               public void actionPerformed(ActionEvent e) {
    287                   String pass = update_pass1.getText();
    288                   String age = update_age1.getText();
    289                   if(pass.equals("")||age.equals(""))
    290                       update_pass1.setText("不能为空!");
    291                   else {
    292                       ConUtil.update(stu_option.getId(), pass, age);
    293                   }
    294               }
    295           });
    296           
    297           //个人课表
    298           JLabel tips = new JLabel("暂无服务");
    299           tips.setFont(new Font("微软雅黑",Font.BOLD,20));
    300           tips.setBounds(50,50,100,50);
    301           JLabel image = new JLabel(new ImageIcon("logo.jpg"));
    302           image.setBounds(80,150,100,100);
    303           user[1].add(tips);
    304           user[1].add(image);
    305           
    306           
    307           //个人成绩
    308           JLabel table = new JLabel("学号:姓名:成绩");
    309           table.setBounds(10,10,200,100);
    310           JLabel image1 = new JLabel(new ImageIcon("image1.jpg"));
    311           JScrollPane jsp = new JScrollPane(image1,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    312           jsp.setBounds(0,120,250,200);
    313           user[2].add(table);
    314           user[2].add(jsp); 
    315           
    316           button_update.addActionListener(new ActionListener() {
    317               public void actionPerformed(ActionEvent e) {
    318                   update_age1.setText(String.valueOf(stu_option.getAge()));
    319                   System.out.println(stu_option.getAge());
    320                   update_pass1.setText(stu_option.getPass());
    321                   card1.show(userFrame,"update");
    322               }
    323           });
    324           
    325           button_chart.addActionListener(new ActionListener() {
    326               public void actionPerformed(ActionEvent e) {
    327                   card1.show(userFrame,"chart");
    328               }
    329           });
    330           
    331           button_mark.addActionListener(new ActionListener() {
    332               public void actionPerformed(ActionEvent e) {
    333                   table.setText("姓名:"+stu_option.getName()+" 综合成绩:"+stu_option.getScore());
    334                   card1.show(userFrame,"mark");
    335               }
    336           });
    337           
    338           this.setVisible(true);
    339           this.setResizable(false);
    340           this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    341           this.setSize(400,400);
    342       }
    343       public static void main(String[]args) {
    344           ConUtil.InitSQL();
    345           SwingUtilities.invokeLater(new Runnable() {
    346               public void run() {
    347                   try {
    348                       UIManager.setLookAndFeel(UIManager      //UIManager界面管理,可以改变当前界面的风格
    349                               .getSystemLookAndFeelClassName());  //选择当前系统的界面风格
    350                   } catch (Exception exception) {
    351                       exception.printStackTrace();
    352                   }
    353                   new Login();
    354               }
    355           });
    356           
    357       }
    358 }

    放几张验证截图:

    注册界面

    登陆界面:

    登陆成功后显示个人空间:

    2.正经的用jsp那一套东西来写一个简单的登陆界面:

    首先利用.Java文件完成基本操作,连接数据库、添加、查找数据库中的成员,还有一些异常情况

    不过这次我没有把创建表的操作写在代码中,需要手动在SQL Server中建立

    UserException.Java

     1 public class UserException extends RuntimeException{
     2     public UserException() {
     3           super();
     4     }
     5 
     6     public UserException(String arg0, Throwable arg1, boolean arg2, boolean arg3) {
     7         super(arg0, arg1, arg2, arg3);
     8         // TODO 自动生成的构造函数存根
     9     }
    10 
    11     public UserException(String arg0, Throwable arg1) {
    12         super(arg0, arg1);
    13         // TODO 自动生成的构造函数存根
    14     }
    15 
    16     public UserException(String arg0) {
    17         super(arg0);
    18         // TODO 自动生成的构造函数存根
    19     }
    20 
    21     public UserException(Throwable arg0) {
    22         super(arg0);
    23         // TODO 自动生成的构造函数存根
    24     }
    25       
    26 }

    User.Java

     1 public class User {
     2     private int id;
     3     private String username;
     4     private String password;
     5     private String nickname;
     6     public int getId() {
     7         return id;
     8     }
     9     public void setId(int id) {
    10         this.id = id;
    11     }
    12     public String getUsername() {
    13         return username;
    14     }
    15     public void setUsername(String username) {
    16         this.username = username;
    17     }
    18     public String getPassword() {
    19         return password;
    20     }
    21     public void setPassword(String password) {
    22         this.password = password;
    23     }
    24     public String getNickname() {
    25         return nickname;
    26     }
    27     public void setNickname(String nickname) {
    28         this.nickname = nickname;
    29     }
    30 }

    DBUtil.Java

     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.PreparedStatement;
     4 import java.sql.ResultSet;
     5 import java.sql.SQLException;
     6 
     7 public class DBUtil {
     8       public static Connection getConnection() {
     9           try {
    10               Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    11              
    12           }catch(ClassNotFoundException | InstantiationException | IllegalAccessException e) {
    13               System.out.println(e.getMessage());
    14           }
    15           String user = "sa";      //和上面的例子一样,不过这次换了个表
    16           String password = "******";
    17           String url = "jdbc:sqlserver://localhost:1433;DasebaseName=master";
    18           Connection connection = null;
    19           try {
    20               connection = DriverManager.getConnection(url,user,password);
    21           }catch(SQLException e) {
    22               System.out.println(e.getMessage());
    23           }
    24           return connection;
    25       }
    26       
    27       public static void close(Connection connection) {
    28          
    29             try { 
    30                 if(connection!=null)
    31                      connection.close();
    32             } catch (SQLException e) {
    33                 // TODO 自动生成的 catch 块
    34                 System.out.println(e.getMessage());
    35             }
    36       }
    37       
    38       public static void close(PreparedStatement preparedStatement) {
    39           
    40             try {
    41                 if(preparedStatement!=null)
    42                      preparedStatement.close();
    43             } catch (SQLException e) {
    44                 // TODO 自动生成的 catch 块
    45                 System.out.println(e.getMessage());
    46             }
    47       }
    48       
    49       public static void close(ResultSet resultSet) {
    50          
    51             try { 
    52                 if(resultSet!=null)
    53                      resultSet.close();
    54             } catch (SQLException e) {
    55                 // TODO 自动生成的 catch 块
    56                 System.out.println(e.getMessage());
    57             }
    58       }
    59 }

    UserDao.Java

      1 import java.sql.Connection;
      2 import java.sql.PreparedStatement;
      3 import java.sql.ResultSet;
      4 import java.sql.SQLException;
      5 import java.util.ArrayList;
      6 import java.util.List;
      7 
      8 import msg.Util.DBUtil;
      9 import msg.Util.UserException;
     10 import msg.Util.User;
     11 
     12 public class UserDao{
     13 
     14     
     15     public void add(User user) {
     16         Connection connection = DBUtil.getConnection();
     17         String sql = "select count(*) from t_user where username = ?";
     18         PreparedStatement preparedStatement = null;
     19         ResultSet resultSet = null;
     20         try {
     21             preparedStatement = connection.prepareStatement(sql);
     22             preparedStatement.setString(1,user.getUsername());
     23             resultSet = preparedStatement.executeQuery();
     24             while(resultSet.next()) {
     25                 if(resultSet.getInt(1)>0)throw new UserException("用户已存在");
     26             }
     27             sql = "insert into t_user(username,password,nickname) values(?,?,?)";
     28             preparedStatement = connection.prepareStatement(sql);
     29             preparedStatement.setString(1,user.getUsername());
     30             preparedStatement.setString(2,user.getPassword());
     31             preparedStatement.setString(3,user.getNickname());
     32             preparedStatement.executeUpdate();
     33         } catch (SQLException e) {
     34             // TODO 自动生成的 catch 块
     35             System.out.println(e.getMessage());
     36         }finally {
     37             DBUtil.close(resultSet);
     38             DBUtil.close(preparedStatement);
     39             DBUtil.close(connection);
     40         }
     41         
     42     }
     43  
     44      
     45     public void delete(int id) {
     46     
     47         Connection connection = DBUtil.getConnection();
     48         String sql = "delete from t_user where id = ?";
     49         PreparedStatement preparedStatement = null;
     50         try {
     51             preparedStatement = connection.prepareStatement(sql);
     52             preparedStatement.setInt(1, id);
     53             preparedStatement.executeUpdate();
     54         } catch (SQLException e) {
     55             // TODO 自动生成的 catch 块
     56             System.out.println(e.getMessage());
     57         }
     58         finally {
     59             DBUtil.close(preparedStatement);
     60             DBUtil.close(connection);
     61         }
     62     }
     63     
     64     
     65     public void delete(String username) {
     66         Connection connection = DBUtil.getConnection();
     67         String sql = "delete from t_user where username = ?";
     68         PreparedStatement preparedStatement = null;
     69         try {
     70             preparedStatement = connection.prepareStatement(sql);
     71             preparedStatement.setString(1, username);
     72             preparedStatement.executeUpdate();
     73         } catch (SQLException e) {
     74             // TODO 自动生成的 catch 块
     75             System.out.println(e.getMessage());
     76         }
     77         finally {
     78             DBUtil.close(preparedStatement);
     79             DBUtil.close(connection);
     80         }
     81     }
     82 
     83     
     84     public void update(User user) {
     85         
     86         Connection connection = DBUtil.getConnection();
     87         String sql = "update t_user set password = ? , nickname = ? where id = ?";
     88         PreparedStatement preparedStatement= null;
     89         
     90         try {
     91             preparedStatement= connection.prepareStatement(sql);
     92             preparedStatement.setString(1, user.getPassword());
     93             preparedStatement.setString(2, user.getNickname());
     94             preparedStatement.setInt(3, user.getId());
     95             preparedStatement.executeUpdate();
     96         } catch (SQLException e) {
     97             // TODO 自动生成的 catch 块
     98             System.out.println(e.getMessage());
     99         }finally {
    100             DBUtil.close(preparedStatement);
    101             DBUtil.close(connection);
    102         }
    103         
    104     }
    105 
    106     
    107     public User load(int id) {
    108     
    109         Connection connection = DBUtil.getConnection();
    110         String sql = "select * from t_user where id = ?";
    111         PreparedStatement preparedStatement = null;
    112         User user = null;
    113         ResultSet resultSet = null;
    114         try {
    115             preparedStatement = connection.prepareStatement(sql);
    116             preparedStatement.setInt(1, id);
    117             resultSet = preparedStatement.executeQuery();
    118             while(resultSet.next()) {
    119                 user = new User();
    120                 user.setId(id);
    121                 user.setUsername(resultSet.getString("username"));
    122                 user.setPassword(resultSet.getString("password"));
    123                 user.setNickname(resultSet.getString("nickname"));
    124             }
    125         } catch (SQLException e) {
    126             // TODO 自动生成的 catch 块
    127             System.out.println(e.getMessage());
    128         }finally {
    129             DBUtil.close(resultSet);
    130             DBUtil.close(preparedStatement);
    131             DBUtil.close(connection);
    132         }
    133         return user;
    134     }
    135 
    136 
    137     public User load(String username) {
    138         Connection connection = DBUtil.getConnection();
    139         String sql = "select * from t_user where username = ?";
    140         PreparedStatement preparedStatement = null;
    141         User user = null;
    142         ResultSet resultSet = null;
    143         try {
    144             preparedStatement = connection.prepareStatement(sql);
    145             preparedStatement.setString(1, username);
    146             resultSet = preparedStatement.executeQuery();
    147             while(resultSet.next()) {
    148                 
    149                 user = new User();
    150                 user.setId(resultSet.getInt("id"));
    151                 user.setUsername(resultSet.getString("username"));
    152                 user.setPassword(resultSet.getString("password"));
    153                 user.setNickname(resultSet.getString("nickname"));
    154             }
    155         } catch (SQLException e) {
    156             // TODO 自动生成的 catch 块
    157             System.out.println(e.getMessage());
    158         }finally {
    159             DBUtil.close(resultSet);
    160             DBUtil.close(preparedStatement);
    161             DBUtil.close(connection);
    162         }
    163         return user;
    164     }
    165     public List<User> load() {
    166         Connection connection = DBUtil.getConnection();
    167         String sql = "select * from t_user";
    168         PreparedStatement preparedStatement = null;
    169         ResultSet resultSet = null;
    170         List<User> users = new ArrayList<User>();
    171         User user = null;
    172         try {
    173             preparedStatement = connection.prepareStatement(sql);
    174             resultSet = preparedStatement.executeQuery();
    175             while(resultSet.next()) {
    176                 user = new User();
    177                 user.setId(resultSet.getInt("id"));
    178                 user.setUsername(resultSet.getString("username"));
    179                 user.setPassword(resultSet.getString("password"));
    180                 user.setNickname(resultSet.getString("nickname"));
    181                 users.add(user);
    182             }
    183         } catch (SQLException e) {
    184             // TODO 自动生成的 catch 块
    185             System.out.println(e.getMessage());
    186         }finally {
    187             DBUtil.close(resultSet);
    188             DBUtil.close(preparedStatement);
    189             DBUtil.close(connection);
    190         }
    191         return users;
    192     }
    193     
    194 }

    接下来就是jsp中的代码:

    menu.jsp

     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     2 <html>
     3 <head>
     4 <%@ page language="java" contentType="text/html; charset=UTF-8"
     5     pageEncoding="UTF-8"%>
     6 
     7 <title>菜单界面</title>
     8 </head>
     9 <body>
    10 
    11 <a href="addInput.jsp">用户注册界面</a><br>
    12 <a href="loginInput.jsp">用户登陆界面</a><br>
    13 
    14 </body>
    15 </html>

    用户注册界面:addInput.jsp

     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     2 <html>
     3 <head>
     4 <%@ page language="java" contentType="text/html; charset=UTF-8"
     5     pageEncoding="UTF-8"%>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>用户添加页面</title>
     8 </head>
     9 <body>
    10   
    11       <%
    12             String tip = (String)request.getAttribute("error");
    13             if(tip==null)tip = "";
    14       %>
    15      
    16       <div align="center">用户添加界面</div>
    17       <form action="add.jsp" method="get">
    18            <table align="center" border="1" width="500">
    19                <tr>
    20                    <td>用户名称:</td>
    21                    <td>
    22                         <input type="text" name="username" />
    23                    </td>
    24                 </tr>
    25                 <tr>
    26                 <td>用户密码:</td>
    27                 <td>
    28                         <input type="password" name="password" />
    29                 </td>
    30                    </tr>
    31                <tr>
    32                 <td>用户昵称:</td>
    33                 <td>
    34                         <input type="text" name="nickname" />
    35                 </td>
    36                    </tr>  
    37                    <tr align="center">
    38                        <td colspan="2">
    39                           <input type="submit" value="提交" />
    40                           <input type="reset" value="重置" />
    41                         </td>
    42                     </tr>    
    43            </table>
    44        
    45       </form>
    46          <div align="center"><%=tip %></div>
    47 </body>
    48 </html>

    后台处理注册请求:add.jsp

     1 <%@page import="msg.Util.User"%>
     2 <%@page import="msg.Util.UserException" %>
     3 <%@page import="msg.Util.UserDao" %>
     4 
     5 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     6 <html>
     7 
     8 <%@ page language="java" contentType="text/html; charset=UTF-8"
     9     pageEncoding="UTF-8"%>
    10 <%
    11     //接收客户端传递过来的参数
    12     String username = request.getParameter("username");
    13     String password = request.getParameter("password");
    14     String nickname = request.getParameter("nickname");
    15     
    16     if(username==null||"".equals(username.trim())){
    17         
    18         request.setAttribute("error","用户名不能为空");
    19     
    20 %>
    21     <jsp:forward page = "addInput.jsp"></jsp:forward>
    22 <%
    23     }
    24     User user = new User();
    25     user.setUsername(username);
    26     user.setPassword(password);
    27     user.setNickname(nickname);
    28     
    29     UserDao userDao = new UserDao();
    30     try{
    31     userDao.add(user);    
    32     
    33  %>
    34 
    35      用户保存成功!!<br>
    36    <a href="menu.jsp">返回主界面</a><br> 
    37 <%
    38     }catch(UserException e){
    39 %>        <h2 style="color:red;font-size:50px">发生错误<%=e.getMessage() %></h2>
    40         <a href="addInput.jsp">返回用户添加界面</a><br>
    41     <%
    42     }
    43     %>
    44     
    45 
    46 
    47 </html>

    登录界面:login.jsp

     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     2 <html>
     3 <head>
     4 <%@ page language="java" contentType="text/html; charset=UTF-8"
     5     pageEncoding="UTF-8"%>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>用户登陆</title>
     8 </head>
     9 <body>
    10  <%
    11             String tip = (String)request.getAttribute("error");
    12             if(tip==null)tip = "";
    13       %>
    14      
    15       <div align="center">用户登陆界面</div>
    16       <form action="login.jsp" method="get">
    17            <table align="center" border="1" width="500">
    18                <tr>
    19                    <td>用户名称:</td>
    20                    <td>
    21                         <input type="text" name="username" />
    22                    </td>
    23                 </tr>
    24                 <tr>
    25                 <td>用户密码:</td>
    26                 <td>
    27                         <input type="password" name="password" />
    28                 </td>
    29                    </tr>
    30                    <tr align="center">
    31                        <td colspan="2">
    32                           <input type="submit" value="登陆" />
    33                           <input type="reset" value="重置" />
    34                         </td>
    35                     </tr>    
    36            </table>
    37        
    38       </form>
    39          <div align="center"><%=tip %></div>
    40 </body>
    41 </html>

    处理登陆界面:loginInput.jsp

     1 <%@page import="msg.Util.UserDao" %>
     2 <%@page import="msg.Util.User"%>
     3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     4 <html>
     5 <head>
     6 <%@ page language="java" contentType="text/html; charset=UTF-8"
     7     pageEncoding="UTF-8"%>
     8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     9 <title>用户登陆</title>
    10 </head>
    11 <body>
    12     
    13 <%
    14     String username = request.getParameter("username");
    15     String password = request.getParameter("password");
    16     
    17     if(username==null||"".equals(username.trim())){
    18         request.setAttribute("error","用户名不能为空");
    19 %>
    20    <jsp:forward page = "loginInput.jsp"></jsp:forward>  
    21 <%
    22 }
    23     if(password==null||"".equals(password)){
    24          request.setAttribute("passerror","密码不能为空");
    25     
    26 %>
    27     <jsp:forward page = "loginInput.jsp"></jsp:forward>  
    28 <%
    29     }
    30     User user = null;
    31     user = new UserDao().load(username);
    32     if(user==null){   
    33         request.setAttribute("error","该用户不存在");
    34 %>
    35     <jsp:forward page = "loginInput.jsp"></jsp:forward> 
    36 <%
    37     }   
    38     else if(!user.getPassword().equals(password)){
    39         request.setAttribute("error","密码错误");
    40 %>
    41     <jsp:forward page = "loginInput.jsp"></jsp:forward> 
    42 <%
    43     }
    44     else{
    45         request.setAttribute("login",user);
    46 %>   
    47     <jsp:forward page = "qzone.jsp"></jsp:forward> 
    48     <%
    49     }
    50     %>
    51 </body>
    52 </html>

    登录后用户个人空间:qzone.jsp

    <%@page import="msg.Util.User"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>个人主页</title>
    </head>
    <body>
    <%
         User user = (User)request.getAttribute("login");
    %>
         <div align="center"><%=user.getUsername() %>,你好</div><br>
         <div align="center">当前没有更多服务内容</div>
         <a href="menu.jsp">退出账户</a>
    </body>
    </html>

    验证截图:

    主界面:

    点击注册:

    点击提交后:

    返回主界面后,选择登陆:

    登陆成功后界面:

    点击退出账户后,会返回主界面

    三、讲讲目标和计划

    其实我个人没什么别的想法,也谈不上有什么计划,目前的想法就是课下靠自己学习Java web的技术,能够形成独立构建网站的能力。

    现在的想法是每天至少得投入两个到三个小时学习Java web的内容,这需要耐心,我得慢慢来。

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    END

  • 相关阅读:
    ROS Learning-015 learning_tf(编程) 编写一个监听器程序 (Python版)
    ROS Learning-014 learning_tf(编程) 坐标系变换(tf)广播员 (Python版)
    2019-05-12 Jave学习日记之运算符&if语句
    2019-05-11 Jave学习日记之进制运算&数据类型
    OpenSession与getCurrentSession的区别
    Hibernate----Hibernate小配置
    Hibernate----配置文件Hibernate.cfg.xml
    SpringMVC
    WebService
    Javamail
  • 原文地址:https://www.cnblogs.com/messi2017/p/7885582.html
Copyright © 2011-2022 走看看