zoukankan      html  css  js  c++  java
  • 课后作业1

    1、网站系统开发需要掌握的技术

    一、界面和用户体验(Interface and User Experience)

    1.1 知道如何在基本不影响用户使用的情况下升级网站。通常来说,你必须有版本控制系统(CVS、Subversion、Git等等)和数据备份机制(backup)。

    1.2 除了浏览器,网站还有其他使用方式:手机、屏幕朗读器、搜索引擎等等。你应该知道在这些情况下,你的网站的运行状况。MobiForge提供了手机网站开发的一些相关知识。

     

    二、安全性(Security)

    2.1 不要明文(plain-text)储存用户的密码,要hash处理后再储存。

    2.2 确认你的数据库连接信息的安全性。

     

    三、性能(Performance)

    3.1 只要有可能,就使用缓存(caching)。正确理解和使用HTTP cachingHTML5离线储存

    3.2 学习如何用gzip/deflate压缩内容(deflate方式更可取)。

    3.3 浏览Yahoo的Exceptional Performance网站,里面有大量提升前端性能的优秀建议,还有他们的YSlow工具。Google的page speed则是另一个用来分析网页性能的工具。两者都要求安装Firebug

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

    3.5 大流量的网站应该考虑将网页对象分散在多个域名split components across domains)。

    3.6 静态内容(比如图片、CSS、JavaScript、以及其他cookie无关的网页内容)都应该放在一个不需要使用cookie的独立域名之上。因为域名之下如果有cookie,那么客户端向该域名发出的每次http请求,都会附上cookie内容。这里的一个好方法就是使用"内容分发网络"(Content Delivery Network,CDN)。

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

     

    四、搜索引擎优化(Search Engine Optimization,SEO)

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

    4.2使用Google的Webmaster ToolsYahoo的Site Explorer

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

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

     

    五、技术(Technology)

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

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

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

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

    5.5 理解JavaScript沙箱(Javascript sandbox)的工作原理,尤其是如果你打算使用iframe。

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

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

    5.8 考虑使用样式表重置Reset Style Sheet)。

    5.9 考虑使用JavaScript框架(比如jQueryMooToolsPrototype),它们可以使你不用考虑浏览器之间的差异。

     

    六、解决bug

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

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

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

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

    6.5 经常备份!(并且确保这些备份是有效的。)除了备份机制,你还必须有一个恢复机制。

    6.6 使用某种版本控制系统储存你的文件,比如SubversionGit

    6.7 不要忘记做单元测试(Unit Testing),Selenium之类的框架会对你有用。

    2、源代码

    import java.awt.event.*;

    import java.awt.*;

    import javax.swing.*;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    class B extends JFrame implements ActionListener  

    {   

       JPanel Interface = new JPanel(null)         

    {

      public void paintComponent(Graphics g)

         {

          super.paintComponent(g);

          ImageIcon img = new ImageIcon("D:\图片\6.jpg");

          g.drawImage(img.getImage(),0,0,getWidth(),getHeight(),img.getImageObserver());

         }

    };

       JButton Determine=new JButton("确定");

       JLabel Prompt;

       B(int a)

    {

     if(a==1)

       Prompt=new JLabel("用户名不存在!");

     if(a==2)

           Prompt=new JLabel("密码错误!");

     if(a==3)

       Prompt=new JLabel("登陆成功!");

     if(a==4)

       Prompt=new JLabel("请输入用户信息!");

     Prompt.setBounds(50,30,150,23);

     Determine.setBackground(Color.WHITE);

     Determine.setForeground(Color.black);

     Determine.setBounds(103,60,64,25);

     Determine.setFont(new Font("黑体",Font.PLAIN,15));

     Prompt.setFont(new Font("黑体",Font.PLAIN,15));

     Prompt.setHorizontalAlignment(SwingConstants.CENTER);

     Prompt.setForeground(Color.black);

     Interface.add(Prompt);

     Interface.add(Determine);

     getContentPane().add(Interface);

     Determine.addActionListener(this);

         setTitle("提示");

         setSize(250,150);                 

         setVisible(true);

         setResizable(false);

         setLocationRelativeTo(null);

         setLayout(new GridLayout());                  

         setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);   

       }

       public void actionPerformed(ActionEvent e)       

     {

          dispose();

     }

    }

    class A extends JFrame implements ActionListener

    {  

        JPanel Interface = new JPanel(null)          

     {

       public void paintComponent(Graphics g)

             {

              super.paintComponent(g);

          ImageIcon img=new ImageIcon("D:\图片\11.jpg");

          g.drawImage(img.getImage(),0,0,getWidth(),getHeight(),img.getImageObserver());

             }

     };

        JLabel[] title = new JLabel [2];          

        JTextField getid = new JTextField();

        JPasswordField getcode = new JPasswordField();

        JButton Land = new JButton("登录");

        A()

     {

       for(int i=0;i<2;i++)  

       title[i]=new JLabel();

       title[0].setText("用户名:");

       title[1].setText("密 码:");

       title[0].setBounds(90, 70, 50, 23);

           getid.setBounds(140,70,150,23);

           title[1].setBounds(90, 110, 50, 23);

           getcode.setBounds(140,110,150,23);

           Land.setBounds(100,180,180,25);

           Land.setBackground(Color.cyan);

           Land.setForeground(Color.black);

       for(int i=0;i<2;i++)

             {

       title[i].setFont(new Font("黑体",Font.PLAIN,13));

       title[i].setForeground(Color.black);

             }

           Land.setFont(new Font("黑体",Font.PLAIN,15));

           Interface.add(title[0]);  

           Interface.add(getid);

           Interface.add(title[1]);

           Interface.add(getcode);

           Interface.add(Land);              

           Land.addActionListener(this);

           getContentPane().add(Interface);

           setTitle("登陆窗口");

           setSize(400,300);  

           setVisible(true);

           setResizable(false);

           setLocationRelativeTo(null);

           setLayout(new GridLayout());                  

           setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

    }

      public void actionPerformed(ActionEvent e)        //触发事件后的处理方法

        {

           String str1=null;

           String str2=null;

           str1=getid.getText().replaceAll(" ","");

           str2=String.valueOf(getcode.getPassword()).replaceAll(" ","");

           boolean result1=true;

         if(str1==null||str1.equals(""))

         result1=false;

         if(str2==null||str2.equals(""))

         result1=false;

           if(result1)

           {

           int result2=queryresult(str1,str2);

              if(result2==0)

                new B(1);

              if(result2==1)

                new B(2);

              if(result2==2)

                new B(3);

           }

          else

            new B(4);

        }

      public int queryresult(String id,String code)

        {    

        String conURL="jdbc:mysql://localhost:3306/mysql";

         int result=0;

         try

           {

    Class.forName("com.mysql.jdbc.Driver");

       }

         catch (java.lang.ClassNotFoundException e1)

            {

     System.out.println(e1.getMessage());

        }      

        try {

         Connection con;

     con = DriverManager.getConnection(conURL,"root","root");

     Statement add=con.createStatement();

     String str="select * from student";

         ResultSet rs=add.executeQuery(str);

         while(rs.next())

          {

           String a1;

           String a2;

           a1=rs.getString("用户名");

           a2=rs.getString("用户密码");

           if(a1.equals(id))

             {

              if(a2.equals(code))

                result=2;

              else

              result=1;

             }

          }

        rs.close();

        con.close();

       }

     catch (SQLException e)

      {

    e.printStackTrace();

    System.out.println(e.getMessage());

      }   

        return result;

        }

    }

    public class Example4

    {

      public static void main(String[] args)

    {

     new A();

    }

    }

    3、截图

    4、希望与目标

    希望能按时完成老师要求的各种任务,在学有余力的情况下提前学习相关的知识,提高自主学习能力,与老师建立良好的师生关系,能多参加相关的比赛。

    时间:除了课程与上机外,在完成其他必须做的事情后,会利用闲暇时间来编程,保证每周在课下至少编程6小时。

  • 相关阅读:
    struts2文件上传报错
    简述算法和程序的区别并举例说明
    JAVA中TreeMap集合筛选字母及每一个字符出现的次数
    Myeclipse2014破解步骤
    修改ubuntu的终端提示符
    gcc 引用math.h头文件,编译出现undefined reference to `pow‘等错误时,需要加参数lm.
    几篇文章
    gdb调试gcc出现:Missing separate debuginfos, use: debuginfoinstall glibcx.i686
    【达内C++学习培训学习笔记系列】C语言之三循环语句和数组
    code::block之spell checker配置
  • 原文地址:https://www.cnblogs.com/wyl814922595/p/7886443.html
Copyright © 2011-2022 走看看