zoukankan      html  css  js  c++  java
  • 最后一个暑假java web

    1.swing美化包下载好的jar拖拽到项目下,右键构建路径,,,,选定美化包的class复制限定名,在mian方法后面new的loginframe前面try的后面粘贴美化包去掉后缀双引号括起来再百度UIManager(UIManager.setLookAndFeel("......."))

    2.背景图在new的jpanel后编写  ,所以不能直接new本身jpanel要new一个主类(2017.7.6 30分40秒) sas覆盖paintComponent()。然后把新建的MyBgJpanel类代替前面new的JPanel  。

    背景图片要放在对应的包下面。

      button添加图片也是拖到包下,然后icon   classpath。

    3.textField.getText().trim();事件监听;

    char型数组要变为String直接括起来然后在前面new String;

    JOptionPane.showMessageDialog(parentComponent, message);弹出框,第一个是容器中相对位置,null是在中间。  当你需要调用的变量在后面则需要全局变量,main方法下调用。

    正则表达式验证:^[a-zA-z][a-zA-Z0-9_]{2,9}$用户名由 3-10位的字母下划线和数字组成。不能以数字或下划线开头。只能已字母开头。允许全部是字母。

    matches()方法验证是否符合正则表达式,if语句括号前面加!表示非

    4.Jradiobutton男女共组互斥,model自建选择项

    DBUtil连接数据库的工具类,静态方法加载驱动,Class.forName("com.mysql.jdbc.Driver");

    数据库连接有三个数据:url地址,用户名,密码; 三个数据都要写自己的,导Connection包要导sql的

    连接不能返回空。

    5.vo类一定要implements Serializable

    Connection conn=DBUtil.getConnection();获取connction

    try {

                //1.获取Connection

                conn = DBUtil.getConnection();

                //2.根据Connection创建语句对象

                st = conn.createStatement();

                //3.语句执行sql语句

                String sql = "select * from dept";

                rs = st.executeQuery(sql);

               

                //4.按行遍历结果集,每行都封装到一个Dept对象中

                while(rs.next()){

                    Dept dept = new Dept();

                    dept.setDeptno(rs.getInt("deptno"));

                    dept.setDeptname(rs.getString("deptname"));

                    dept.setDeptloc(rs.getString("deptloc"));

                   

                    list.add(dept);

                }

            } catch (Exception e) {

                // TO DO 自动生成的 catch 块

                throw e;

            }finally{

            //5.释放资源

                DBUtil.close(conn,st,rs);

            }

            return list;

    6.if(e.getButton()==3){//右键删除

    7.dao层子包下都是实现类。

    8.Box box=new Box();第一个Box是数据类型,第二个是变量名,Box()是类创建的对应对象。

    9.String s1,s2,s3 = "abc", s4 ="abc" ;

    s1 = new String("abc");

    s2 = new String("abc");

     那么:

    s1==s2   是 false      //两个变量的内存地址不一样,也就是说它们指向的对象不 一样,

    故不相等。

    s1.equals(s2) 是 true    //两个变量的所包含的内容是abc,故相等。

    return -1;意思是返回错误码。方法中不能插入数据。主函数调用方法插入数据。

    最小化或还原所有窗口 Windows + D;如果只要当前窗口最小化,先按Alt+空格,然后按N;

    private私有的只有当前类可以访问。getxxx()表示得到属性,setxxx()表示对属性进行测试。

    css排版js动态效果jquery是js的框架,再加上html  网站页面。

    html超文本标记(标签)语言

    浏览器兼容问题:浏览器解析方式不一样;

    html编写软件:sublime,emmet插件

    ../代表上一级路径;

    form表单

    form里面的action表示将表单提交给谁。带#表示提交给自己。

    method表示提交方式:get post。

    colspan表示可以横跨的列数

    框架集frameset

    rows cols

    px像素 此src网页,*代表网页其他位置高度,乱码的原因可能是名称空格了

    css2和h4搭配class类,id是强调唯一性

    组合#,id也要用#

    内嵌标优先限度最高

    link标签link:css

    margin外边距

    <div class="div7"><div class="lanmu4" style="">栏目名称</div>

    垂直居中:line-height: 35px;把行高即文字区域设成和ul一样高

    &nbsp;text-decoration下划线list-style: none;点点

    :hover{}触碰变色 solid实线

    position:relative;left:-40%;实现居中的li向左边浮动。

    background-repeat:repeat no-repeat repeat-x repeat-y  background-image:url(图片地址) ;如果图片小很多个填满,repeat设置只填一个。

    background-position:定位,比如定位到整张背景图的购物车小图标。

    line-height只对文字起作用,对图片无效,所以如果仅用line-height是无法实现你的目的的,肯定要用到其他,比如给img添加margin-top:20px,或者vertical-align:-50%

    padding-top:26px;设置form文本框的距离高度,类似margin-top;

    dl标签 dt图片 dd文字

    position默认static正常的布局absolute绝对定位

    ul{

            position: absolute;

            bottom: 10px;

            right: 10px;

        }

    relative相对定位可以屏幕左上方也可以父容器为参考点默认00 标签写在父容器,在子容器写px位置fixed类似绝对布局,常用于广告

    {

    position:fixed;

    top:15px;

    right:2px;}

    <h1 onclick="this.innerHTML='谢谢!'">请点击该文本</h1>   点击变成谢谢

    onblur 事件会在对象失去焦点时发生

    onsubmit 事件会在表单中的确认按钮被点击时发生。

    var username_str = document.getElementById("username").value;获取用户名

    //对字符串进行非空和正则表达式的验证

        if(username_str==null || ""==username_str){//后者是字符串为空。

        <div class="login">

           

                <fieldset>

                    <legend>登录MEITAO.COM</legend>

    <td align="right">邮箱:</td>表单右对齐

    onload 事件会在页面或图像加载完成后立即发生

    setTimeout()

    未来的某时执行代码

    clearTimeout()

    取消setTimeout()

    <script>

        count = 3;

        window.onload = countPage;

        function countPage(){

           

            //每隔一秒 count--,同时将count的值给span

            count--;

            var span = document.getElementById("count");

            span.innerText = count;

            var t= setTimeout("countPage()",1000);

            //当count==0时,应该退出setTimeout

            if(count==0){

                clearTimeout(t);

                //跳转到主界面

                location.href = "8.html";

            }

        }

        </script>

    </head>

    <body>

        登陆成功,稍后计时<span id="count">3</span>秒后进入主页

    </body>

    </html>

    显示一个钟表

    <html>

    <head>

    <script type="text/javascript">

    function startTime()

    {

    var today=new Date()

    var h=today.getHours()

    var m=today.getMinutes()

    var s=today.getSeconds()

    // add a zero in front of numbers<10

    m=checkTime(m)

    s=checkTime(s)

    document.getElementById('txt').innerHTML=h+":"+m+":"+s

    t=setTimeout('startTime()',500)  因为程序运行要占用所以是500?

    }

    function checkTime(i)

    {

    if (i<10)

      {i="0" + i}

      return i

    }

    </script>

    </head>

    <body onload="startTime()">

    <div id="txt"></div>

    </body>

    </html>

    alt 如果图像不能显示,则用alt中的文本代替显示

    要打script先打<这样可以快捷输入。

    lacation.href="网站地址"

     DOM 对象 (document object model)文档对象模型

    document方法 getElementById()返回对拥有指定 id 的第一个对象的引用。  getElementsByName()返回带有指定名称的对象集合。 getElementsByTagName()返回带有指定标签名的对象集合。write() writeln()

    HTMLElement--Node --Element

    DOM树 根节点-- 节点类型:元素节点nodeType=1(根元素节点)、文本节点3、属性节点2、注释节点8

    node节点   常用属性:nodeName nodeValue nodeType parentNode firstChild lastChild  childNodes attibutes

    常用方法:创建xx createElement createTextNode createAttribute      

                                添加xx appendChild insertBefore setAttributeNode() setAttribute("属性名","属性值")

                                删除xx      removeChild()   removeAttribute("属性名");

    document对象 表单对象 style对象 表格对象

                    如:document.body

                       document.form的名字.表单元素的名字  

                        小结:form的名字.elements["表单元素的名字"]

    elements集合 包含表单中所有元素的数组。

    window.onload是一个事件,当文档加载完成之后就会触发该事件

    value 属性规定在表单被提交时被发送到服务器的值。

    <option> 与 <option/> 之间的值是浏览器显示在下拉列表中的内容,而 value 属性中的值是表单被提交时被发送到服务器的值。

    注释:如果没有指定 value 属性,选项的值将设置为 <option> 标签中的内容。

    select add()方法 向下拉列表添加一个选项。

    ava Naming and Directory Interface (JNDI)

        JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源,如DNS和LDAP、本地文件系统,后者在应用服务器中的对象。

    JSP(Java Server Pages)  java服务器页面

      JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。

    Java Servlet

      Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML。

    软件架构的模式

        C/S模式 client/server

            socket+流 通过TCP/IP协议进行通信

            android 或 ios APP 通过HTTP协议进行通信 (现在的主流 html5)

        B/S模式 broswer/server     b浏览器

            输入http://域名(服务器主机的ip):端口号(80)/网页资源

            比较 C/S B/S 优劣势

                C/S 先必须安装一个客户端、软件更新比较麻烦、访问速度较慢

                B/S 需要一个浏览器,服务器压力大,最大的问题是安全性问题

    tomcat web应用服务器

    网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

    建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

    Tcp ip协议

    Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

    HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

    HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

    我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在

    http功用

    浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。

    http协议:

          超文本传输协议 ,www(底层也是Tcp)

         

          发展历史 1.0 --传输静态网页 html

                  1.1--可以请求动态技术的网页 jsp php asp.net/asp(掌握http://主流)

                  2.0--https://,s表示security安全

     

    状态码status code  200表示响应成功 4xx 404表示资源没有找到 5XX 服务器处理时代码运行异常 500

    Myeclipce jsp要在网页上运行,放在workplace不行的,要放tomcat  webapps目录下,这个过程叫部署和发布

    不能ctrl cv 首先选定项目,点击图示

    进去后点击add添加服务器,里面有个myeclipcetomcat是myeclipce自带的tomat。 me_tcat

    就是myeclipce下的tomcat。

    成功部署

    这样查看部署文件的位置

    部署后要启动

    右键服务第一个选项进去修改端口

    Web—inf服务器端的核心文件夹

    .web应用程序结构

        META-INF--context.xml 数据库连接池的配置文件

        WEB-INF---lib文件夹:当前项目所需要的jar包 classes

                  web.xml:web描述符文件 欢迎页 统一异常页error-page servlet

            注意:放在web-inf下的资源,浏览器直接请求访问不到,但是可以通过服务器内部转发

    Web项目的jar包都放在lib中

    Supperclass是父类标准

    接口标准,下面的是方法覆盖不勾选

    做一个映射,因为servlet不同于一般的java,它可以通过浏览器访问的。所以需要对外提供一个访问地址(第三行那个url  随便写个)

    Servlet  java类实现servlet标准接口

    覆盖的方法init表示初始化 destroy表示正在销毁servlet,因为此类产生对象用完了需要销毁 service方法是请求访问该servlet时,需要响应的内容就在这里。

    重部署 ,就是刷一下服务器,刚刚写的就刷出来了

    刷一次网页就会回调一次service方法但是init只会调用一次

    http://localhost:8080/calDemo1/Demo1

    加一个构造方法,和init一样只会启动一次

    关闭服务器,destroy就会启动

    这是servlet的一整个生命周期

    servlet:指定一个url地址进行访问一个java类

    不需要提交数据就不需要给name   select标签下拉框  action应该提交给控制层

    这里可以看url地址    servlet和servlet-mapping(映射)name要一样

    把/calServlet复制到cal的action中/要省掉,因为基本路径已经有了

    Vo:java的一个vo对象

    Web项目改名:右键项目,最下面,输入web

    进化MVC

            视图层(view)、控制层(control) 业务逻辑层 数据访问层 数据层(Model)

    www.pconline.com.cn太平洋电脑网,一般都是用来下载软件的。

    购物车可以放section?里面而就不必做表放数据库里面。

    Ctrl加鼠标左键选取文件夹

    通过服务器业务层(servlet)获取连接对象的实例然后释放返回业务层再给客服端,如果请求过多效率就会很低,所以需要连接池

    在连接池中一次new很多个连接对象出来,来一个请求就找一个空闲的。忙碌的做完之后变为空闲但不会被销毁,等待下一个请求。没有连接池的话会被销毁。

    连接池都是大家用java写的jar包,主流有.第三方DBCP连接池

        第三方C3P0连接池还有阿里巴巴druid。

    在tomcat中查看端口:打开conf中server.xml。

    DataSource数据源 configurations配置 context上下文

    DBUtil中tomcat连接池千万不能使用main方法或者junit方法去测试这个getConnection()因为main方法启动的是java虚拟机,和tomcat没有关系,根本拿不到连接池。

    窗口最下面那个so  tomcat配置自己装的。

    .impl实现类

    select @@basedir as basePath from dual查询mysql路径

    DButil工具类中连接数据库的url地址还有用户名密码应该放在属性文件当中,因为他们有可能改动,Java项目在项目名下面新建,web项目在src或者web-inf

    ,因为放在src下文件会被保存在web-inf的classes文件下。

    下面新建

    Java项目是这样直接new FileInputStream

    Web项目在类路径下加载InputStream inStream = DBUtil2.class.getClassLoader().getResourceAsStream("db.properties");

    Mvc的c:servlet,进行业务逻辑处理,对数据库进行操作

    注释 <!--客户端注释,浏览器源码可见 --> <%-- 服务器端注释,浏览器源码不可见--%>

    taglib--标签库jstl

                核心标签库 c

                <%@ taglib %>

                    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>

                    采用c:forEach循环遍历request值域中的集合

                    <c:forEach var="obj2" items="${list}">

                            ${obj2}<br/>

                     </c:forEach>

    web服务器收到客户端的HTTP请求,会针对每一次请求分别创建一个用于代表请求的request对象和代表响应的response对象。

    1.要得到客户机提交过来的数据,只需要找request对象就行了。

    2、要向客户机输出数据,只需要找response对象就行了。

    通讯录:

    Mvc   浏览器发出url请求再经过控制层servlet的一系列请求跳转到视图层(jsp)(跳转方式有两种,常用是高效率的服务器内部转发)

    项目第一步  需求分析和概要设计(创建数据库)

    <jsp:forward page="findAllServlet"></jsp:forward> page中的是url地址,jsp跳转也可以用location

    <script>

         window.onload = function(){

            //location.href="findAllServlet";

            location.href="findAllServlet";

        };

      </script>

    接口父类没有那么子类就应该有

    Port端口forword跳转

    源码一模一样可以调用,比如doPost方法下面源码和doGet方法一样,可以在doPast方法下面写上 doGet(request,response);

    <div align="center"><img src="2008081801331242.gif"/></div>

    Web项目图片要放webroot的images下面

    !--是html注释也就是客户端注释,%--是jsp注释也就是服务器端注释,客户端看不到服务器端注释

    控制层要做的四件事情:1.获取请求参数 2.对参数进行验证 3.调用业务层 4.根据业务层返回值进行跳转。

    服务层为什么要写接口类? 为了方便扩展和重用

    接口提供了一个公用的方法提供方。 接口是用来规定子类的行为的。

    举个例子吧 , 比如有个需求, 需要保存客户信息, 有些客户从网站来, 有些从手机客户端来, 有些从后台管理系统录入, 假设不同来源的客户有不同的处理业务流程, 这个时候我定义接口来提供一个保存客户的方法, 然后不同平台实现我这个保存客户的接口, 以后保存客户的话, 我只用知道这个接口就可以了, 具体调用哪个方法  去实例化具体你需要用的类,这也就是JAVA的多态的体现。 而如果你不用接口的话 , 首先我需要哪个方法  我就去实例化哪个类, 冗余很高,  其次扩展很差。  接口就是一个规范, 其子类都会有他提供的方法。 统一管理。

    在java中不允许一个类继承多个多个父类,但是要实现“一个类继承多个类的功能”就可以用接口,一个类实现多个多个接口从而间接实现多重继承。

    服务层中的list<>(public加返回值list加findAll()里面没有参数,然后抛出异常)里面的是封装类,封装对象写在vo中,封装对象都要实现序列化接口

    在业务层调用dao层实现查询所有,dao需要数据库连接类获取对象和实例,这往往写成一个util工具类。

    测试数据库连接类是否成功主函数调用下静态方法就可以了。

    初级的时候获取到数据库的连接对象,然后由连接对象(Connection)得语句对象(Statement)然后得到一个结果集(ResultSet),写完后还要释放资源。中级就引入一个封装了jdbc的工具jar包(commons-dbutils-1.7.jar   common一般都是阿帕奇公司出品),这个jar包的核心类是QueryRunner。Constructors构造方法,有参数就是有参构造,没有就是无参构造,

    先用无参的new出来

  • 相关阅读:
    快速排序和二分查找
    机器学习实战6-线性回归
    机器学习实战5-AdaBoost
    机器学习实战4-SVM
    机器学习实战3-贝叶斯分类
    机器学习实战2-决策树
    win10下caffe安装与mnist测试实验注意点
    机器学习实战1-K均值
    scikit-learn中机器学习模型比较(逻辑回归与KNN)
    结合前向后向算法求隐马尔科夫模型观测序列O的概率
  • 原文地址:https://www.cnblogs.com/wxb2333/p/7622247.html
Copyright © 2011-2022 走看看