侧边栏壁纸
博主头像
王小木人个人技术文章记录

这是很长,很好的一生

  • 累计撰写 141 篇文章
  • 累计创建 43 个标签
  • 累计收到 10 条评论

目 录CONTENT

文章目录

java web笔记

王小木人个人技术文章记录
2021-05-26 / 0 评论 / 0 点赞 / 1,842 阅读 / 14,693 字

1.html和css
html 超文本标签语言

2.html 语法

设置当前html文档编码格式

html 标签
h5格式
块级标签和行级标签
块级标签:
自动换行,成块显示 例如:<h1..6></h1..6>



空格 &nbsp

无序标签

有序标签

图文混编标签

表格

   

行级标签 
    不换行,

换行标签


  

链接
页面中的链接
第一步:定义锚名称

第二步:定义点击链接
点击跳转
页面之间的链接

表单元素
文本框
普通按钮

提交按钮

表单

重置按钮

图片按钮

单选按钮

多选按钮

文件选择器

下拉列表
多行文本框 readonly 只读 disabled 禁用 hidden   隐藏

表格布局

标题

框架
frameset 不能和body 同时使用

                       

iframe 可以和body共存

css 样式
选择器
1.标签选择器(直接引用)2.类选择器(.引用) 3.id选择器(#引用)

选择器的优先级
id选择器>类选择器>标签选择器
样式的优先级
行内样式最高
内部样式表和外部样式表取决于就近样式

常用样式
background-image:url() 背景图片
background-repeat:no-repeat 背景图片不平铺
background-position:值1(左负右正) 值2(上负下正

盒子模型
padding 内边距

去除无序列表的点 list-style:none
文字居中 text-align:center;
line-height 行高

javascript 脚本语言
组成部分
ECMAScript 主要用于规定js的语法结构
DOM (document object model) 文档对象模型 设置和操作html页面和动态改变css样式

BOM (borwser object model) 浏览器对象操作模型,设置浏览器的打开方式,打开大小等。

js中有个window对象,相当于java中object
js 严格区分大小写

输出语句

alert() 弹出语句
document.write() 在页面上输出

console.log() 在控制台输出 

注释
// 单行注释

/* 多行注释 

*/

变量的声明
声明时赋值
var a=100;
先声明再赋值
var b;
b=100;

5个基本数据类型
number
string
boolean
null (声明变量保存对像,但是在获取时对象为空,返回null)
undefined (声明变量保存变量值,但是在声明时未赋值,返回undefined)

复杂数据类型
object

引用数据类型
对象,数据,类

声明变量完成后检测数据类型 typeof

方法一 
typeof 变量名称
方法二
typeof(变量名称)

调试
f8  跳到下一个断点
f10 单步执行

匿名函数 function(){};

window.onload=function(){
}  页面完成加载时
btn.onclick=function(){
}  点击事件

自定义函数
function 函数名称(){

}
自定义函数的名字和内置函数同名时,自定义函数不会起作用

prompt("值1","值2") 返回输入的值
值一 :提示语
值二:接收的参数

isNaN();判断数据类型是否是数字 true 不是数字,false是数字

parseInt() 字符转换为数字

==  比较值
=== 比较值和类型

属性的写入和读取

闭合标签对像.value
非闭合标签对像.innerHTML 

js 设置样式时直接将样式中"-"去除后吧第二个单词首字母大写

标签对象.style.样式名="属性值"

动态接受样式名和值时放在[]中
标签对象.style[样式名]="属性值"

Dom

对于dom 操作文档有四种方式

  1. 通过id
     document.getElementById("id值") 唯一 获得对应组件
  2. 通过name
     document.getElementByName("name值") 不唯一 获得对应组件list
  3. 通过class
     document.getElementByClassName("ClassName值") 不唯一 获得对应组件list
  4. 通过标签
    document.getElementByTagName("TagName值") 不唯一 获得对应组件list

数组
一维数组 二维数组
声明方式1: var arr=[数组内容...];
例:var arr["1","2"];
    var arr[1,2,3,4];
    var arr=[[1,2],[3,4]];
  2: var arr=new Array(数组内容...);
例:var arr=new Array("1","2");
    var arr=new Array([1,2],[3,4] );

js 可以给标签添加自定义属性

动态设置标签和设置样式

显示和隐藏

显示
display:block
隐藏 
display:none

函数传参

定时器
setTimeout("方法","时间间隔"); 只执行一次
setInterval("方法","时间间隔") 间隔执行多次
获取系统当前时间
Date()
    
下拉列表

js 添加节点
var p=new Option("显示的值","value值");
prop.add(p);

动态表格
创建表格节点
var mytable= document.createElement("table");
设置节点属性
mytable.setAttribute("属性名","属性值");
将表格节点放在body中
document.body.appendChild(mytable);

parentNode 节点的上一级

rowIndex 表格行号 tr节点下的属性

deleteRow(行号) 根据行号删除
 
confirm 提示信息确认消息框 返回true为确定

previousElementSibling 同级上一个节点

table.rows[行下标] 表格行节点数组
table.rows[行下标].cells[列下标] 表格具体某行某列的节点

Math.ceil();向上取整
Math.floor();向下取整
Math.round();四舍五入
Math.random(); 0.0~1.0之间的伪随机数[0,1) 

transform:rotate(180deg) 图片旋转180度

表单.onsubmit 返回true时提交表单 返回false 

打开新的窗体
window.open("窗体路径","","width=100px,height=100px");

jquery js的封装

为什么用jquery
js的弊端
1.查找对象代码过长
2.每次操作集合需要循环
3.js设置同一个事件时会覆盖
jquery 都不存在以上问题

jquery 入口函数

$(document).ready(function (){

});
或简写
$(function(){

});

jquery 存在隐式迭代 

js 对象和jquery对象

js对象转换为jquery对象直接放$()中
jquery对象转换为js对象直接通过[] 
或通过get()

基本选择器

id选择器
class选择器
标签选择器

children(标签) 查找下一级指定标签

同级标签 siblings()

设置css样式
1.对象.css("样式名","样式值");
2.对象.css({
 样式名(不用引号时)中横线去掉第二个单词首字母大写
 多个样式之间用“,”分割
});

获取样式
对象名.css("样式名") 返回样式的值 获取集合中的第一个元素的样式

addClass(样式名) 追加样式
removeClass(样式名) 移除样式
toggleClass(样式名) 有就删除没有就添加样式 
hasClass(样式名) 返回bool类型 有返回true 没有返回false
 
attr 操作属性 
对象.attr("属性名","属性值");
对象.attr({
属性名:属性值,
...

});

获取属性名
对象.attr(属性名) 返回属性值

prop("checked",true) 选中为true 不选中为false jquery 1.6版本之前使用attr方法会失效

自定义动画

animate

xml 
html+css 用来制作静态页面,一旦页面发生改变,需要修改html代码,不方便

xml 可扩展标记语言

可以存储信息,把信息当配置进行配置起来,通过配置信息显示到页面

可以验证数据

XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准

George John Reminder Don't forget the meeting!

Standalone="yes/no" 设置文档是否在文件中

所有标签都在根元素里

实体

]>

元素分为两种
需要解析 pcdata xml中的内容
不需要解析 cdata
<![pcdata[
内容
]]>

java doM 创建xml 步骤
1.创建根节点
2.创建子级节点,设置属性
3.添加到节点
4.将创建的文档转成xml,最后输出
package com.doc;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class DocCreate {
  public static void main(String[] args){
     DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
     try {
        DocumentBuilder db=dbf.newDocumentBuilder();
        Document doc=db.newDocument();
        Element stuElement=doc.createElement("Struents");
        doc.appendChild(stuElement);
        Element nameElement=doc.createElement("name");
        nameElement.setTextContent("王小木");
        Element ageElement=doc.createElement("age");
        ageElement.setTextContent("18");
        stuElement.appendChild(nameElement);
        stuElement.appendChild(ageElement);
        TransformerFactory tff=TransformerFactory.newInstance();
        Transformer tf=tff.newTransformer();
        DOMSource dc=new DOMSource(doc);
        StreamResult dr=new StreamResult("src/stu.xml") ;
        tf.setOutputProperty(OutputKeys.INDENT, "YES");
        tf.transform(dc, dr);
    } catch (ParserConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (TransformerConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (TransformerException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
  }
}

java dom 解析xml
1.加载xml 文档
2.查找xml中的节点
3.得到元素,获取元素值--》输出

package com.doc;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DocRead {
    public static void main(String[] args) {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document    doc = db.parse("src/stu.xml");
            NodeList rootlist =doc.getChildNodes();
           read(rootlist);
            
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public static void read(NodeList rootlist) {

        for (int i = 0; i < rootlist.getLength(); i++) {
            Node n = rootlist.item(i);
            if (n.hasChildNodes()) {
                            
                read(n.getChildNodes());
            } else {
                if(n.getTextContent()==""){
                    System.out.println(n.getNodeName() + "-"
                                +n.getTextContent());
                    continue;
                }
                 if(n.getParentNode().getChildNodes().getLength()==1)
                 {
                     System.out.println(n.getParentNode().getNodeName() + "-"
                             +n.getParentNode().getTextContent());     
                 }
            }

        }
    }
}

sax 解析
直接解析整个xml文档,只要是通过sax解析,不需要自己编写方法,而是继承一个类(DefaultHandler)重写底下五个方法 

void    startDocument()
接收文件开头的通知。

void    endDocument()
接收文件结尾的通知。
void    startElement(String uri, String localName, String qName, Attributes attributes)
接收元素开始的通知。

void    endElement(String uri, String localName, String qName)
接收元素结尾的通知。

void    characters(char[] ch, int start, int length)
接收元素内的字符数据通知。

jdom 创建和解析

创建
1.创建输出流
2.创建文档
3.创建节点
4.添加节点
5.将节点添加到文档中
XMLOutputter out=new XMLOutputter();
    Document doc=new Document();
    Element stuElement=new Element("Students").setAttribute("id", "stu1");
    stuElement.addContent(new Element("name").setText("小李"));
    stuElement.addContent(new Element("age").setText("22"));
    doc.addContent(stuElement);
    try {
        out.output(doc, new FileOutputStream("src/student.xml"));
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

解析

package com.doc;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class DocRead {
    public static void main(String[] args) {
     SAXBuilder sab=new SAXBuilder();
     try {
        Document doc=sab.build(new File("src/student.xml"));
        Element root=doc.getRootElement();
        List list=root.getChildren();
        for(int i=0;i<list.size();i++)
        {
           System.out.println(list.get(i).getName()+"-"+list.get(i).getText());    
        }
    } catch (JDOMException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
}

Dom4j解析
SAXReader sr=new SAXReader();
Document doc=sr.read(new File("路径")); 

DTD 约束xml文件 可以和xml写在一起

语法结构

    表示name为文本结构
     #REQUIRED必须有id #IMPLIED 属性可选的
]>  

schema 约束xml数据 (xml schema definition)取代xml

基于xml语法
扩充了数据类型
支持元素继承,支持属性组
多个schema文件应用于同一个xml文档

文档结构

<xs:schema >
</xs:schema>

complexType 复杂类型
sequence 元素顺序
all 不需要元素按顺序,但是需要都包含
 
minOccurs="数量" 最少
maxOccurs="数量" 最多
maxOccurs="unounded" 无上限   

object 重构

常见的两种架构
c/s 客户端/服务端 界面美观不易维护
b/s 浏览器端/服务端 界面有局限易维护

http 超文本传输协议
tcp  传输控制协议
udp  用户数据包协议
ftp  文件传输协议

服务器 程序员开发的软件部署在某台电脑上 
常见服务器
tomcat
weblogic
resin
jboss
apache
iis
Tomcat 服务器介绍
目录
bin 存放启动或关闭tomcat的脚本文件 startup shutdown
conf 存放配置文件 server.xml 对端口号进行修改 web.xml 对初始页面进行修改
lib 启动和关机服务器的jar包
logs:生成的日志文件
temp:临时文件
webapps:默认的tomcat部署项目的路径
wpwtwebapps:这是eclipse或myeclipse部署项目的路径(自动生成) 
work:jsp对应的servlet 文件

tomcat服务器的搭建
启动tomcat window 执行.bat linux执行.sh 
启动时必须保证java环境变量正确
默认端口号8080

linux 修改权限

chmod +x catalina.sh 修改执行权限
chmod+x startup.sh
sh startup.sh

通过eclipse 搭建tomcat 服务器创建web项目

目录结构
src java文件
webContent 根目录
META-INF 生成的配置
WEB-INF-》lib 项目中的jar包
Web.xml 配置项目的初始访问地址或其他的
新建的文件夹在WebContent 下,

在eclipae 中配置tomcat 

新建servlet 程序
新建类继承 HttpServlet (来自tomcat 中,非jdk中的类) 并重写 doGet doPoat

jsp 
<%! 声明变量,或方法%> 声明,变量生命周期同服务器 sesion
<% java 代码%> 小脚本 生命周期一次加载页面
<%= 输出%> 表达式 

jsp 初始化
public void jspInit()
{
}

jsp jsp执行 完成页面初始化后,jsp引擎会调用此方法
void _jspService(HttpServletRequest request,HttpServletResponse response)
{
}

jsp 清理 jsp网页从容器中被移除时所发生的
public void jspDestroy()
{
}

jsp中 的9个隐含对象(不需要创建对象,不需要做任何声名,可以直接使用)

1.request 请求对像 HttpServletRequest类实例
request.getParameter("name名字"); 获取表单数据
request.getParameterValues("name")   ; 获取多个value,返回数组
request.setCharacterEncoding("utf-8"); 设置请求编码格式
request.getRequestDispatcher("地址").forward(request,response);  转发不会改变url地址,转发页面可以获取到request的内容
request.setAttribute("属性名","属性值"); 设置属性
request.getAttribute("属性名");  获取属性
2.out 输出对象  PrintWriter 类实例
out.print("字符串");

3.response HttpServletResponse 类实例
response.sendRedirect("地址"); 重定向 

注释
<%-- %> 源代码无法看到

4.session 会话记录在服务端 HttpSession 类实例
session.setAttribute("名字","值"); 设置
session.getAttribute("名字")  获取
设置时间
1.通过代码设置session.setMaxInactiveInterval(秒数)  多少秒不访问即失效
2.通过web.xml 

   
    分钟数
   

 

session.getId() 获取session的id
5.application ServletContext 类实例,与运用上下文有关

6.page java类中的this关键字

7.config 

8.pageContext
提供jsp页面所有对象和命名空间的访问

9.exception 错误记录 默认false
isErrorPage=true/false 当前页面是否可以作为其他页面的错误页面
errorPage="页面" 指定某个页面为错误指向页面

cookie 缓存 保存在本地浏览器中
cookie 不是jsp内置对像

创建一个cookie
Cookie cke=new Cookie("cookie名称","cookie值");
response.addCookie(cke); 添加到response

获取cookie

Cookie[] cks=request.getCookies();

Cookie ck;
ck.getName(); 获得cokie的名字
ck.getValue();获取coolie的值 

cookie 有效期 
默认 浏览器没有关闭一直有效
自己设置指定 ck.setMaxAge(秒数); 设置时间内一直有效,即使关闭浏览器
ck.setMaxAge(-1) 同默认
ck.setMaxAge(0) 销毁

session 也是保存在Cookie 中,可以通过Cookie.getValue 获取session的id

四大作用域

request 一次请求
session 一次会话
page 只在当前页面
application 整个web项目中

静态包含和动态包含

静态包含 
<%@include file="页面地址"%>
包含的内容会合并成一个页面,生成一个java文件
头部内容必须一样
内容中变量也必须一致
request请求的数据共享

动态包含
<jsp:include page=""></jsp:include>

jsp动作

1.jsp:useBean 用于创建对象
<jsp:useBean id="对象名" class="类名,指定路径"/>

2.设置属性值
<jsp:setProperty  name="对象名" property="属性名" value="属性值"/>

3.获取属性值
<jsp:getProperty property="属性名" name="对象名"/>
注意:注释里不能有<>

3.包含页面
<jsp:include page="页面路径">
  <jsp:param value="包含页面中的属性值" name="包含页面中的属性名"/>
</jsp:include>

4.跳转
<jsp:forward page="页面">
    <jsp:param value="包含页面中的属性值" name="包含页面中的属性名"/>
</jsp:forward>

5.设置属性
  <jsp:param value="包含页面中的属性值" name="包含页面中的属性名" scope="request/page/application/session"/>

6.插件
jsp:plugin

2.el 表达式 expression language 
1.获取bean 属性
语法
${
  
}
2.forEach 遍历集合
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:forEach var="list" items="$">
  $

</c:forEach>

jstl 导入jar包后要通过指令引用

jstl 标签库

core:核心标签库

<c:set var="uname" value="wl"/> 默认当前页面
<c:out value="$
" default="找不到时输出默认值"/>
<c:remove var="变量名" scope="作用域 默认page"/>
<c:url value="/"/> 默认输出项目路径
可以设置参数
<c:if test="boolean类型的表达式">
</c:if>
<c:choose>
  <c:when test="">
     类似if
  </c:when>
 <c:otherwise> 类似else</c:otherwise>
</c:choose>

<c:forEach var="" items=""></c:forEach>
<c:forEach var="i" begin="1" end="10"></c:forEach>

fmt:格式化标签库

日期格式化
<f:formatDate var="time" value="{$ 对象名}" pattern="yyyy-MM-dd"/>
格式化时间
<f:formatNumber value="${数字}" pattern="0"/>
xml:被淘汰
sql:被淘汰

Servlet 
生命周期
1.实力化Servlet
2.调用init 初始化 只调用一次
3.service 服务请求一次调用一次
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
protected void service(ServletRequest arg0,ServletResponse arg1)
ServletReques和ServletResponse 是HttpServletRequest,HttpServletResponse父类,必须super调用父类的servlce ,默认执行get方法
doget 执行get请求
dopost 执行post请求

4.destroy 销毁
servlet 运行结束时调用

jsp+servlet程序开发

1.servlet 
2.创建对应的jsp
3.配置web.xml                                                                

Servlet(interface) ServletConfig(interface)  Serializable

                  abstract GenericServlet

                  abstract HttpServlet
             
访问servlet 的方式,注解WebServlet或web.xml配置
过滤器
三个类

Filter->接口-> (所属的包java.servlet包)
 过程
 1.实现Filter 接口
 2.配置.xml  servlet

        MyFilter         com.wl.filter.MyFilter                      name             value          3.重写doFilter()方法,执行结束后chain.doFilter()继续执行 FilterChoin FilterConfig

监听器

事件源:事件发生的源头,需要被监听的对象
事件:发生在事件源身上的事件
监听器:监听事件源的
javaweb 监听器主要监听三个类
Request-->ServletRequestListener
Session-->HttpSessionListener
ServletContext-->ServletContextListener
创建request监听器步骤
实现ServletRequestListener接口

对于监听对象属性操作提供的三种方法
创建监听时
修改监听时
删除监听时

自定义标签

自定义标签实现获取当前时间
自定义标签步骤
1.实现接口 Tag
2.实现标签功能
3.编写一个tld文件 .tld文件位置只能放在WEB-INF下

Ajax
Ajax 核心对象 XMLHttpRequest
ajax依赖浏览器实现对象声明
var xml = new XMLHttpRequest();

xml.onreadystatechange = function() {
    if (xml.readyState == 4) {
        if (xml.status == 200 || xml.status == 304) {
            var data = xml.responseText;
            alert(data);
        }
    }
}
xml.open("get","/BookManager/getAllBook",true);
xml.send(null);

0

评论区