zoukankan      html  css  js  c++  java
  • 软件工程概论 第一课:课后作业1

    一、网站系统开发需要掌握的技术;
    1、界面和用户体验:

      ①要了解Web在各大浏览器的执行情况,必须保证站点在主要浏览器上都能正常运行。至少要测试Gecko、Webkit、IE和Opera等引擎。不同的操作系统,可能也会影响浏览器如何呈现网站。除了浏览器,网站还有其他使用方式:手机、搜索引擎等等。应该充分了解这些情况下,网站的运行状况。

      ②知道怎么能在基本不影响用户使用的情况下升级网站。通常来说,必须有版本控制系统和数据备份机制。

      ③保密性,不要直接显示用户的Email地址和各项信息,至少不要用纯文本显示。

      ④作为一个友好的网站,不要让用户看到那些不友好的出错提示。

      ⑤为你的网站设置一些合理的使用限制,一旦超过门槛值,就自动停止服务,这与网站安全相关。

      ⑥知道如何实现网页的渐进式增强。

      ⑦用户发出POST请求后,总是将其重导向至另外一个网页。

      ⑧不要忘记网站的可访问性,比如要考虑残疾人如何使用网站。

    2、安全性:

      ①阅读《OWASP开发指南》,它提供了全面的网站安全指导。

      ②永远不要信任用户提交的数据

      ③了解SQL注入及其预防方法,做好安全措施,防止信息泄露。

      ④不要明文储存用户的密码,要hash处理后再储存。

      ⑤不要对你的用户认证系统太自信,它可能很容易就被攻破,并不是那么安全,总会有人去找出一些漏洞,要提早意识到这个问题。

      ⑥在登录页面及其他处理敏感信息的页面,使用SSL、HTTPS。

      ⑦了解如何处理信用卡。

      ⑧要了解如何对付session劫持。

      ⑨避免“跨站点执行”。

      ⑩避免“跨域伪造请求”。

      除此之外,还有一些要注意的地方:

      及时打上补丁,让系统始终跟上最新版本。确认数据库连接信息的安全性。跟踪攻击技术的最新发展,以及使用的平台的最新安全漏洞。阅读Google的《浏览器安全手册》。阅读《网络软件的黑客手册》。

    3、性能:

      ①只要有可能,就使用缓存。要正确理解和使用Http caching与HTML5离线储存。

      ②优化图片。不要把一个图片文件,作为重复出现的网页背景图案。

      ③学习如何用gzip和deflate内容。

      ④将多个样式表文件或脚本文件,合为一个文件,这样可以减少浏览器的http请求数,以及减小gzip压缩后的文件总体积。

      ⑤如果你的网页用到大量的小体积图片(比如工具栏),就应该使用Css image script,目的是减少http请求数。

      ⑥大流量的网站应该考虑将网页对象分布在多个域名。

      ⑦静态内容都应该放在一个不需要使用cookie的独立域名之上。因为域名之下如果有,那么客户端向该域名发出的每次http请求,都会附上cookie内容。这里的一个好方法就是使用"内容分发网络"。

      ⑧将浏览器完成网页渲染所需要的http请求数最小化。

      ⑨使用Google的Closure Complier压缩JavaScript文件,YUI Compresser亦可。

      ⑩确保网站根目录下有favicon.ico文件,因为即使网页中根本不包括这个文件,浏览器也会自动发出对它的请求。如果这个文件不存在,就会产生大量的404错误,消耗光服务器的带宽。

    4、搜索引擎优化:

      ①使用"搜索引擎友好"的URL形式,比如example.com/pages/45-article-title,而不是example.com/index.php?page=45。

      ②不要使用"点击这里"之类的超级链接,因为这样等于浪费了一个SEO机会,而且降低了"屏幕朗读器"的使用效果。

      ③创建一个XML sitemap文件,它的缺省位置一般是/sitemap.xml(即放在网站根目录下)。

      ④当你有多个URL指向同一个内容时,在网页代码中使用<link rel ="canonical ".../>。

      ⑤使用Google的 Webmaster  Tools和Yahoo的 Site Explorer。

      ⑥从一开始就使用Google Analyties。

      ⑦知道robots.txt的作用,以及搜索引擎蜘蛛的工作原理。

      ⑧将www.example.com的访问请求导向example.com,或者采用相反的做法,目的是防止Google把它们当做两个网站,分开计算排名。

      ⑨知道存在着恶意或行为不正当的网络蜘蛛。

      ⑩如果网站有非文本的内容(比如视频、音频等等),你应该参考Google的sitemap扩展协议。

    5、技术:

      ①理解HTTP协议,诸如GET、POST、sessions、cookies之类的概念,包括"无状态"是什么意思。

      ②确保XHTML和HTML和CSS符合W3C标准,使得它们能够通过检验。这可以使网页避免触发浏览器的古怪行为,而且使它在"屏幕朗读器"和手机上也能正常工作。

      ③理解浏览器如何处理JavaScript脚本。

      ④理解网页上的JavaScript文件、样式表文件和其他资源是如何装载及运行的,考虑它们对页面性能有何影响。在某些情况下,可能应该将脚本文件放置在网页的尾部。

      ⑤理解JavaScript沙箱的工作原理,尤其是如果打算使用iframe。

      ⑥了解301重定向和302重定向之间的区别(这也是一个SEO相关问题)。

      ⑦知道JavaScript可能无法使用或被禁用,以及Ajax并不是一定会运行。"不允许脚本运行"正在某些用户中变得流行,手机浏览器对脚本的支持千差万别,而Google索引网页时不运行大部分的脚本文件。

      ⑧尽可能多得了解部署平台。

      ⑨考虑使用样式表重置。

      ⑩考虑使用JavaScript框架,使用它们可以不用考虑浏览器之间的差异。

    6、解决bug:

      ①建立一个有效的错误报告机制。

      ②程序员20%的时间用于编码,80%的时间用于维护,根据这一点相应合理的安排时间。

      ③建立某些途径或系统,让用户可以与后台接触,提出建议和批评。

      ④为将来的维护和客服人员撰写文档,解释清楚系统是怎么运行的。

      ⑤除了备份机制,你还必须有一个恢复机制。

      ⑥使用某种版本控制系统储存你的文件,比如Subversion或Git。

      ⑦不要忘记做单元测试,Selenium之类的框架会有用。

    二、本次课堂测试的源程序代码:

    IUserDao.java:

     1 package com.user.gb.dao;
     2 import java.util.List;
     3 import com.user.gb.model.User;
     4 public interface IUserDao 
     5 {
     6     public void add(User user);
     7     public void delete(String username);
     8     public void update(User user);
     9     public User load(int id);
    10     public User load(String username);
    11     public List<User> load();
    12 }        

    UserDaoImpl.java:

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

    User.java:

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

    UserException.java:

     1 package com.user.gb.model;
     2 public class UserException extends RuntimeException
     3 {
     4     public UserException() 
     5     {
     6         super();
     7     }
     8     public UserException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) 
     9     {
    10         super(message, cause, enableSuppression,         writableStackTrace);
    11     }
    12     public UserException(String message, Throwable cause) 
    13     {
    14         super(message, cause);
    15     }
    16     public UserException(String message) 
    17     {
    18         super(message);
    19     }
    20     public UserException(Throwable cause) 
    21     {
    22         super(cause);
    23     }
    24 }    

    GBUtil.java:

     1 package com.user.gb.Util;
     2 import java.sql.Connection;
     3 import java.sql.DriverManager;
     4 import java.sql.PreparedStatement;
     5 import java.sql.ResultSet;
     6 import java.sql.SQLException;
     7 public class GBUtil 
     8 {
     9     public static Connection getConnection()
    10     {
    11         try
    12         {
    13             Class.forName("com.mysql.jdbc.Driver");
    14         }
    15         catch(ClassNotFoundException e)
    16         {
    17             e.printStackTrace();
    18         }
    19         String url="jdbc:mysql://localhost:3306/denglu?useSSL=false";
    20         Connection connection=null;
    21         try 
    22         {
    23             connection=DriverManager.getConnection(url, "root", "242772");
    24         } 
    25         catch (SQLException e) 
    26         {
    27             // TODO Auto-generated catch block
    28             e.printStackTrace();
    29             System.out.println("数据库连接失败");
    30         }
    31         return connection;
    32     }
    33     public static void close(Connection connection)
    34     {
    35         try
    36         {
    37             if(connection!=null)
    38             {
    39                 connection.close();
    40             }
    41         }
    42         catch(SQLException e)
    43         {
    44             e.printStackTrace();
    45         }
    46     }
    47     public static void close(PreparedStatement preparedStatement)
    48     {
    49         try
    50         {
    51             if(preparedStatement!=null)
    52             {
    53                 preparedStatement.close();
    54             }
    55         }
    56         catch(SQLException e)
    57         {
    58             e.printStackTrace();
    59         }
    60     }
    61     public static void close(ResultSet resultSet)
    62     {
    63         try
    64         {
    65             if(resultSet!=null)
    66             {
    67                 resultSet.close();
    68             }
    69         }
    70         catch(SQLException e)
    71         {
    72             e.printStackTrace();
    73         }
    74     }
    75 }            

    add.jsp:

     1 <%@page import="com.user.gb.dao.UserDaoImpl"%>
     2 <%@page import="com.user.gb.model.User"%>
     3 <%@page import="com.user.gb.model.UserException"%>
     4 <%@page import="com.user.gb.Util.GBUtil"%>
     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 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    10 <%
    11     String username=request.getParameter("username");
    12     String password=request.getParameter("password");
    13     String repassword=request.getParameter("repassword");
    14     if(username==null||"".equals(username.trim()))
    15     {
    16         request.setAttribute("error","用户名不能为空!");
    17 %>
    18     <jsp:forward page="addInput.jsp"></jsp:forward>
    19 <%
    20     }
    21     if(password==null||"".equals(password.trim()))
    22     {
    23     request.setAttribute("error","密码不能为空!");
    24 %>
    25     <jsp:forward page="addInput.jsp"></jsp:forward>
    26 <%
    27     }
    28     if(repassword==null||"".equals(repassword.trim()))
    29     {
    30 request.setAttribute("error","再次输入密码以示确认!");
    31 %>
    32     <jsp:forward page="addInput.jsp"></jsp:forward>
    33 <%
    34     }
    35     if(!password.trim().equals(repassword.trim()))
    36     {
    37         request.setAttribute("error","两次输入的密码不一致。请确认后再进行操作!");
    38 %>
    39     <jsp:forward page="addInput.jsp"></jsp:forward>
    40 <%
    41     }
    42     User user=new User();
    43     user.setUsername(username);
    44     user.setPassword(password);
    45     UserDaoImpl userDao=new UserDaoImpl();
    46     try
    47     {
    48         userDao.add(user);
    49 %>
    50     <h2 style="color:blue">用户保存成功!</h2>
    51 <%
    52     }
    53     catch(UserException e)
    54     {
    55 %>
    56     <h2 style="color:red">error:<%=e.getMessage() %></h2>
    57 <%
    58     }
    59 %> 
    60 </html>

    addInput.jsp:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2 pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>用户注册</title>
     8 </head>
     9 <body>
    10     <form action="add.jsp" method="get">
    11         <table align="center" border="2" width="500">
    12             <tr>
    13                 <td>用户名:</td>
    14                 <td>
    15                     <input type="text" name="username" />
    16                 </td>
    17             </tr>
    18             <tr>
    19                 <td>密码:</td>
    20                 <td>
    21                     <input type="password" name="password" />
    22                 </td>
    23             </tr>
    24             <tr>
    25                 <td>确认密码:</td>
    26                 <td>
    27                     <input type="password" name="repassword" />
    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     </form>
    38 <br>
    39 <%
    40     if(request.getAttribute("error")!=null)
    41     {
    42 %>
    43     <h2 align="center" style="color:red">        <%=request.getAttribute("error") %></h2>
    44 <%
    45     }
    46 %>
    47 </body>
    48 </html>        

    delete.jsp:

     1 <%@page import="com.user.gb.dao.UserDaoImpl"%>
     2 <%@page import="com.user.gb.model.User"%>
     3 <%@page import="com.user.gb.model.UserException"%>
     4 <%@page import="com.user.gb.Util.GBUtil"%>
     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 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    10 <%
    11     String username=request.getParameter("username");
    12     String password=request.getParameter("password");
    13     UserDaoImpl userDao=new UserDaoImpl();
    14     User user=null;
    15     user=userDao.load(username); 
    16     if(user==null)
    17     {
    18         request.setAttribute("error", "您要删除的用户不存在");
    19 %>
    20     <jsp:forward page="deleteInput.jsp"></jsp:forward>
    21 <%
    22     }
    23     if(!user.getPassword().equals(password))
    24     {
    25         request.setAttribute("error", "您输入的密码不正确,无权删除该用户!");
    26 %>
    27     <jsp:forward page="deleteInput.jsp"></jsp:forward>
    28 <%
    29     }
    30     userDao.delete(username);
    31 %>
    32     <h2 align="center" style="color:blue">学号为<%=user.getUsername() %>的用户已经被删除!</h2><br>
    33 </html>

    deleteInput.jsp:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2 pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>用户删除</title>
     8 </head>
     9 <body>
    10     <form action="delete.jsp" method="get">
    11         <table align="center" border="2" width="500">
    12             <tr>
    13                 <td>请输入要删除的用户名:</td>
    14                 <td>
    15                     <input type="text" name="username" />
    16                 </td>
    17             </tr>
    18             <tr>
    19                 <td>该用户的密码为:</td>
    20                 <td>
    21                     <input type="password" name="password" />
    22                 </td>
    23             </tr>
    24             <tr align="center">
    25                 <td colspan="2">
    26                     <input type="submit" value="删除" />
    27                 </td>
    28             </tr>
    29         </table>
    30     </form>
    31 <br>
    32 <%
    33     if(request.getAttribute("error")!=null)
    34     {
    35 %>
    36     <h2 align="center" style="color:red">    <%=request.getAttribute("error") %></h2>
    37 <%
    38     }
    39 %>
    40 </body>
    41 </html>

    select.jsp:

     1 <%@page import="com.user.gb.dao.UserDaoImpl"%>
     2 <%@page import="com.user.gb.model.User"%>
     3 <%@page import="com.user.gb.model.UserException"%>
     4 <%@page import="com.user.gb.Util.GBUtil"%>
     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 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    10 <title>搜索</title>
    11 </head>
    12 <%
    13     String username=request.getParameter("username");
    14     if(username==null||"".equals(username.trim()))
    15     {
    16         request.setAttribute("error", "查询内容不能为空!");
    17 %>
    18     <jsp:forward page="selectInput.jsp"></jsp:forward>
    19 <%
    20     }
    21     User user=null;
    22     UserDaoImpl userDao=new UserDaoImpl();
    23     user=userDao.load(username);
    24     if(user==null)
    25     {
    26         request.setAttribute("error", "您查找的用户不存在!");
    27 %>
    28     <jsp:forward page="selectInput.jsp"></jsp:forward>
    29 <%
    30     }
    31 else
    32     {
    33 %>
    34     <h2 align="center" style="color:blue">查询结果为:编号:    <%=user.getId() %>学号:<%=user.getUsername() %>密码:    <%=user.getPassword() %></h2>
    35 <%
    36     }
    37 %>
    38 </html>

    selectInput.jsp:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2 pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>用户搜索</title>
     8 </head>
     9     <form action="select.jsp" method="get">
    10         <table align="center" border="2" width="500">
    11             <tr>
    12                 <td>请输入您要搜索的用户名:</td>
    13                 <td>
    14                     <input type="text" name="username" />
    15                 </td> 
    16             </tr>
    17             <tr align="center">
    18                 <td colspan="2">
    19                     <input type="submit" value="查询" />
    20                 </td>
    21             </tr> 
    22         </table>
    23     </form>
    24 <%
    25     if(request.getAttribute("error")!=null)
    26     {
    27 %>
    28     <h2 align="center" style="color:red"><%=request.getAttribute("error") %></h2>
    29 <%
    30     }
    31 %>
    32 </html>

    update.jsp:

     1 <%@page import="com.user.gb.dao.UserDaoImpl"%>
     2 <%@page import="com.user.gb.model.User"%>
     3 <%@page import="com.user.gb.model.UserException"%>
     4 <%@page import="com.user.gb.Util.GBUtil"%>
     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 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    10 <%
    11     String username=request.getParameter("username");
    12     String password=request.getParameter("password");
    13     String newpassword=request.getParameter("newpassword");
    14     String newrepassword=request.getParameter("newrepassword");
    15     if(username==null||"".equals(username.trim()))
    16     {
    17         request.setAttribute("error","请输入要修改的用户名!");
    18 %>
    19     <jsp:forward page="updateInput.jsp"></jsp:forward>
    20 <%
    21     }
    22     if(password==null||"".equals(password.trim()))
    23     {
    24         request.setAttribute("error","原密码不能为空!!");
    25 %>
    26     <jsp:forward page="updateInput.jsp"></jsp:forward>
    27 <%
    28     }
    29     if(newpassword==null||"".equals(newpassword.trim()))
    30     {
    31         request.setAttribute("error","新密码不能为空!");
    32 %>
    33     <jsp:forward page="updateInput.jsp"></jsp:forward>
    34 <%
    35     }
    36     if(newrepassword==null||"".equals(newrepassword.trim()))
    37     {
    38         request.setAttribute("error","必须再次输入新密码,以免出现错误!");
    39 %>
    40     <jsp:forward page="updateInput.jsp"></jsp:forward>
    41 <%
    42     }
    43     User user=new User();
    44     UserDaoImpl userDao=new UserDaoImpl();
    45     user=userDao.load(username);
    46     if(user==null)
    47     {
    48         request.setAttribute("error","该用户不存在,请重新输入。");
    49 %>
    50     <jsp:forward page="updateInput.jsp"></jsp:forward>
    51 <%
    52     }
    53     if(!user.getPassword().equals(password))
    54     {
    55         request.setAttribute("error", "原密码不正确,无法修改!");
    56 %>
    57     <jsp:forward page="updateInput.jsp"></jsp:forward>
    58 <%
    59     }
    60     if(!newpassword.equals(newrepassword))
    61     {
    62         request.setAttribute("error", "两次输入的新密码不一致,请确认后再操作,修改失败!");
    63 %>
    64     <jsp:forward page="updateInput.jsp"></jsp:forward>
    65 <%
    66     }
    67     user.setUsername(username);
    68     user.setPassword(newpassword);
    69     userDao.update(user);
    70 %>
    71     <h2 style="color:blue">用户修改成功!</h2> 
    72 </html>

    updateInput.jsp:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2 pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>用户修改</title>
     8 </head>
     9 <body>
    10     <form action="update.jsp" method="get">
    11         <table align="center" border="2" width="500">
    12             <tr>
    13                 <td>要进行修改的用户名:</td>
    14                 <td>
    15                     <input type="text" name="username" />
    16                 </td>
    17             </tr>
    18             <tr>
    19                 <td>原密码:</td>
    20                 <td>
    21                     <input type="password" name="password" />
    22                 </td>
    23             </tr>
    24             <tr>
    25                 <td>新密码:</td>
    26                 <td>
    27                     <input type="password" name="newpassword" />
    28                 </td>
    29             </tr>
    30             <tr>
    31                 <td>请再次输入密码:</td>
    32                 <td>
    33                     <input type="password" name="newrepassword" />
    34                 </td>
    35             </tr>
    36             <tr align="center">
    37                 <td colspan="2">
    38                     <input type="submit" value="提交" />
    39                     <input type="reset" value="重置" />
    40                 </td>
    41             </tr>
    42         </table>
    43     </form>
    44 <%
    45     if(request.getAttribute("error")!=null)
    46     {
    47 %>
    48     <h2 align="center" style="color:red"><%=request.getAttribute("error") %></h2>
    49 <%
    50     }
    51 %>
    52 </body>
    53 </html>

    denglu.jsp:

     1 <%@page import="com.user.gb.dao.UserDaoImpl"%>
     2 <%@page import="com.user.gb.model.User"%>
     3 <%@page import="com.user.gb.model.UserException"%>
     4 <%@page import="com.user.gb.Util.GBUtil"%>
     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 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    10 <% 
    11     String username=request.getParameter("username");
    12     String password=request.getParameter("password");
    13     if(username==null||"".equals(username.trim()))
    14     {
    15         request.setAttribute("error","用户名不能为空!");
    16 %>
    17     <jsp:forward page="dengluInput.jsp"></jsp:forward>
    18 <%
    19     }
    20     if(password==null||"".equals(password.trim()))
    21     {
    22         request.setAttribute("error","密码不能为空!");
    23 %>
    24     <jsp:forward page="dengluInput.jsp"></jsp:forward>
    25 <%
    26     }
    27     User user=null;
    28     UserDaoImpl userDao=new UserDaoImpl();
    29     user=userDao.load(username);
    30     if(user==null)
    31     {
    32         request.setAttribute("error","该用户名不存在!");
    33 %>
    34     <jsp:forward page="dengluInput.jsp"></jsp:forward>
    35 <%
    36     }
    37     if(!password.equals(user.getPassword()))
    38     {
    39         request.setAttribute("error","密码错误!");
    40 %>
    41     <jsp:forward page="dengluInput.jsp"></jsp:forward>
    42 <%
    43     }
    44     else
    45     {
    46 %>
    47     <h2 align="center" style="color:blue">登录成功!</h2>
    48     <a href="addInput.jsp">用户注册</a>
    49     <a href="deleteInput.jsp">删除用户</a>
    50     <a href="updateInput.jsp">修改密码</a>
    51     <a href="selectInput.jsp">查询用户</a>
    52 <%
    53     }
    54 %>
    55 </html>

    dengluInput.jsp:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2 pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>登录</title>
     8 </head>
     9 <body>
    10     <form action="denglu.jsp" method="get">
    11         <table align="center" border="2" width="500">
    12             <tr>
    13                 <td>用户名:</td>
    14                 <td>
    15                     <input type="text" name="username" />
    16                 </td>
    17             </tr>
    18             <tr>
    19                 <td>密码:</td>
    20                 <td>
    21                     <input type="password" name="password" />
    22                 </td>
    23                 <td>
    24                     <a href="updateInput.jsp">修改密码</a>
    25                 </td>
    26             </tr>
    27             <tr align="center">
    28                 <td colspan="4">
    29                     <input type="submit" value="登录" />
    30                 </td>
    31             </tr>
    32         </table>
    33     </form>
    34 <br>
    35 <%
    36     if(request.getAttribute("error")!=null)
    37     {
    38 %>
    39     <h2 align="center" style="color:red"><%=request.getAttribute("error") %></h2>
    40 <%
    41     }
    42 %>
    43 </body>
    44 </html>

    三、运行结果截图:

    初始界面:

       

    不输入任何东西直接登录:

       

    密码错误时:

       

    登录成功:

       

    由四个选项分别将用户导入到不同的界面,对应增删改查:

    增加(初始):

       

    当用户名已存在:

       

    用户保存成功:

       

    删除(初始):

       

    删除成功:                                            

       

    修改(初始):      

       

    修改用户不存在时:

        

    修改用户时密码不正确:

       

    修改成功:

        

    查询:

       

    成功查询:

       

    用户不存在时:

       

    四、列出你对这门课的希望和自己的目标,并具体列出你计划每周花多少时间在这门课上。

           这几周的时间,我希望写出一个可用的,有实际用户的软件。 能够完整体验软件生命周期,对于各个阶段有实际的了解,对于软件设计有实际的掌握,对敏捷软件开发的具体技术有实践能力。在个人作业和团队作业中, 了解团队的各个角色,和各个角色的互动。对于其中一个角色有实际的深入体验。 学习如何与不同的角色打交道,培养团队精神,学会解决冲突的几种方法。

      每天可以花费三四个小时用来编程,每周下来三十个小时左右,编程重要的还是练习,把写程序当做日常。

  • 相关阅读:
    C++/CLI中的资源清理(Destructor,Finalizer
    c++/cli 之数据库操作
    利用139,189,yahoo等邮箱短信提示来免费发短信提示
    小例子复习下委托的应用
    c++/cli 之日志记录
    c++/cli 之异步Socket完成端口实例
    C++/CLI, Finalize and Dispose
    C/C++的位运算符操作
    实现自定义控件与背景图完全重叠
    RichTextBox与NotifyIcon简单模仿QQ效果
  • 原文地址:https://www.cnblogs.com/guobin-/p/7884964.html
Copyright © 2011-2022 走看看