最后一个暑假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出来

原文地址:https://www.cnblogs.com/wxb2333/p/7622247.html