JavaWeb知识点总结

》一:

创建Web项目
项目说明:
1、java Resources:java源文件
2、WebContent:网页内容
html、css、js、jsp、资源、配置文件等


HTML:Hyper Text Markup Language超文本标记语言
作用:
标记描述网页内容
语法规则:
1、不区分大小写
2、固定标签
3、标签成对出现,单标签
4、标签可以嵌套使用
5、属性的值必须使用双引号


HTML中属性,一般不建议使用
属性名称固定,属性的值都需要使用双引号

网页中颜色:
1、rgb(r,g,b)
2、#xxxx
3、英文单词
网页中单位:
1、数字或数字px
2、数字%:占用屏幕的比例
网页中注释

路径:
1、相对路径
不带盘符的路径,相对,一般都是相对当前项目
2、绝对路径
带盘符的路径,又叫物理路径


一、文档标签:
1、 该标签告知浏览器文档所使用的 HTML 规范
2、标签告知浏览器这是一个 HTML 文档。
html 元素是 HTML 文档中最外层的元素。
html 元素也可称为根元素
3、不会出现在网页正文中
4、出现在可以标记编码格式、刷新、作者、描述、搜索关键字等
5、网页正在内容
常用标签都是出现在中


二、文字标签
1、出现在<head>中,网页标题<br>2、<h1>-<h6>标题,从1-到6逐渐变小<br>3、<font> 规定文本的字体、字体尺寸、字体颜色</p> <p>三、列表标签<br>1、<ul>无序标签,前面没有序号,属性:type:可以更改列表签名的符号<br>2、<li>列表中元素标签<br>3、<ol>有序标签,前面有序号,属性:start:起始的值,type:类型,数字、字母等</p> <p>四、块标签<br>1、<span>行内块标签<br>2、<p>段落,默认换行<br>3、<div>块,将网友分割成若干部分,常用属性:align:对齐方式,left\right\center</p> <p>五、表格标签<br>1、<table>表格,一般有行和列组成<br>常用属性:<br>1、width:宽度<br>2、border:边框的宽度<br>3、bgcolor:背景色<br>4、cellspacing:表格之间的间距--外边距<br>5、cellpadding:表格内容的间距--内边矩<br>2、<tr>:行,内部只能出现<th>或<td><br>常用属性:<br>1、align:对齐方式,内部元素的对齐<br>3、<th>列的标题,出现在tr中,表头单元格<br>4、<td>列,数据单元格<br>常用属性:<br>1、colspan:跨列,切记要包含自己<br>2、rowspan:跨行<br>th和td的区别?<br>th就是内部文字:加粗、居中<br>td内部文字正常。居左</p> <p>5、<caption>表格的标题<br>6、<thead>表格的头部,一般内部存放<th><br>7、<tbody>表格的内容,一般存储数据<br>8、<tfoot>表格的底部</p> <p>六、表单标签<br>1、<form>:表单标签,可以搜集用户的信息并提交给指定的服务器<br>2、<input>:用户输入标签<br>常用属性:<br>1、type:类型<br>取值:<br>text:文本框<br>password:密码框<br>checkbox:复选框,可以选择多个<br>radio:单选框,只能选择其一,但是要求拥有相同的name<br>button:按钮<br>submit:提交,结合<form>表单,将表单内的数据提交给action<br>reset:重置,结合<form>表单,清空表单的内容</p> <p>2、name:为当前的标签命名,将来获取标签数据时,会用到<br>3、class:为当前标签起个类名,主要用在CSS中<br>4、value:值,标签的值,主要用在按钮上<br>5、checked:是否选中,h4支持checked,h5支持true或false<br>3、<select>:下拉框,实现多个元素的单选或复选,需要结合<option>使用<br>常用属性:<br>multiple:是否多选<br>name:名称<br>disabled:是否可用<br>4、<textarea>文本域,可以输入多行和多列数据<br>常用属性:<br>1、rows:行数<br>2、cols:列数</p> <p>七、图像&超链接标签<br>1、<img>图片<br>常用属性:<br>1、alt:鼠标进入时的文字<br>2、src:加载的图片路径<br>3、width:设置图片的宽度<br>4、height:设置图片的高度<br>2、<a>超链接标签,可以跳转到指定的url<br>常用属性:<br>1、href:要打开的路径<br>2、name:名称</p> <p>八、框架标签<br>1、<frameset>框架集合标签,主要用来包括框架的标签<br>常用属性:<br>1、cols:内部框架按照宽进行排布<br>2、rows:内部框架按照高度进行排布<br>2、<frame>框架,引用其他网页<br>常用属性:<br>1、src:要加载的路径<br>2、scrolling:滚动条的样式,取值:yes 、no 、auto </p> <p>九、HTML的特殊字符<br>1、< <<br>2、> ><br>3、空格  <br>4、版本编号 ©</p> <p>十、H5新增标签<br>1、<video>视频,可以在网页播放视频<br>格式:<br><video src="movie.ogg" controls="controls"><br></video><br>2、<audio>音频<br>3、<canvas>画布<br>可以绘制2d或3d图<br>切记画布需要结合js使用</p> <p> </p> <p>form表单的get提交和post提交的区别<br>HTTP协议的get请求和postde 区别<br>get:得到,将传递的参数随着url进行传输<br>特点:<br>1、大小有限制<br>2、不安全,拼接url<br>3、中文乱码,url编码为ISO-8859-1(不支持中文)<br>4、效率高<br>post:传输,将传递的参数以流的形式传输<br>特点:<br>1、大小无限制<br>2、安全<br>3、乱码好解决<br>4、效率低</p> <p> </p> <p>十一、其他标签<br>1、<br/>换行<br>2、<hr/>分割线<br>3、 一个空格</p> <p> </p> <p><strong>》二 CSS</strong></p> <p>HTML:超文本标记语言<br>描述内容显示在网页中<br>语法规则:<br>不区分大小写<br>标签成对,但是单标签<br>属性值必须双引号<br>标签固定<br>标签嵌套使用</p> <p>常用标签:<br>meta<br>title<br>div<br>p<br>span<br>a:href<br>img:src<br>input<br>select<br>textarea<br>form:action&method<br>table:border</p> <p>get和post</p> <p> </p> <p>MIME类型:<br>就是标记文档的类型<br>格式:大类型/小类型<br>css:text/css<br>js:text/javascript<br>图片:image/jpg<br>所有图片:image/*</p> <p> </p> <p>1、CSS是什么?<br>层叠样式表 (Cascading Style Sheets) <br>定义如何显示HTML元素的样式<br>2、CSS的作用是什么?<br>1、提高工作效率<br>2、多样式层叠<br>3、提高了内容和样式的分离</p> <p>就是美化HTML显示的内容</p> <p>3、CSS的语法规则<br>规则:<br>选择器{属性名称:值;属性名称:值}<br>eg:<br>h1{color:red;}<br>CSS不区分大小写,但是id和class选择器区分大小写</p> <p>4、CSS的引入方式有多少?<br>1、内嵌样式<br>Html元素都有一个属性:style,直接在html元素内使用<br>eg:<br><h1 style="font-size:20px">今天好好听课</h1><br>2、内部样式<br>在html文档的<head>标签中使用<br><style type="text/css"><br>选择器{属性名称:值}<br></style><br>3、外部样式表<br>创建css文件,在网页中的<head>中通过<link>标签引用<br>eg:<br><link rel="stylesheet" type="text/css" href="theme.css" /><br>rel:文本类型,告知引用的类型<br>type:MIME类型<br>href:外部样式文件所在路径<br>4、导入式外部样式<br>@import url("外部样式文件路径")<br>不推荐使用,主要针对IE老版本</p> <p>样式作用的优先级:<br>内嵌->内部->外部<br>就近原则</p> <p>5、CSS的选择器<br>1、标签选择器<br>格式:HTML标签名称{属性名:值}<br>2、类选择器<br>要求html的标签使用class属性命名类名<br>格式:.类名{属性名:值}<br>HTML标签可以拥有同一个class<br>3、ID选择器<br>要求HTML的标签使用id属性名称,id名不可重复<br>格式:#id名称{属性名:值}<br>4、派生选择器<br>规则:选择器(标签、类、id) 内部标签名称{属性名:值}<br>就是通过标签的内部嵌套来修改指定标签的样式<br>5、属性选择器<br>规则:标签名称(可以省略)[属性名称="值"]{属性名:值}<br>就是通过标签的属性名称来修改指定标签的样式</p> <p>6、伪类选择器<br>规则:标签名称:伪类名称{属性名:值}<br>常用的伪类:<br>:active 向被激活的元素添加样式。 1 <br>:focus 向拥有键盘输入焦点的元素添加样式。 2 <br>:hover 当鼠标悬浮在元素上方时,向元素添加样式。 1 <br>:link 向未被访问的链接添加样式。 1 <br>:visited 向已被访问的链接添加样式。 1 <br>:first-child 向元素的第一个子元素添加样式。 2 <br>:lang 向带有指定 lang 属性的元素添加样式。 <br>:first-letter 向文本的第一个字母添加特殊样式。 1 <br>:first-line 向文本的首行添加特殊样式。 1 <br>:before 在元素之前添加内容。 2 <br>:after 在元素之后添加内容。 </p> <p><br>6、CSS的属性<br>1、背景属性<br>background:背景色/图<br>background-color:背景色<br>background-image:背景图<br>图片过小,标签过大默认会出现背景重复<br>background-repeat:设置重复样式<br>取值:<br>repeat 默认。背景图像将在垂直方向和水平方向重复。 <br>repeat-x 背景图像将在水平方向重复。 <br>repeat-y 背景图像将在垂直方向重复。 <br>no-repeat 背景图像将仅显示一次。<br>background-position:定位,显示的位置<br>取值:<br>left<br>right<br>top<br>bottom<br>center<br>具体数值<br>background-attachment:设置背景图是否跟着一起动<br>取值:<br>scroll 默认值。背景图像会随着页面其余部分的滚动而移动。 <br>fixed 当页面的其余部分滚动时,背景图像不会移动。 <br>2、文本属性 <br>1、text-indent:缩进<br>2、text-align:对齐方式<br>3、letter-spacing: 字母的间距<br>4、word-spacing:单词的间距<br>5、text-transform:变换,大小写转换<br>取值:<br>none <br>uppercase <br>lowercase <br>6、 text-decoration:文本装饰<br>取值:<br>none 默认。定义标准的文本。 <br>underline 定义文本下的一条线。 <br>overline 定义文本上的一条线。 <br>line-through 定义穿过文本下的一条线。 <br>blink 定义闪烁的文本。 <br>7、direction: 文本方向<br>取值:<br>ltr 默认。文本方向从左到右。 <br>rtl 文本方向从右到左。 <br>3、字体属性<br>1、font-family:字体类型<br>楷体、黑体、宋体等<br>2、font-style:设置是否倾斜<br>3、font-weight:设置字体的粗细<br>取值:<br>[100,900]<br>正常:400<br>加粗:700<br>4、font-size:字体大小<br>4、列表属性(不常用)<br>1、list-style-image 将图象设置为列表项标志。 <br>2、list-style-type 设置列表项标志的类型 </p> <p>5、表格属性<br>1、width:宽<br>2、height:高<br>3、border:边框<br>4、text-align 属性设置水平对齐方式,比如左对齐、右对齐或者居中<br>5、vertical-align 属性设置垂直对齐方式,比如顶部对齐、底部对齐或居中对齐:</p> <p>6、轮廓属性(不常用)<br>1、outline-color 设置轮廓的颜色。 <br>2、outline-style 设置轮廓的样式。 <br>取值:<br>none 默认。定义无轮廓。 <br>dotted 定义点状的轮廓。 <br>dashed 定义虚线轮廓。 <br>solid 定义实线轮廓。 <br>double 定义双线轮廓。双线的宽度等同于 outline-width 的值。 <br>groove 定义 3D 凹槽轮廓。此效果取决于 outline-color 值。 <br>ridge 定义 3D 凸槽轮廓。此效果取决于 outline-color 值。 <br>inset 定义 3D 凹边轮廓。此效果取决于 outline-color 值。 <br>outset 定义 3D 凸边轮廓。此效果取决于 outline-color 值。 </p> <p>3、outline-width 设置轮廓的宽度。 </p> <p> </p> <p>7、CSS新增属性</p> <p>CSS的注释方式:<br>在<style>标签下使用<br>/*注释内容*/<br>文字的尺寸<br>em:自动适应尺寸,方便字体的放大或缩小<br>1em=16px<br>0.75em=12px</p> <p>默认字体大小16px<br>px:像素,表达字体大小,缩放的时候有点不好用<br>为了网页的实用性,推荐字体大小单位em<br>%:百分比表达字体大小<br>italic和oblique的区别?<br>体(italic)是一种简单的字体风格,对每个字母的结构有一些小改动,来反映变化的外观。<br>与此不同,倾斜(oblique)文本则是正常竖直文本的一个倾斜版本。<br>通常情况下,italic 和 oblique 文本在 web 浏览器中看上去完全一样。</p> <p> </p> <p><strong>》三HTML+CSS综合案例</strong></p> <p> </p> <p>网页中:多个空格会起到一个空格的作用,换行也会起到一个空格的作用</p> <p>注释:<br>java中的注释:<br>1、单行注释 eg://注释<br>2、多行注释 eg:/*多行注释*/<br>3、文档注释 eg:/**文档注释*/<br>HTML中的注释:<br>1、<!--html的注释--><br>CSS中的注释:只出现在<style>或css文件中<br>1、/*CSS注释*/<br>JavaScript中的注释:只出现在<script>或js文件中<br>1、单行注释 eg://单行注释<br>2、多行注释 eg:/*多行注释*/</p> <p> </p> <p>1、JS是什么?<br>JavaScript:脚本语言,运行浏览器<br>让HTML进行交互</p> <p>JAVA和JS没任何关系</p> <p>2、JS的作用是什么?<br>1、获取和设置HTML元素<br>2、动态改变页面<br>3、校验、检测、对事件做出响应等<br>4、获取浏览器、Cookie等信息</p> <p><br>3、JS的引用方式?<br>1、在<head>引用<br><head><br><script type="text/javascript"></p> <p></script><br>2、在<body>引用<br>eg:<br><body><br><script type="text/javascript"></p> <p></script><br></body><br></head><br>3、引用外部js文件<br><script type="text/javascript" src="js文件路径"/></p> <p>js写在head和body的区别?<br>head中,获取不到HTML元素,因为此时HTML还未加载完成(函数外)<br>body中,可以获取HTML元素</p> <p><br>4、JS的数据类型<br>java的数据类型:<br>1、基本数据类型:byte short int long float double char boolean<br>2、引用数据类型:数组、枚举、类、集合、接口等</p> <p>JS的数据类型:<br>1、原始数据类型<br>Undefined 、number、boolean、string、NULL<br>原始就是声明之后直接赋值而不通过new来创建<br>var v=12;<br>var v=true;<br>var v="aaa";<br>2、引用数据类型<br>Number\Boolean\String\内置类型<br>就是通过new 创建的额类型都属于引用类型</p> <p>js中的typeof&instanceof 区别?<br> typeof:主要用来显示原始类型,如果显示引用类型无论什么类型都为Object<br> 格式:typeof 变量名称<br> eg: typeof v1</p> <p> instanceof:主要用来验证引用类型,返回值为boolean类型<br> 格式: 变量名称 instanceof 引用数据类型 返回true或flase <br> eg: v1 instanceof Boolean</p> <p>例如:<br><body><br><script type="text/javascript"></p> <p>var v1=new Number(2);</p> <p>document.write("<br/>类型:"+(typeof v1));//类型:object<br>document.write("<br/>类型:"+(v1 instanceof Boolean));//类型:false </p> <p></script><br></body></p> <p>5、JS的基本语法</p> <p>JS的语法规则:<br>1、区分大小写<br>2、变量可以声明也可以不声明<br>3、出现在<script>标签内部或js文件中<br>4、定义函数需要使用关键字function<br>5、函数可以有参数和返回值<br>6、JS内置了很多对象可以直接使用</p> <p><br>1、变量<br>格式:var 变量名称[=值]<br>js的变量可以不声明直接使用<br>var v;<br>v=12;<br>t=11;</p> <p>变量命名规则:<br>1、变量对大小写敏感(y 和 Y 是两个不同的变量) <br>2、变量必须以字母或下划线开始 <br>3、不能是关键字</p> <p><br>JS中的变量<br>全局变量:声明在函数外的变量或者是函数内不带var的变量<br>局部变量:声明在函数内的变量且带有var,作用域在函数内部</p> <p>变量如果在函数内部不使用var进行声明,那么默认为全局变量<br>如果使用var进行声明那么就属于局部变量</p> <p>2、运算符<br>java的运算符:算术、比较、赋值、逻辑、位、三目、字符串连接运算符<br>JS运算符差不多<br>需要特别注意的:<br>1、==和===的区别<br>==只比较内容(number)<br>===比较内容和类型</p> <p>例:<br>x=5;<br>运算符 描述 例子 <br> == 等于 x==8 为 false <br> === 全等(值和类型) x===5 为 true;x==="5" 为 false <br><br>1.1 逻辑运算符&&和||和!<br> 逻辑运算符<br> 逻辑运算符用于测定变量或值之间的逻辑。</p> <p> 给定 x=6 以及 y=3,下表解释了逻辑运算符:</p> <p> 运算符 描述 例子 <br> && and (x < 10 && y > 1) 为 true <br> || or (x==5 || y==5) 为 false <br> ! not !(x==y) 为 true </p> <p><br>2、js也支持三目运算符<br>X?Y:Z</p> <p>程序结构:<br>1、顺序结构<br>2、分支结构<br>3、循环结构<br>3、分支语句<br>1、if(条件)<br>2、switch</p> <p>4、循环<br>4.1for语句<br>格式:for(表达式1;表达式2;表达式3)<br> {循环体}<br>执行过程:<br>先执行表达式1再验证表达式2true则执行循环体接着执行表达式3再执行表达式2true继续false结束<br>4.2while语句<br>格式:while(表达式)<br> {<br> 循环体;<br> }<br>4.3do/while语句<br>格式:do{<br> 循环体;<br>}while(表达式);</p> <p> </p> <p><br>6、JS的消息框<br>js主要提供了三种消息框<br> 1、普通警告框<br> alert("内容");<br> 2、确认框<br> confirm("内容")<br>会返回一个boolean值,如果点击"确定"返回true,反之false<br> 3、提示框<br> prompt("提示内容","默认值");<br>会返回提示框中的输入框的内容</p> <p>7、JS函数<br>也就是java中的方法<br>提高代码的复用<br>格式:</p> <p> function 函数名称([参数名]) {</p> <p> //代码块<br> [return 返回值] //return 返回值 可有可没有<br> }<br><br>例:<br><head><br><script type="text/javascript"></p> <p> function show1(){<br> document.write("OK<br/>");<br>}<br></script><br></head></p> <p>8、JS事件<br>就是HTML的事件属性<br>事件属性的值一般都是JS函数<br>常用事件:<br>onclick 单击<br>ondblclick 双击<br>onkeydown:键盘键按下<br>onmouseout 鼠标移出 <br>onmouseover 鼠标进入<br>onblur 失去焦点<br>onfocus 获取焦点<br>onchange 内容变化<br>onselect 选择<br>onsubmit 提交-表单<br>onload 加载完</p> <p> </p> <p> </p> <p><br>9、JS常用对象</p> <p> </p> <p>10、JS之Window、History 、Location </p> <p> </p> <p>11、JS的DOM</p> <p>二级联动</p> <p> </p> <p>12、JS综合案例<br>点名、抽奖、贪吃蛇、瀑布流等</p> <p> </p> <p><strong>》四</strong></p> <p> </p> <p>注释:<br>java中的注释:<br>1、单行注释 eg://注释<br>2、多行注释 eg:/*多行注释*/<br>3、文档注释 eg:/**文档注释*/<br>HTML中的注释:<br>1、<!--html的注释--><br>CSS中的注释:只出现在<style>或css文件中<br>1、/*CSS注释*/<br>JavaScript中的注释:只出现在<script>或js文件中<br>1、单行注释 eg://单行注释<br>2、多行注释 eg:/*多行注释*/</p> <p> </p> <p>1、JS是什么?<br>JavaScript:脚本语言,运行浏览器<br>让HTML进行交互</p> <p>JAVA和JS没任何关系</p> <p>2、JS的作用是什么?<br> 2.1、获取和设置HTML元素<br> 2.2、动态改变页面<br> 2.3、校验、检测、对事件做出响应等<br> 2.4、获取浏览器、Cookie等信息</p> <p><br>3、JS的引用方式?<br> 3.1、在<body>引用<br> eg:<br> <body><br> <script type="text/javascript"><br><br> </script><br> </body><br> 3.2、在<head>引用<br> <head><br> <script type="text/javascript"><br><br> </script><br> </head><br> 3.3、引用外部js文件<br> <script type="text/javascript" src="js文件路径"/></p> <p>js写在head和body的区别?<br> head中,获取不到HTML元素,因为此时HTML还未加载完成(函数外)<br> body中,可以获取HTML元素</p> <p><br>4、JS的数据类型<br> java的数据类型:<br> 1、基本数据类型:byte short int long float double char boolean<br> 2、引用数据类型:数组、枚举、类、集合、接口等</p> <p>JS的数据类型:<br>1、原始数据类型<br> Undefined 、number、boolean、string、NULL<br> 原始就是声明之后直接赋值而不通过new来创建<br> var v=12;<br> var v=true;<br> var v="aaa";<br> 2、引用数据类型<br>Number\Boolean\String\内置类型<br>就是通过new 创建的额类型都属于引用类型</p> <p>js中的typeof&instanceof 区别?<br> typeof:主要用来显示原始类型,如果显示引用类型无论什么类型都为Object<br> 格式:typeof 变量名称<br> instanceof:主要用来验证引用类型,返回值为boolean类型<br> 格式: 变量名称 instanceof 引用数据类型 返回true或flase </p> <p>5、JS的基本语法</p> <p>JS的语法规则:<br> 1、区分大小写<br> 2、变量可以声明也可以不声明<br> 3、出现在<script>标签内部或js文件中<br> 4、定义函数需要使用关键字function<br> 5、函数可以有参数和返回值<br> 6、JS内置了很多对象可以直接使用</p> <p><br>1、变量<br> 格式:var 变量名称[=值]<br> js的变量可以不声明直接使用<br> var v;<br> v=12;<br> t=11;</p> <p>变量命名规则:<br> 1、变量对大小写敏感(y 和 Y 是两个不同的变量) <br> 2、变量必须以字母或下划线开始 <br> 3、不能是关键字</p> <p><br>JS中的变量<br> 全局变量:声明在函数外的变量或者是函数内不带var的变量<br> 局部变量:声明在函数内的变量且带有var,作用域在函数内部<br> 变量如果在函数内部不使用var进行声明,那么默认为全局变量<br> 如果使用var进行声明那么就属于局部变量</p> <p>2、运算符<br>java的运算符:算术、比较、赋值、逻辑、位、三目、字符串连接运算符<br> JS运算符差不多<br> 需要特别注意的:<br> 1、==和===的区别<br> ==只比较内容(number)<br> ===比较内容和类型<br> 2、js也支持三目运算符<br> X?Y:Z</p> <p>程序结构:<br> 1、顺序结构<br> 2、分支结构<br> 3、循环结构<br> 3、分支语句<br> 1、if(条件)<br> 2、switch</p> <p>4、循环<br> 4.1for语句<br> 格式:for(表达式1;表达式2;表达式3)<br> {循环体}<br> 执行过程:<br> 先执行表达式1再验证表达式2true则执行循环体接着执行表达式3再执行表达式2true继续false结束<br> 4.2while语句<br> 格式:while(表达式)<br> {<br> 循环体;<br> }<br> 4.3do/while语句<br> 格式:do{<br> 循环体;<br> }while(表达式);</p> <p> </p> <p><br>6、JS的消息框<br>js主要提供了三种消息框<br> 6.1、普通警告框<br> alert("内容");<br> 6.2、确认框<br> confirm("内容")<br> 会返回一个boolean值,如果点击"确定"返回true,反之false<br> 6.3、提示框<br> prompt("提示内容","默认值");<br> 会返回提示框中的输入框的内容</p> <p>7、JS函数<br>也就是java中的方法<br> 提高代码的复用<br> 格式:<br> function 函数名称([参数名]) {<br><br> //代码块<br> [return 返回值]<br> }</p> <p> </p> <p>8、JS事件<br>就是HTML的事件属性<br>事件属性的值一般都是JS函数<br>常用事件:<br> onclick 单击<br> ondblclick 双击<br> onkeydown:键盘键按下<br> onmouseout 鼠标移出 <br> onmouseover 鼠标进入<br> onblur 失去焦点<br> onfocus 获取焦点<br> onchange 内容变化<br> onselect 选择<br> onsubmit 提交-表单<br> onload 加载完</p> <p> </p> <p> </p> <p><br>9、JS常用对象<br>JS是面向对象的编程语言<br>9.1Date日期类<br>获取浏览器的时间(本地电脑的时间)<br>常用方法:<br> getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 1 3 <br> getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。 1 3 <br> getMonth() 从 Date 对象返回月份 (0 ~ 11)。 1 3 <br> getFullYear() 从 Date 对象以四位数字返回年份。 1 4 <br> getYear() 请使用 getFullYear() 方法代替。 1 3 <br> getHours() 返回 Date 对象的小时 (0 ~ 23)。 1 3 <br> getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。 1 3 <br> getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。 1 3 <br> getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。 </p> <p> </p> <p>JS中的定时器:<br> 1、setTimeout:设置延迟执行的方法和延迟时间<br> 参数说明:<br> 1、要重复执行的方法<br> 2、延迟的时间,毫秒<br> 返回值:<br> 1、当前定时器的标记(为了停止)<br> 2、clearTimeout:停止重复执行的方法<br> 参数说明:<br> 1、定时器开始的标记<br>重复间隔执行方法、计时器、定时刷新等<br>9.2Number数字<br>原始类型数字对应的引用类型<br>常用方法:<br> valueOf 返回一个 Number 对象的基本数字值。 <br> toFixed 把数字转换为字符串,结果的小数点后有指定位数的数字。 <br> toString 把数字转换为字符串,使用指定的基数。 <br>9.3Math算术运算类<br>常用的算术运算<br>常用方法:<br> abs(x) 返回数的绝对值。 <br> floor(x) 对数进行下舍入。 <br> pow(x,y) 返回 x 的 y 次幂。 <br> random() 返回 0 ~ 1 之间的随机数。 1 3 <br> round(x) 把数四舍五入为最接近的整数。 <br>9.4String字符串类<br>常用的字符串的引用类型<br>常用属性:<br> length 字符串的长度 <br>常用方法:<br> charAt() 返回在指定位置的字符。 1 3 <br> charCodeAt() 返回在指定的位置的字符的 Unicode 编码。 <br> concat() 连接字符串。 <br> substr() 从起始索引号提取字符串中指定数目的字符。 1 4 <br> substring() 提取字符串中两个指定的索引号之间的字符。 <br> toLowerCase() 把字符串转换为小写。 1 3 <br> toUpperCase() 把字符串转换为大写。 <br> split() 把字符串分割为字符串数组。 <br> indexOf() 检索字符串。 <br> lastIndexOf() 从后向前搜索字符串。 <br> match() 找到一个或多个正在表达式的匹配。 1 4 <br> replace() 替换与正则表达式匹配的子串。 1 4 <br> search() 检索与正则表达式相匹配的值。 </p> <p> </p> <p>String的substr()和substring的区别?<br>在截取的起始索引都为正数或0的话,没有区别<br>如果截取的开始索引为负数,那么substr从要截取的字符串.length+负数索引处开始<br>而substring则把负数作为0处理<br>简而言之:substr负数的话倒着截取,substring从0截取</p> <p>9.5Array数组类<br>存储多个变量的引用类型,且长度可变<br>9.1数组的使用:<br> 9.1.1、创建数组对象三种方式:<br> 9.1.1.1:new Array();<br> 9.1.1.2:new Array(长度);<br> 9.1.1.3:new Array(元素);<br>9.2常用属性<br> length:获取数组的长度<br>9.3常用方法<br> concat() 连接两个或更多的数组,并返回结果。 1 4 <br> join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 1 4 <br> pop() 删除并返回数组的最后一个元素 1 5.5 <br> push() 向数组的末尾添加一个或更多元素,并返回新的长度。 1 5.5 <br> reverse() 颠倒数组中元素的顺序。 1 4 <br> shift() 删除并返回数组的第一个元素 1 5.5 <br> slice() 从某个已有的数组返回选定的元素 1 4 <br> sort() 对数组的元素进行排序 <br> splice() 删除元素,并向数组添加新元素。 </p> <p><br>注意:<br>1、java中的数组和JS中数组不一样<br>2、JS中数组的sort方法按照字母的升序进行排列,如果是数字进行排序需要定义排序函数(2个参数)<br>3、slice方法,<br>参数说明:<br> 第一个参数:指定索引,删除和新增的索引<br> 第二个参数:删除的元素个数 可以为0<br> 第三个参数:新增的元素内容,可以有多个</p> <p>9.6Regexp正则类<br>校验、匹配、替换等字符串的操作<br>JS中的正则语法:/正则语法/属性<br>9.6.1正则中的语法<br> 9.6.1.1:正则语法<br> 跟java中一样<br> . + * ? [] {} \d \D \w \D \b \B等<br> 9.6.1.2:正则属性<br> i 执行对大小写不敏感的匹配。 <br> g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 <br> m 执行多行匹配。 <br>9.6.2正则类的常用方法<br> 1、exec:执行正则验证,返回匹配的内容,字符串索引停留在最后一次匹配的索引处<br> 2、test:执行正则验证,返回true(验证成功)或flase<br>9.6.3String类中支持正则验证的方法<br> 1、match:匹配,支持全局匹配(可以返回匹配到的所有的内容)<br> 2、search:查找,从前往后查找是否符合正则的内容(不支持全局,第一次出现的)<br> 3、replace:替换,参数说明:第一个参数:字符串或正则表达式,第二个参数:字符串、规定的符合、函数<br> 4、split:切割<br><br><br><br><br>10、JS的全局函数<br>可以在任何一个网页中直接使用<br>常用函数:<br> isNaN() 检查某个值是否是数字。 1 3 <br> Number() 把对象的值转换为数字。 1 <br> parseFloat() 解析一个字符串并返回一个浮点数。 1 3 <br> parseInt() 解析一个字符串并返回一个整数。 1 3 <br> String() 把对象的值转换为字符串。 <br> encodeURI() 把字符串编码为 URI。 <br> decodeURI() 解码某个编码的 URI。 </p> <p><br><br>10、JS的DOM<br>Document:文档<br>通过DOM可以获取并操作HTML的元素<br>10.1DOM获取HTML标签对象的方式<br> 10.1.1:通过ID<br> 返回的是一个HTML元素对象<br> document.getElementById("id值");<br> 10.1.2:通过name<br> 返回的是网页网页中所有此name值的HTML元素数组<br> document.getElementsByName("name值"); <br> 10.1.3:通过HTML标签名称<br> 返回的是网页中所有此标签的元素数组<br> document.getElementsByTagName("name值");<br>10.2DOM创建HTML元素<br> 10.2.1、通过元素的innerHTML属性添加<br> 10.2.2、通过document的createElement方法创建并通过appenChild添加到指定元素下<br> 方法说明:<br> 1、createElement:创建元素,参数说明:1、元素名称<br> 2、appenChild:添加子元素,参数说明:1、要添加的子元素的对象</p> <p>10.3DOM设置HTML属性 <br> 1、通过对象的style类设置<br> 2、通过对象的setAttribute设置<br> setAttribute方法说明<br> 参数:<br> 1、属性名称<br> 2、属性的值<br><br><br>11、JS之BOM<br>浏览器对象,操作浏览器<br>Window、History 、Location <br>11.1Window窗口<br> 1、open方法,创建或打开新的窗口<br> open(URL,name,features,replace):<br> 参数说明:<br> 1、要打开的url<br> 2、名称,标记窗口<br> 3、窗口特征属性,常用的值:width\height\left\top等<br> 4、替换,boolean类型,true:在当前窗口打开,false新建一个窗口<br>11.2History浏览器的历史记录<br> 常用属性:length:历史记录的数量<br> 常用方法:<br> back() 加载 history 列表中的前一个 URL。 <br> forward() 加载 history 列表中的下一个 URL。 <br> go() 加载 history 列表中的某个具体页面。 需要参数:要打开的历史记录的网页<br><br>11.3Location网址信息<br> 常用方法:<br> 1、assign() 加载新的文档。 <br> 2、reload() 重新加载当前文档。<br> 3、replace() 用新的文档替换当前文档。 <br>注意:<br>assign和replace的区别?<br>assign只是在当前窗口中打开新的网址,所以可以后退<br>replace将当前显示的网页的内容替换为新的内容<br>11.4Navigator获取浏览器信息<br>常用属性:<br> appName 返回浏览器的名称。 <br> appVersion 返回浏览器的平台和版本信息。 </p> <p><br>JS重点:<br>1、函数<br>2、事件<br>3、对象<br>4、DOM</p> <p> </p> <p> </p> <p><br>JS综合:<br>1、验证码<br>2、注册页面校验<br>3、浮动窗<br>4、二级联动<br>5、贪吃蛇<br>6、点名</p> <p><br>H5的面板<br>canvans绘制流程:<br>1、获取对应的<canvans>对象<br>var cvn=document.getElementById("id名称");<br>2、获取Context对象<br>var cn=cvn.getContext("2d");<br>3、设置样式<br>cn.fileStyle="颜色";<br>4、绘制<br>cn.fillRect(x,y,width,height):绘制矩形<br>参数说明:<br> 4.1x:左上角的x坐标<br> 4.2y:左上角的y坐标<br> 4.3width:宽度<br> 4.4height:高度<br>moveTo:移动<br>lineTo:绘制线<br>arc:绘制圆</p> <p>Web前端:<br>HTML:描述网页<br>特点:<br>固定标签<br>不区分大小写<br>属性的值必须双引号</p> <p>网页:<br><html><br><head></head><br><body></body><br></html></p> <p>重点记忆的标签:<br>form表单<br>div<br>a\img\textarea\hr\ol\ul\table</p> <p>H5:<br>video<br>audio<br>canvas<br>离线数据库(SQLITE)<br>CSS:样式表<br>美化网页的<br>1、引用方式:内嵌、内部、外部<br>2、格式:选择器{属性名称:值}<br>3、选择器:标签、类(.)、id(#)、派生、属性<br>4、常用的属性:背景、字体、文字、盒子(边框、外边距、内边距)、列表、浮动、定位<br>JS:浏览器脚本语言<br>动态交互HTML和CSS<br>1、基本语法<br>2、内置对象:Array\String\Math\Date\RegExp<br>3、函数:function 函数名称([参数]){ [return 返回值]}<br>4、属性事件:onclick\onchange\onsubmit\onmouseover\onmouseout<br>5、JS之DOM:getElementById/getElementsByName/getElementsByTagName/createElement<br>6、JS之BOM:Window\History\Location</p> <p> </p> <p><strong>》五MySQL</strong></p> <p>数据存储的方式:<br>1、非持久性存储<br>就是会随着程序的关闭而消失的存储<br>存储在内存中<br>数组和集合<br>2、持久性存储<br>就是存储在硬盘上<br>IO流和数据库</p> <p><br>一、数据库:存储数据的仓库<br>好处:<br>1、效率高<br>2、容差率低<br>3、稳定性<br>4、备份和恢复</p> <p>二、数据库涉及的概念:<br>数据库:DataBase,db文件,存储在磁盘上,按照一定的规则进行数据的处理,可以让用户共享<br>数据管理系统:DataBase Management System,DBMS就是操作数据库的软件</p> <p>市场主流数据流:SQL Server、Oracle、MySQL、DB2等,移动端数据库:SQLITE</p> <p>三、数据库的安装与卸载<br>MySQL的安装:<br>按照图解,无脑下一步<br>MYSQL的卸载:<br>1、打开服务,停止mysql的服务<br>2、打开控制面板->程序->mysql卸载<br>3、在C盘和安装盘下,搜索mysql,将搜索到的删除<br>4、打开注册表,搜索mysql,将找到的全部删除</p> <p>四、打开数据的方式<br>打开:<br>1、开始-所有程序-mysql<br>直接输入密码<br>2、在系统变量path上添加mysql的安装目录(C:\Program Files\MySQL\MySQL Server 5.5\bin)<br>先打开cmd<br>再输入:mysql [-h主机地址] -u 用户名 -p <br>会提示输入密码:</p> <p>五、MySQL数据库的组成<br>5.1数据库服务器<br>就是数据库安装所在的机器,可以供别人访问<br>5.2数据库<br>一般来说一个应用程序对应一个数据库<br>切记:进入数据库软件之后,要选择数据库或创建数据库<br>5.3表---对应的是类<br>一个数据库会对应多个表,表是存储数据<br>表的组成:<br>1、表名<br>同一个数据库的表名不能重复<br>2、字段:域、属性、表头、列名<br>规定该列表示的意思<br>同一表中列名不可重复<br>3、数据<br>表中记录的一条条数据</p> <p>my.ini:MySQL的配置信息<br>六、SQL<br>SQL:Structure Query Language:结构化查询语言<br>专门用在操作关系型数据库的语言<br>任何关系型数据库都支持SQL,但是每门数据库都有细微的差别</p> <p>SQL语句分类:<br>DDL(*)(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;<br> DML(**)(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);增删改<br> DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;<br> DQL(*****)(Data Query Language):数据查询语言,用来查询记录(数据)。查询(select)<br> 注意:SQL语句必须以;结尾</p> <p>七、SQL语句<br>sql语句不区分大小写 <br>7.1DDL数据定义语句<br>包含的关键字:<br>7.1 CREATE:新建<br>可以新建数据库、表<br>7.1.1创建数据库格式:<br> CREATE database [ if NOT EXISTS] 名称 [CHARACTER SET 编码格式] [COLLATE 比较方式];</p> <p>创建一个编码格式为utf8的数据库<br>create database db_study01 ;//默认编码格式<br>create database db_study02 character set utf8 collate utf8_general_ci;//创建数据库编码格式utf8比较方式对应的</p> <p>7.1.2创建表的格式:<br>CREATE table [ if NOT EXISTS] 名称 (字段名称 数据类型,……) [CHARACTER SET 编码格式] [COLLATE 比较方式];</p> <p>创建一张user表<br>create table user (id int,name varchar(20),age int);</p> <p><br>7.2ALTER:修改<br>可以修改数据库的编码和表的字段<br>7.2.1修改数据库格式:ALTER database 名称 [character set 编码][cllate 比较格式];</p> <p>修改数据库mydb2的编码格式为gbk<br>alter database mydb2 character set gbk; <br>7.2.2修改数据库表的格式:<br>ALTER table 名称 [ADD|CHANGE|DROP|MODIFY] 字段名称 [新名称] [数据类型]</p> <p>为user表新增一个字段password 字符串32<br>alter table user add password varchar(32);<br>alter table user add test varchar(32);<br>为user表中的name字段重命名为username<br>alter table user change name username varchar(20);<br>删除user表中的test字段<br>alter table user drop test;<br>修改user表中username字段的长度为30<br>alter table user modify username varchar(30);</p> <p><br>修改user的表名为user1<br>rename table user to user1;</p> <p>7.3DROP删除<br>可以删除数据库或表<br>7.3.1删除数据库格式:<br> DROP database [ if EXISTS] 名称;<br>7.3.2删除数据表格式:<br> DROP table 名称;</p> <p>删除数据库mydb4<br>drop database if exists mydb4;<br>删除test3表<br>drop table if exists test3;</p> <p><br>DML语句:主要是对表中的数据进行新增、修改、删除操作<br>7.4INSERT新增语句<br>格式:INSERT INTO 表名[(字段名称)] values(值1,值2);</p> <p>为user表新增数据<br>insert into user (id,username,password) values(2,'贾金山','8888');<br>insert into user (id,username,password,flag) values(5,'战旗','838',1);<br>insert into user (id,username,password,flag) values(6,'战旗','838',1);<br>insert into user (id,username,password,flag) values(7,'战旗','838',1);<br>insert into user (id,username,password,flag) values(8,'战旗','838',1);<br>//简写形式<br>insert into user values(4,'曹怡',"123456");<br>insert into user(username,id,password) values('王星',5,"123");<br>7.5UPDATE修改语句<br>格式:UPDATE 表名 SET 字段名称=值[多个字段] [where 条件]</p> <p>修改id为2的用户名字为金星<br>update user set username='金星' where id=2;<br>修改id为3的用户的名字和密码<br>update user set username='网警',password="654321" where id=3;<br>修改user中所有的密码为123456<br>update user set password='123456';</p> <p> </p> <p>7.6DELETE删除语句<br>删除表中的数据<br>格式:DELETE FROM 表名 [where 条件];</p> <p>删除user中名称为王星的人<br>delete from user where username='王星';</p> <p>开发中的删除:<br>1、真删除<br>直接使用delete语句删除指定的数据<br>2、假删除<br>使用update 修该指定字段</p> <p>为user表新增一字段,flag标记是否有效,0有效1删除<br>alter table user add flag int;<br>update user set flag=0;<br>select * from user where flag=0;<br>update user set flag=1 where id=4;</p> <p>DQL语句:数据查询语句,关键字:select<br>7.7SELECT查询语句<br>主要用来查询数据<br>格式:SELECT *|字段名称|函数 from 表名 [where 条件] [order by 字段名称] [group by 字段名称][having 条件][limit 限制]</p> <p>7.7.1*<br>*在查询语句中表示当前表的所有字段(顺序为建表时字段顺序)<br>7.7.2where条件:<br>常用的条件符合:<br> 1、=、<、>、!=、<>、<=、>=<br> 2、and:并且,同时满足<br> 3、or:或者,满足其一<br> 4、in (值,……):对应的字段的值再()里,一般不连续的多个值<br> 5、between A and B:在A和B之间,[A,B]<br> 6、IS NULL:为空<br> 7、NOT:不<br> 8、子查询</p> <p>查询user表中所有信息<br>select * from user;<br>等价于<br>select id,username,password,flag from user;<br>查询有效的名字<br>select username from user where flag=0;<br>查询id大于1小于6的人<br>select * from user where id<6 and id>1;<br>等价<br>select * from user where id between 2 and 5;<br>查询id为4或者id为8<br>select * from user where id=4 or id=8;<br>查询id不为6的人<br>select * from user where id!=6;<br>等价<br>select * from user where id<>6;<br>查询id为2或5或6的人<br>select * from user where id=2 or id=5 or id=6;<br>等价<br>select * from user where id in (2,5,6);</p> <p>八、数据库的备份和恢复<br>8.1数据的备份<br>在cmd中,输入:mysqldump -u 用户名 -p 要备份的数据库 >路径/文件名称.sql<br>8.2数据的恢复<br>需要进入到Mysql<br>创建数据库<br>并使用数据库<br>source 要恢复的sql文件的路径;</p> <p> </p> <p> </p> <p>查看当前的所有数据库:<br>show databases;<br>查看指定数据库的创建语句<br>show create database 数据库名称;<br>查看数据库的编码格式<br>show variables like 'character%';<br>查看mySQL的支持的编码 <br>show character set;<br>查看对应编码的比较集<br> show collation;<br>查看数据库的所有表名<br>show tables;<br>查看数据库中建表语句<br>show create table 表名; </p> <p>MySQL数据类型:<br>INT 数字类型(4个字节)<br>SMALLINT 数字(2个字节)<br>BIGINT 数字(4个字节)<br>DATE 日期<br>TIME 时间<br>DATETIME 日期时间<br>VARCHAR(长度) 字符串<br>TEXT 文本<br>BLOB 二进制<br>FLOAT 浮点型<br>DOUBLE 双精度</p> <p> </p> <p><br>数据库基本操作:<br>1、创建数据库(create)<br>2、选择数据(use)<br>3、创建表(create)<br>4、操作表数据(insert\delete\update\select)</p> <p> </p> <p><strong>》六</strong></p> <p> </p> <p>where 条件:<br>=\<\>\<>\!=\>=<br>or:或者<br>and:并且<br>between A and B:在A和B之间<br>in (值):在……内部<br>is null:为null<br>not:不<br>select的标准格式:select *|字段列表|聚合函数 from 表名 [where 条件] [group by 字段] [having 字段][order by 字段 ASC|DESC][limit 起始索引,数量]]</p> <p>一、模糊查询<br>like:模糊查询的关键字<br>_:1个字符<br>%:任意个字符</p> <p>1.1以XX开头<br>格式:select *|字段 from 表名 where 字段 like 'XX%';</p> <p>查询商品表中名字以华为开头的<br>select * from goods where name like '华为%';<br>查询商品表中名字以华为开头的且后面就一个字符的商品<br>select * from goods where name like '华为_' ;</p> <p>1.2以XX结尾<br>格式:select *|字段 from 表名 where 字段 like '%XX';</p> <p>查询商品表中价格以9结尾的<br>select * from goods where price like '%9';<br>查询商品表中价格为三位数且以9结尾<br>select * from goods where price like '__9';<br>等价于<br>select * from goods where price like '%9' and price >99 and price <1000;</p> <p>1.3包含XX<br>格式:select *|字段 from 表名 where 字段 like '%XX%';</p> <p>查询商品表中名字包含o的商品<br>select * from goods where name like '%o%';</p> <p><br>创建一个商品表:<br>create table goods(id int,name varchar(50),address varchar(50),price int);<br>新增数据<br>insert into goods(id,name,address,price) values(1,'华为手机P9',"河南",3999);<br>insert into goods(id,name,address,price) values(2,'华为手机P10',"河南",2999);<br>insert into goods(id,name,address,price) values(3,'苹果7',"天津",999);<br>insert into goods(id,name,address,price) values(4,'苹果7s',"北京",30999);<br>insert into goods(id,name,address,price) values(5,'小米6',"河南",9999);<br>insert into goods(id,name,address,price) values(6,'三星note7',"河南",99);<br>insert into goods(id,name,address,price) values(7,'三星note8',"首尔",999);<br>insert into goods(id,name,address,price) values(8,'中兴G7',"山东",888);<br>insert into goods(id,name,address,price) values(9,'oppoR9',"河北",7777);</p> <p><br>二、字段控制查询</p> <p>2.1查询结果去重<br>distinct:对查询结果去重</p> <p>//查询goods表中所有数据并去除重复的<br>select DISTINCT * from goods;</p> <p>2.2对null值转换<br>ifnull(字段名称 , 待转换的值):标记某个字段为null的话转换为指定的数据参与运算<br>查询goods表中id和price的和<br>select id+price from goods;<br>null值和任何类型的数据运算结果都是null</p> <p>select id+ifnull(price,10000) from goods;</p> <p>2.3别名<br>可以为运算的结果起别名: as 别名<br>也可以为表起别名,as可以省略</p> <p>查询goods表中id和价格的和,要求价格为null则作为10000处理<br>select id+ifnull(price,10000) as total from goods;<br>等价于<br>select id+ifnull(price,10000) total from goods;</p> <p>查询goods表名价格小于100的商品<br>select * from goods where price <100;<br>等价于<br>select * from goods where goods.price <100;<br>等价于<br>select * from goods g where g.price <100;</p> <p> </p> <p>三、排序<br>order by 字段 排序方式,……<br>排序方式:ASC:升序(默认排序),DESC:降序</p> <p>查询goods表中按照价格升序排列<br>select * from goods order by price;<br>等价于<br>select * from goods order by price ASC;</p> <p>查询goods表中按照价格降序排列<br>select * from goods order by price DESC;</p> <p>查询goods表中按照价格降序排列,如果价格相同按照id进行升序排列<br>select * from goods order by price DESC, id asc;</p> <p>四、聚合函数<br>COUNT:计数,计算指定列不为null的数量<br>MAX:计算指定列的最大值<br>MIN:计算指定列的最小值<br>SUM:计算指定列的总和<br>AVG:计算指定列的平均值</p> <p> </p> <p>查询goods表中的数据的数量<br>//查询goods表中price不为null的数据行<br>select count(price) from goods;<br>//查询goods表中id不为null的数据行<br>select count(id) from goods;<br>//查询goods表中的数据行<br>select count(1) from goods;</p> <p>查询goods表中所有price的总和<br>select sum(price) from goods;<br>查询goods表中价格最高和和最低的商品<br>select MAX(price) maxp,min(price) minp from goods;<br>查询goods表中的评价价格<br>select avg(price) from goods;</p> <p><br>五、分组<br>group by 字段名称 [having 条件]</p> <p><br>create table student (no int ,name varchar(5),sex varchar(2),age int);<br>insert into student values(17000501,'桑晓东','男',18);<br>insert into student values(17000502,'张文秀','男',18);<br>insert into student values(17000503,'曹怡','女',16);<br>insert into student values(17000504,'杨海婷','女',12);<br>insert into student values(17000505,'贾金山','女',16);<br>insert into student values(17000506,'卢林','男',28);<br>insert into student values(17000506,'卢林','男',28);</p> <p>查询学生表中男女的数量<br>select sex,count(no) from student group by sex;<br>查询学生表中男女的平均年龄<br>select sex,avg(age) from student group by sex;<br>查询每个年龄的学生的数量<br>select age,count(no) from student group by age;<br>查询学生表中每个年龄的人数并且,人数等于的1</p> <p>select age,count(no) ct from student group by age having ct=1;</p> <p>where和having的区别<br>where:用在表名后,进行条件的筛选,主要用在分组前<br>having:用在group by之后,主要对分组的数据进行筛选</p> <p><br>六、limit分页<br>格式:limit 行索引,数量:从指定的行索引开始查询,查询指定的数量</p> <p>查询学生表中前三条数据<br>select * from student limit 0,3;<br>查询学生表中第三条到底五条的学生<br>select * from student order by no limit 2,3;</p> <p>分页:每页显示2条数据,请查询第三页的数据<br>select * from student order by no limit 4,2;<br>//分页算法<br>int count=2;int page=3;<br>select * from student order by no limit (page-1)*count,count;</p> <p>查询的顺序:from-->where--->group by --->having--->order by --->limit</p> <p>七、数据完整性<br>约束条件:<br>主键、唯一约束、自增、不为null、默认值、外键等</p> <p>7.1主键:唯一标记,不可为null,不能重复<br>任何表必须有主键</p> <p>添加主键的方式:<br> 1、create table (字段 primary key)<br> 2、create table (字段,primary key(字段名称,字段名称))<br> 3、alter table 表名 add primary key(字段名称);</p> <p>//delete from student where no =(select no from student limit 5,1);</p> <p>delete from student where no=17000506;<br>//添加主键为no<br>alter table student add primary key(no);</p> <p>create table grade(id int,name varchar(20),primary key(id));</p> <p>7.2unique:唯一约束 ,不能重复,可以为null(多个)<br>create table test1(id int unique );</p> <p>7.3auto_increment:自动增长,每次递增1,一般主键使用<br>create table test2(id int primary key auto_increment,msg varchar(20) unique);</p> <p>7.4not null:不为null</p> <p>create table test3(id int not null);</p> <p>7.5default:默认值<br>create table test4(id int primary key auto_increment,psw varchar(6) not null default '123456');<br>insert into test4(psw) values(default);<br>insert into test4(psw) values(null);</p> <p>7.6FOREIGN KEY :外键<br>外键:一个表中的某个字段的值必须为另张表中的主键的值,这时我们可以使用外键约束<br>作用:当新增数据时,如果当前的外键的值在另张表的主键的值不存在,就报错<br>CONSTRAINT 外键名称(外键表中的名称) foreign key(当前表中的外键) references 另张表名称(主键名称)<br>外键的添加方式:<br> 1、create table 表名(字段,外键,CONSTRAINT 外键名称(外键表中的名称) foreign key(当前表中的外键) references 另张表名称(主键名称));<br> 2、ALTER TABLE 表名ADD CONSTRAINT 外键名称FOREIGN KEY(当前表中的外键) REFERENCES 另张表名称(主键名称)); </p> <p>create table student (sid int primary key auto_increment,name varchar(20),<br>fk_cid int,<br>CONSTRAINT fk_student_cid foreign key(fk_cid) references class (cid));<br>insert into student(name,fk_cid) values('小贾',1);</p> <p><br>八、多表关系:<br>8.1一对一<br> 2表数据一一对应<br>8.2一对多<br> 2表数据,存在一对多<br>8.3多对多<br> 2表数据,存在多对多的关系</p> <p>九、三大范式<br>阐述如何创建表并定义之间联系<br>9.1第一大范式:<br>确定列的原子性<br>就是每列的内容各不相同,要划分为最小单元<br>9.2第二大范式<br>确保有主键<br>主要用于区分每条数据,并定位<br>9.3第三大范式<br>表与表之间通过主键关联<br>主键唯一</p> <p>功能单一原则:表描述的或存储的数据单一<br>关联通过主键</p> <p>十、多表查询<br>主要用来查询多张表<br>1、合并结果集<br>UNION :合并2个查询的结果,要求2个查询的列的个数和列的数据类型必须相同,会消除重复的数据<br>UNION ALL:合并2个查询的结果,要求2个查询的列的个数和列的数据类型必须相同,不会消除重复的数据</p> <p>2、内部连接查询<br>inner join on:内部连接<br>格式:select * from 表1 inner join 表2 on 表1字段=表2字段<br>查询2个表的数据,内部连接的形式<br>select * from mytest1 inner join mytest2 on mytest1.id=mytest2.id2;</p> <p>3、外部连接查询<br>左外联:left outer join on<br>格式:select * from 表1 left join 表2 on 表1字段=表2字段<br>左联就是表1为主表,表一数据都有,表2有就显示,没有就是显示为null<br>右外联:right outer join on<br>格式:select * from 表1 left join 表2 on 表1字段=表2字段<br>右联就是表2为主表,表二数据都有,表1有就显示,没有就显示为null</p> <p><br>左联查询2表<br>select * from mytest1 t1 left join mytest2 t2 on t1.id=t2.id2;<br>右联查询2表<br>select * from mytest1 t1 right join mytest2 t2 on t1.id=t2.id2;<br>等价于<br>select * from mytest2 t2 left join mytest1 t1 on t1.id=t2.id2;</p> <p>4、连接查询<br>查询2个表中所有数据的组合结果<br>select * from mytest1,mytest2;<br>产生的结果集:笛卡尔积<br>结果的数量:表1的数量*表2的数量</p> <p><br>十一、内置函数<br>abs:取绝对值<br>bin:十进制转换二进制<br>ceiling:向上取整<br>floor:向下取整<br>rand:随机数:0.0-1.0(不包含)<br>now:现在日期+时间<br>current_date:现在的日期<br>current_time:现在时间<br>instr(字符串,要查找的内容):查询对应的索引<br>ucase:转换为大写<br>lcase:转换为小写<br>replace(字符串,原来的值,新的值):替换<br>substring(字符串,开始索引,长度):截取</p> <p>十二、杂谈<br>1、索引:<br>提高查询的效率<br>通过索引快速进行查询,速度会提高<br>2、视图:<br>为比较复杂的结果集创建一个虚拟的表<br>格式:create view 名称 as select * from 表名;<br>3、触发器:<br>一张表操作时,会对另外的表页进行操作<br>格式:<br>delimiter $修改当前的结束符为$(默认的结束;)<br>create trigger 触发器名称 before|after insert|delete|update on 表名主 <br>for each row <br>begin<br>要执行的sql语句<br>例如:<br>insert into 表名被(字段名称) values(new.表名主字段);<br>end $</p> <p><br>有2张表,user和mylog<br>现在要求:新增用户时,默认会记录一条日志</p> <p>delimiter $<br>create trigger t_test after insert on user for each row<br>begin<br>insert into myLog(msg,time) values(new.name,current_date());<br>end $</p> <p>4、快速备份新表<br>create table 新表名称 select * from 旧表</p> <p>其他数据库:<br>select * into 新表名 from 旧表;但是MySQL不支持</p> <p> </p> <p>MySQL:<br>数据库重点内容:<br>一、七大SQL语句<br>1、CREATE<br>2、ALTER<br>3、DROP<br>4、INSERT<br>5、UPDATE<br>6、DELETE<br>7、SELECT<br>where\group by \having\order by \limit<br>二、约束条件<br>主键、唯一、非null、default、自增、外键<br>三、多表查询:<br>内联、外联、合并<br>四、聚合函数<br>AVG\MAX\MIN\SUM\COUNT</p> <p>根据个人情况进行记忆:<br>1、内置函数<br>now\rand\floor\substring\ifnull<br>2、索引<br>索引提高操作数据库的效率<br>3、触发器<br>为某张表加自动操作</p> <p> </p> <p><strong>》七</strong></p> <p> </p> <p>一、JDBC:Java Data Base Connectivity java语言操作数据库的API<br>是由类和接口组成的,然后交给数据库厂商来实现的,所以想操作数据库,<br>需要下载对应数据库的驱动jar</p> <p>JDBC涉及的类和接口:<br>1、DriverManager:驱动管理器<br>2、Connection:连接接口<br>3、Statement:操作SQL接口<br>4、ResultSet:结果集<br>5、PreparedStatement:操作SQL类,防止SQL注入,推荐使用</p> <p>二、使用JDBC的步骤:<br>1、导入jar<br>2、动态加载驱动(注册驱动)<br>Class.forName("com.maysql.jdbc");<br>3、获取连接对象<br>Connection conn=DriverManager.getConnection("JDBC:mysql://主机IP:3306/数据库名称",用户名,密码);<br>4、获取操作SQL对象<br>Statement stmt=conn.createStatement();<br>5、执行SQL<br>stmt.execute(SQL);//执行任何SQL语句。返回boolean类型,是否为select语句<br>stmt.executeUpdate(SQL);//执行非select语句,返回受影响的行数<br>stmt.executeQuery(SQL);//执行select语句,返回查询的结果集ResultSet<br>6、获取结果集<br>ResultSet rs=stmt.executeQuery(sql);<br>7、关闭<br>rs.close();<br>stmt.close();<br>conn.close();</p> <p>三、JDBC类或接口的说明:<br>3.1DriverManager:驱动管理类<br> 管理数据库驱动<br> 常用方法:<br> static Connection getConnection(String url) <br> 建立到给定数据库 URL 的连接。 <br> static Connection getConnection(String url, Properties info) <br> 建立到给定数据库 URL 的连接。 <br> static Connection getConnection(String url, String user, String password) <br> 建立到给定数据库 URL 的连接。 <br><br><br>3.2Connection:数据库连接接口<br> 附加连接到指定的数据库<br> 常用方法:<br> createStatement:获取Statement对象</p> <p>3.3Satement:操作SQL接口<br> 将指定的sql语句发送到数据库,并获取结果<br> 常用方法:<br> 1、boolean execute(sql)<br> 执行任何SQL语句,返回值true:select语句,这时可以通过getResultSet(),false:非select语句<br> 2、int executeUpdate(sql)<br> 执行非select语句,返回操作的行数,如果为DDL语句返回0<br> 3、ResultSet executeQuery(sql)<br> 执行select语句,返回结果集<br> 4、ResultSet getResultSet()<br> 获取查询的结果,配合execute使用</p> <p>3.4ResultSet:结果集<br> 记录查询的结果数据<br> 常用方法:<br> 1、boolean next:获取下一行数据 ,返回值:true:下一行有数据,false:没数据<br> 2、first:返回到第一行<br> 3、last:返回最后一行<br> 4、getInt:获取整型<br> 5、getLong:获取长整型<br> 6、getFloat:获取浮点型<br> 7、getDouble:获取双精度浮点型<br> 8、getString:获取字符串<br> 9、getBytes:获取二进制<br> 10、getDate:获取日期<br> 11、getTime:获取时间<br><br>注意:getXXX方法为获取指定列索引或列名称的值<br>切记列索引从1开始<br>3.5PreparedStatement:防止SQL注入的操作SQL对象<br> 防止SQL注入,效率高<br> 常用方法:<br> setXXX(index,value):设置对应sql语句的第index个参数对应的值为value<br> executeQuery:执行select语句<br> 接收的SQL语句:<br> sql语句 where 字段=? <br></p> <p><br>四、封装数据库操作<br>1、在src下创建xxx.properties<br> 将需要用到的变量存储<br> 键值对形式<br>2、创建工具类<br> 实现对数据库的操作:增删改查<br>3、使用</p> <p>五、SQL注入<br>就是sql语句根据输入进来的数据进行拼接,通过sql关键字造成不正确的结果<br>例如:' or 1=1 or '<br>如何防止这种行为出现呢,就是使用PreparedStatement代替Statement<br>PreparedStatement的好处:<br>1、防止SQL注入<br>2、优化查询<br>3、减少查询次数,Statement会频繁的查询数据库,可能会造成缓冲区的溢出<br><br><br></p> <p>额外:<br>1、JAVASE加载第三方jar:<br> 1、创建文件夹lib<br> 2、拷贝jar到lib文件夹<br> 3、build path将对应的jar加载到应用程序<br>2、HashTable和HashMap的区别?<br> 1、父类不一样<br> HashMap基于Map<K,V><br> HashTable基于陈旧的Dictionary<K,V><br> 2、contains方法不一样<br> HashMap:containsKey,containsValue<br> HashTable:contains---等价于containsValue<br> 3、线程安全<br> HashMap:不安全,不能用在多线程并发中,效率高<br> HashTable:安全,效率低</p> <p><br>3、Properties:持久性属性集类<br> 主要用来存储和读取配置文件,以.properties结尾<br><br> 自学Properties类的使用</p> <p>4、单元测试<br>@Test:标记这是一个测试方法<br>测试方法要求:<br> 1、public修饰<br> 2、无返回值<br> 3、无参数</p> <p>5、工具类设计原则<br>方便别人,麻烦自己<br>内部方法一般都是静态方法<br>考虑尽量全面</p> <p>6、可变参数<br>格式:数据类型... 参数名称、<br>参数可以有0个或多个<br>出现在方法的声明中,只能在参数末尾<br>在方法内部,当作数组使用</p> <p> </p> <p>@Override:标记这个方法为重写</p> <p> </p> <p><strong>》八</strong></p> <p> </p> <p>温故:<br> Web项目使用JDBC<br> Web项目导入jar包的方式:直接将jar复制到WebContent\WEB-INF\lib<br><br> 通过jdbc创建以下表:<br> b_account:账户表<br> id 账号 16位,字符串<br> name 姓名 50位<br> money 余额 <br> createtime 开户时间<br> updatetime 最后一次更新时间<br><br> b_log:流水日志表<br> id 序号<br> a_id 账号<br> money 钱 存钱,取钱-<br> msg 备注信息<br> time 交易时间<br> type 类型 1:开户 2:存钱 3:取钱 4:测试<br> 注意:数据库设计的时候,最好写出一份设计文档,标记表的意义</p> <p>一、Transaction:事务<br>1.1事务是什么?<br>事务就是保证多条数据操作要么都成功,要么都失败,确保数据的完整性<br>其实就是将一组相同逻辑的操作放在一起进行操作,全部都成功或都失败<br>主要用在:多条数据的操作的一致性</p> <p>1.2事务如何使用?<br>(***重要,记住)数据库指令:<br> 1、start transaction:开启事务<br> 2、rollback:回滚,取消本次操作<br> 3、commit:提交,确定本次操作<br>JAVA代码中使用:JDBC<br> 1、通过connection.setAutoCommit(false)设置开启事务,true不开启,false开启事务<br> 2、在try语句块的结尾:connection.commit:提交<br> 3、在catch中connection.rollback:回滚事务<br>练习:<br>1、请自己创建任意表,通过JDBC实现事务的操作 </p> <p> </p> <p> <br>1.3事务的特性(ACID)<br> 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。(例:全部发生或全部不发生) <br> 一致性(Consistency)事务必须使数据库从一个一致性状态变换到另外一个一致性状态。(例:从一起生到一起死)<br> 隔离性(Isolation) 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,<br> 不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。(例:犯错误被关进不同的小黑屋)<br> 持久性(Durability) 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,<br> 接下来即使数据库发生故障也不应该对其有任何影响。(例:淘宝买东西确认付款,一旦确认付款就无法退钱)<br> (助记: 一位科学家偷了国家的“原子弹”(例:全部发生或全部不发生),领导开会“一致”(例:从一起生到一起死)同意将他逮捕,警察抓到他把他进行“隔离”(例:犯错误被关进不同的小黑屋),法院判处他“持久性”(例:淘宝买东西确认付款,一旦确认付款就无法退钱)蹲监)<br><br>1.4事务的隔离性<br>隔离性就是设置多个线程并发访问数据时的一种权限<br>如果没有隔离性:可能会引起:脏读、不可重复读、虚读</p> <p>SQL事务的隔离级别:<br> 1、Serializable:可避免脏读、不可重复读、虚读情况的发生。(串行化)<br> 2、Repeatable read:可避免脏读、不可重复读情况的发生。MySQL默认<br> 3、Read committed:可避免脏读情况发生。SQL Server |Oracle<br> 4、Read uncommitted:最低级别,以上情况均无法保证。(读未提交)<br> 设置事务的隔离性:<br> set transaction isolation level 设置事务隔离级别<br> 查询当前数据库的事务的隔离性:<br> select @@tx_isolation 查询当前事务隔离级别</p> <p>串行化:按照一个个的事务的先后顺序执行</p> <p> </p> <p>类和对象<br>类方法和实例方法<br>全局变量和局部变量</p> <p>变量的生命周期<br>1、类变量--静态属性:类第一次加载就声明,类销毁的时候跟着销毁<br>2、成员变量--实例属性:对象创建的时候,对象被销毁的时候<br>3、局部变量--定义在代码块内部的就是局部变量,作用域:当前代码块<br>java中括号:<br>{}:代码块,类的内容、方法、静态代码块、构造等<br>[]:数组<br>():方法<br><>:泛型</p> <p>方法的定义和调用<br>接口和类的区别</p> <p> </p> <p><strong>》九</strong></p> <p> </p> <p>一、连接池<br>1.1连接池是什么?<br>连接池就是管理数据库连接对象<br>保证连接对象的数量,进而提升操作数据库的效率</p> <p>主要是并发访问时,会产生n个连接对象,<br>这些都会对数据库服务器产生很大的压力,<br>所以需要合理的使用数据库连接池,以减轻这种压力</p> <p>1.2连接池的工作原理<br>集合存储连接对象,根据需要进行连接对象的创建、获取、销毁</p> <p>1.3DBCP连接池<br> 常用类:<br> BasicDataSourceFactory.createDataSource(Properties):通过配置文件获取连接池对象<br>使用时,需要导入jar和对应的配置文件</p> <p>1.4C3P0连接池<br> 常用类:<br> ComboPooledDataSource:这是DataSource的子类,直接创建该类对象获取数据库连接池,加载默认配置文件<br><br>使用时,需要导入jar和对应的配置文件</p> <p>二、JDBC工具类Dbutils<br>2.1QueryRunner:执行数据库的增删改查<br> 常用方法:<br> 1、update:执行非select语句<br> 2、batch:批处理,同时处理多条相同的语句<br> 3、query:执行SELECT语句<br><br> query方法都需要ResultSetHandler<T>接口对象<br> 该接口就一个方法:<br> handle:转换,参数:查询结果集,返回值类型:泛型<br><br> 一般常用默认的实现类:<br> 1、ArrayHandler:将查询结果的第一行数据,的每个字段存储到数组中并返回<br> 2、ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。<br> 3、BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中<br> 4、BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里<br> 5、ColumnListHandler:将结果集中某一列的数据存放到List中。<br> 6、KeyedHandler(name):将结果集中的每一行数据都封装到一个Map<列名,列值>里,再把这些map再存到一个map里,其key为指定的key<br><br><br>三、特殊的数据类型的对应:<br> PreparedStatement ps;<br> 1.DATA,TIME,TIMESTAMP date,time,datetime<br> 存:ps.setDate(i,d); ps.setTime(i,t); ps.setTimestamp(i, ts);<br> 取:rs.getDate(i); rs.getTime(i); rs.getTimestamp(i);<br> 2.CLOB  text<br> 存:ps.setCharacterStream(index, reader, length);<br> ps.setString(i, s);<br> 取:reader = rs. getCharacterStream(i);<br> reader = rs.getClob(i).getCharacterStream();<br> string = rs.getString(i);<br> 3.BLOB  blob<br> 存:ps.setBinaryStream(i, inputStream, length);<br> 取:rs.getBinaryStream(i);<br> rs.getBlob(i).getBinaryStream(); <br>Project项目,一般都会框架<br>三层架构:<br>1、显示层---H5或JSP<br>2、业务逻辑层---Servlet<br>3、数据层----实体类和数据库</p> <p>外到内:<br>1、显示层:前端、Swing、main<br>2、逻辑层:service:处理业务逻辑<br>3、数据层:<br> 1、entity/model:实体映射类<br> 2、dao:操作数据库</p> <p><br>Bean类:<br>1、私有属性<br>2、公有get和set方法<br>3、无参构造函数</p> <p><br>三、JDBC&数据库</p> <p>获取刚刚自增的id值:<br>select last_insert_id()</p> <p>四、Properties:持久性属性集类<br>主要用来存储或加载配置信息</p> <p>常用方法:<br> 1、load:加载指定的配置文件<br> 2、store:存储配置信息<br> 3、setProperties:设置要存储的属性<br> 4、getProperties:获取配置的属性的值</p> <p><br>1、前端<br>2、MySQL<br>3、Servlet<br>4、Ajax+JQuery</p> <p> </p> <p><strong>》十</strong></p> <p> </p> <p>一、Web<br>程序的分类:<br>1、C/S:Client/Server:客户端服务器<br>请求流程:客户端程序--->服务器--->数据库服务器<br>2、B/S:Browser/Server:浏览器服务器<br>请求流程:浏览器---服务器----数据库服务器</p> <p>常用服务器:<br>1、Tomcat:免费,开源APACHE公司<br>2、WebLogic:BEA公司支持JAVAEE标准规范<br>3、WebSphere:IBM公司支持JAVAEE标准规范</p> <p> </p> <p>二、Tomcat<br>目录:都是英文目录<br>1.1TomCat:服务器<br>APACHE:一家强大公司<br>基本上提供了web开发的一整套工具<br>TomCat服务器就是Apache下的一个服务器<br> 特点:<br> 1、开源<br> 2、免费<br> 3、兼容性</p> <p>1.2TomCat目录:<br> bin:可执行<br> webApps:发布项目<br> work:运行的工作目录<br> docs:文档<br><br>1.3运行TomCat:<br> 1、在bin目录下找到startup.bat启动服务器<br> 2、在浏览器输入:localhost:8080,能打开就是启动成功</p> <p>1.4在Eclipse中配置Tomcat<br> window-->preferences-->server-->runtime Environments->add->选择TomCat安装目录->完成</p> <p>1.5发布项目到TomCat中<br> 1、选择项目,右键export<br> 2、选择war,选择导出的路径和名称<br> 3、将war文件放到TomCat的WebApps下<br> 4、启动Tomcat<br> 5、访问:localhost:8080/war文件名/</p> <p>二、Servlet<br>2.1Servlet是什么?<br>Servlet就是sun提供的运行在服务器上的API<br>每一个Servlet都是独立的应用<br>可以实现:获取Web浏览器或客户端发送来的信息并且响应信息</p> <p>2.2Servlet的使用<br>创建方式:<br> 1、实现Servlet接口<br> 需要实现方法:<br> 1、init:初始化<br> 2、service:服务<br> 3、destroy:销毁<br> 4、servletConfig:获取默认配置<br> 5、servletInfo:获取Servlet信息<br><br> 2、继承GenericServlet类<br> 需要实现的方法:<br> 1、service:服务<br> 3、继承HttpServlet类---直接new Servlet<br> 需要实现的方法:<br> 1、doGet:处理get请求<br> 2、doPost:处理post请求</p> <p>Servlet如果想让外界使用,必须注册(配置注册还是注解注册)</p> <p><br>2.3Servlet生命周期<br>生命周期:<br> 1、init:初始化<br> 初始化一些默认信息<br> 2、service:服务<br> 获取请求和响应<br> 3、destroy:销毁<br> 销毁一些信息<br>Servlet的生命主要是为了服务器优化</p> <p><br>Thread生命周期:<br> 1、新建<br> 2、就绪<br> 3、运行<br> 4、阻塞<br> 5、死亡</p> <p> </p> <p><br>2.3Servlet的注册:<br>Servlet可以设置外界访问的名称<br> 1、xml中注册(Servlet3.0之前)<br> 在项目的web.xml中使用固定标签:<br> //标记这是一个Servlet<br> <servlet><br> <servlet-name>外界访问的名字</servlet-name><br> <servlet-class>Servlet实现类名称</servlet-class><br> </servlet><br> <servlet-mapping><br> <servlet-name>外界访问的名字</servlet-name><br> <url-pattern>/匹配</url-pattern><br> </servlet-mapping><br> 2、注解进行注册(Servlet3.0(包含)之后)<br> @WebServlet("/外界访问名字")</p> <p><br> <!--配置Servlet,一般是在Servlet3.0之前需求配置 --><br> <servlet><br> 配置外界访问的名称 <br> <servlet-name>MyS2</servlet-name><br> 配置Servlet的类名 <br> <servlet-class>MyServlet</servlet-class><br> </servlet><br> <servlet-mapping><br> 配置外界访问的名称 <br> <servlet-name>MyS2</servlet-name><br> <url-pattern>/*.do</url-pattern><br> </servlet-mapping></p> <p> </p> <p>2.4Servlet的线程安全<br>Servlet引擎采用多线程进行对用户的处理<br>并发时,存在线程安全。<br>尽量使用局部变量,非得是全局时,注意加锁</p> <p>SingleThreadModel:单线程模型<br>对于Servlet采用单线程进行。但是会产生多个Servlet对象<br>在Servlet2.4之后都已经过时</p> <p>2.5ServletConfig配置信息<br>获取Servlet的配置信息<br> 常用方法:<br> 1、getInitParameter:获取配置信息<br> 2、getServletContext:获取Web全局对象</p> <p>ServletContext:Web应用对象<br>可以设置过滤器、事件、Servlet、路径等<br> getRealPath:获取真实路径,发布路径</p> <p> </p> <p><br>Eclipse和MyEclipse</p> <p> </p> <p><strong>》十一</strong></p> <p> </p> <p>一、Request:请求<br>获取客户端或浏览器的请求内容<br>1.1HttpServletRequest<br>Http协议的请求对象<br>服务器会为每一次的请求创建对应的request和response对象<br>请求对象包含的信息:<br> 1、请求行<br> 2、请求头<br> 3、消息正文<br>想要获取客户端信息,那么就使用request</p> <p>1.2请求行<br>可以获取请求的方法、查询的内容、协议、资源等<br>常用方法:<br> getMethod方法返回HTTP请求消息中的请求方式。<br> getRequestURI方法返回请求行中的资源名部分。<br> getQueryString 方法返回请求行中的参数部分。<br> getServletPath方法返回Servlet的名称或Servlet所映射的路径。 <br><br>1.3请求的网络信息<br>可以获取远程或服务器或本机的网络信息<br> 常用方法:<br> getRemoteAddr方法返回发出请求的客户机的IP地址<br> getRequestURL方法返回客户端发出请求时的完整URL<br><br>1.4请求头信息<br>获取header数据<br> 常用方法:<br> getHeader:获取指定key的值<br> getHeaderNames:获取header的所有的键名称<br> getContentType:获取内容的类型MIME类型<br> getContentLength:获取内容的长度<br> getCharacterEncoding:获取编码格式</p> <p>referer:请求头属性<br>记录上一次的网址</p> <p>1.5请求方法:<br>1、get:请求,获取<br>特点:<br> 1、效率高<br> 2、大小限制,一般为1kb<br> 3、不安全,参数信息随着url进行传输<br> 4、中文乱码,参数随着url传输<br>而url编码格式为ISO8859-1(不支持中文)</p> <p>get乱码产生原因:<br>首先输入的内容会按html页面的编码格式进行<br>在进行传输的时候url传输,而url编码格式iso8859-1<br>所以内容由页面的编码格式转换为iso8859-1<br>get乱码的解决:<br>在doGet方法中<br>首先将内容按照iso8859-1转换为字节数组<br>然后再通过HTML页面的编码格式将字节数组转换为字符串<br>String msg=request.getParameter("name");<br>if(msg!=null){<br> msg=new String(msg.getBytes("ISO8859-1"),"UTF-8");<br>}</p> <p>对安全性要求不高就推荐使用Get<br>如果对安全性要求较高,推荐使用post</p> <p>2、post:请求,发送<br>一般是传递数据到服务器<br>特点:<br> 1、效率低<br> 2、大小无限制<br> 3、安全性相对较高,参数以流的形式<br> 4、中文乱码好解决</p> <p>默认请求为get请求</p> <p>1.6获取表单内容<br>表单的内容想提交到服务器,需要为标签设置name属性,其中name的值就是键<br><input>\<textarea>\<select>等都是可以提交的</p> <p>隐藏域:<input type="hidden"/>用户看不见,但是可以提交数据<br>图片:<input type="image"/>可以提交点击的坐标,而且还能默认提交<br>下拉框<select>也是可以传递</p> <p>表单提交时,防止用户操作太快,一般会进行提交校验,只让提交一次</p> <p>1.7获取参数信息<br>获取表单请求的参数信息<br>常用方法:<br> 1、getParameter:获取指定key的值<br> 2、getParameterValues:获取指定key的多个值(多选)<br> 3、getParameterNames:获取所有的参数名称<br> 4、getParameterMap:获取所有的参数值<br></p> <p>RandomAccessFile:随机读取文件类<br>唯一一个具有读取和写入的类</p> <p> </p> <p> </p> <p>二、Response:响应<br>对客户端或浏览器进行数据的响应</p> <p>2.1响应状态码<br>就是服务响应的状态码<br>2开头:成功 200全部成功,206部分成功<br>3开头:重定向 需要请求另外的网址<br>4开头:错误,客户端或浏览器错误<br>5开头:错误,服务端错误</p> <p>2.2设置消息头<br>设置响应的消息头<br>常用方法:<br> 1、setHander:设置消息头<br> 2、addHander:添加消息头<br> 3、setContentType:设置正文类型<br> 4、setCharacterEncoding:设置响应的编码格式<br><br>2.3响应内容<br>向客户端或浏览器回复信息<br>常用方法:<br> 1、getWriter:打印输出字符流 print或println<br> 2、getOutputStream:输出字节流,非文本内容<br><br><br><br>2.4跳转<br> 常用跳转分为2种:<br> 1、重定向<br> 客户端跳转<br> response.sendRedirect("跳转的网址");<br> 特点:<br> 1、可以跳转到任何一个网页<br> 2、地址栏改变<br> 3、不可携带request和response<br> 4、客户端进行2次请求<br><br> 2、转发<br> 服务端跳转<br> request.getRequestDispatcher("当前Web的网页").forward(request, response);<br> request.getRequestDispatcher("当前Web的网页").include(request, response);<br><br> 特点:<br> 1、只能跳转到当前项目的网页<br> 2、地址栏不变<br> 3、可以携带request和response<br> 4、客户端请求1次<br> forward&include的区别?<br> forward:可以对Response进行修改状态码和消息头<br> include:不可以</p> <p> </p> <p><strong>》十二</strong></p> <p> </p> <p>数据交互格式:<br>1、HTML<br>2、JSON<br>3、XML<br>都是跨平台、跨网络、跨编程语言</p> <p>一、XML<br>1.1Extensible Markup Language:可扩展的标记语言<br>是一种通用型数据交互的格式</p> <p>与HTML的区别?<br>HTML:<br>不同点:<br>1、固定标签<br>2、语法不严谨:可以有结束,也可以没有<br>3、不区分大小写</p> <p>相同点:<br>4、属性的值必须使用双引号<br>5、标签可以嵌套<br>XML:<br>不同点:<br>1、自定义标签<br>2、语法严谨:标签有开始就必须有结束<br>3、区分大小写</p> <p>相同点:<br>4、属性的值必须双引号<br>5、标签可以嵌套</p> <p>1.2XML语法</p> <p>XML具有严谨的语法<br>语法规则:<br>1、自定义标签<br>2、区分大小写<br>3、标签有开始必须有结束<br>4、只有一个根节点<br>5、标签可以嵌套<br>6、标签命名,以字母、数字、下划线组成,以字母开头<br>7、属性的值必须使用双引号</p> <p>1.3XML组成<br>xml由2部分组成<br> 1、前导区<br> 固定格式:<?xml version="1.0" encoding="编码格式" ?><br> 描述此文档为xml文档,标记版本号,编码格式<br> 2、数据区<br> 只能以根标签和结尾<br> 根标签:唯一<br> <老邢><br> <子标签></子标签><br> <子标签></子标签><br> <子标签></子标签><br> <子标签></子标签><br> <子标签></子标签><br> </老邢><br>1.4XML解析<br>目前常用解析:<br>1、dom:标准,java支持<br>2、sax:java支持<br>3、dom4j:民间方式,第三方jar<br>4、pull:谷歌<br>5、xpath:对xml元素进行查询</p> <p>1.4.1DOM解析XML<br>java支持,将整个文档读取完只会再开始解析<br>解析步骤:<br>1、创建解析工厂<br>2、创建解析器<br>3、设置解析文档并获取文档对象<br>4、获取根节点<br>5、依次获取子节点并遍历</p> <p><br>xml中的节点和元素<br>Node:xml中的任何内容<br>主要包括:<br>标签(文档标签、元素标签)、文本内容<br>Element:元素<br>继承的Node<br>就是可以拥有子标签和属性、值的节点</p> <p>元素就是对象<br>节点就是属性</p> <p> </p> <p> </p> <p>1.4.2SAX解析<br>实时解析,边读取边解析<br>使用步骤:<br>1、创建DeafultHander的子类:定义解析模板<br>2、创建解析工厂<br>3、创建解析器<br>4、设置解析文档并开始解析<br>5、获取解析结果</p> <p>创建自定义的DeafultHander<br>需要注意的方法:<br>1、startDocument:开始文档,无参<br>2、endDocument:结束文档,无参<br>3、startElement:开始标签<br>参数说明:<br> 1、命名空间<br> 2、本地名称<br> 3、标签名称<br> 4、属性集<br>4、endElement:结束标签<br>参数说明:<br> 1、命名空间<br> 2、本地名称<br> 3、标签名称<br>5、character:文本内容<br>参数说明:<br> 1、字符数组<br> 2、起始索引<br> 3、长度<br>1.3Dom for Java<br>Dom4J:解析xml的方式<br>使用步骤:<br> 1、创建解析器<br> SAXReader reader=new SAXReader();<br> 2、设置解析文件并获取文档对象<br> Document document=reader.read("students.xml");<br> 3、获取根元素<br> Element root=document.getRootElement();<br> 4、依次获取所有的子元素<br> elements<br> 5、获取元素的属性或内容<br> element.attributeValue("属性名称"):获取属性的内容<br> element.getStringValue():获取元素的内容<br> 6、获取结果<br> Entity<br> List<T><br>1.4XPATH<br>主要用来进行查询xml文档的节点信息<br>也可以用来解析</p> <p>二、JSON<br>2.1JSON目前互联网使用最为广泛的一种数据交互的格式<br>跨平台、跨网络、跨编程语言</p> <p>json语法符合:<br>{}:对象<br>[]:数组<br>:连接属性名称和值的<br>""属性名称或字符串类型的值<br>,多个属性或元素<br>JSON就是由上述的语法符合组成的字符串<br>JSON可以用来描述数组或对象</p> <p>{"no":1,"name":"张三"}<br>{"stu":{"no":1,"name":"张三"}}<br>[{"no":1,"name":"张三"}]<br>[1,2,3]<br>{"list":[{"no":1,"name":"张三"},{"no":1,"name":"张三"}]}</p> <p>2.2解析方式<br>1、JSON官方<br>JSONArray:解析数组 []<br>常用方法:<br> length:元素个数<br> getXXX(index):获取指定索引的元素对象<br><br>JSONObject:解析对象 {}<br>常用方法:<br> keys:获取所有的属性名称<br> getXXX:获取指定属性名称的值<br> optXXX:获取指定属性名的值<br> putXXX:添加指定的属性<br>遇到{用JSONObject,遇到[用JSONArray</p> <p>2、Gson谷歌<br>要求JSON字符串的数据关系必须为类的映射<br>其实就是一个{}就是一个类<br>Gson:类<br>formJson:解析对应的json字符串<br>解析对象:fromjson(json,类.class)<br>解析数组:fromjson(json,new TypeToken<List<类>>)(){}.getType())</p> <p>3、FASTJSON快速解析<br>要求类与json字符串相匹配<br>JSON:工具类<br>静态方法:<br>1、parserObject(json,类.class):解析对象<br>2、parserArray(json,类.class):解析数组</p> <p>注意:<br>Gson、fastjson<br>都是对类的要求:字符串中有几个{}就有几个类,({}中有几个属性类就几个属性)</p> <p> </p> <p><br>XML会解析<br>JSON会解析</p> <p> </p> <p><strong>》十三</strong></p> <p> </p> <p>流按照功能划分:<br>1、节点流:直接操作数据的流<br>文件流、内存流<br>2、过滤流:操作流的流</p> <p>一、导入文件内容到数据库<br>1、通过流获取要导入的内容<br>2、获取数据,并按照格式进行切割<br>3、添加到数据库</p> <p>create table citycode(id int primary key auto_increment,code int unique,name varchar(20),s_name varchar(20),f_name varchar(20),time datetime);</p> <p> </p> <p>二、JSP<br>2.1JSP:Java Server Pages<br>就是一个页面:可以写HTML标签还可以java代码</p> <p>简化的Servlet<br>弥补Servlet的不足</p> <p>JSP最终就会转换为Servlet<br>JSP页面中写的HTML标签或JSP语法最终都是在对应的饿service方法通过输出流写出</p> <p>JSP语法:<br><%! %>:定义方法、创建全局变量等,这里面的代码最终在jsp对应的类中,方法外部起作用<br><% %>:调用内置对象,java语句等代码,这里的代码最终在jsp对应的类的service方法中<br><%= %>:显示对应变量的值</p> <p>2.2JSP的组成:<br> 1、JSP模板元素:就是jsp页面的HTML<br> 2、JSP表达式:主要就是在界面显示数据,切记不可有;<br> 格式:<%= 变量|表达式|方法%><br> 3、JSP脚本片段:只能出现java代码,严格准守java语法规则,可以调用内置对象、输出内容、创建局部变量等<br> 格式:<% 片段; %><br> 4、JSP声明:声明全局变量或方法,这里的代码块会出现在service方法的外部,类的内部<br> 格式:<%! 声明属性或方法 %><br> 5、JSP注释:JSP的注释并不就会输出到页面<br> 格式:<%--JSP注释--%></p> <p> </p> <p>三指</p> <p>九对<br>四域<br>2.3三大指令<br>指令:告诉JSP引擎页面的信息<br>格式:<%@ 指令名称 属性名称="值" %><br>2.3.1page<br>告诉JSP引擎当前页面的信息<br>格式:<%@ page 属性=值 %><br>常用属性:<br>language:语言<br>import:导包<br>contentType:正文类型,MIME类型和编码格式<br>session:会话 值为boolean类型,true:有,false:没有<br>errorPage:错误页 值:为错误页面的url<br>isErrorPage:是否需要异常对象<br>2.3.2include<br>加载其他html\文件、jsp等<br>格式:<%@ include file="路径" %><br>这种加载称为静态加载</p> <p>2.3.4taglib<br>引用标签库,常常结合着JSTL使用<br>格式:<%@ taglib uri="标签库地址" prefix="名称" %><br>作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。<br><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> </p> <p>2.4九大隐式对象<br>九大隐式对象就是根据配置会默认创建的对象<br>以下为常用内置对象:<br> 2.4.1request:请求对象---HttpServletRequest<br> 2.4.2response:响应对象--HttpServletResponse<br> 2.4.3session:会话---HttpSession<br> 2.4.4out:输出字符流对象---PrintWriter<br> 2.4.5pagecontext:页面域对象---PageContext<br> 2.4.6page:this---当前jsp产生的Servlet对象<br> 2.4.7application:全局域对象---ServletContext<br> 2.4.8execption:异常----Throwable<br> 2.4.9config:配置----ServletConfig</p> <p>2.5域<br>域就是根据作用域不同而划分的对象,可以携带属性数据<br>常用的域:<br> 1、application:全局,整个Web应用,建议少用<br> 存储的生命周期最为悠久,只有网站停止运行才销毁<br> 2、session:会话,每一个用户的访问都是一个会话<br> 使用最为广泛,一般用来做,存储登陆信息、购物车<br> 3、pagecontext:页面对象,整个页面有效,用的不多<br> 4、request:每次请求<br> 主要记录请求的信息,使用最为广泛<br>一般使用域<br>setAttribute(key,value):设置属性,对应的key存在就修改,不存在就是添加 value:可以是自定义类对象<br>getAttribute(key):获取指定key的值 </p> <p> </p> <p><strong>》十四</strong></p> <p> </p> <p>一、JSP元素<br>也称为JSP动作<br>格式:<jsp:动作名称 属性名称="值"/><br>常用:<br> 1、include<br> 作用:动态包含其他页面,可以传递参数<br> 格式:<jsp:include page="包含的文件路径" flush="是否刷新"></jsp:include><br><br> 动态包含和静态包含的区别?<br> 动态包含:jsp元素<br> 1、格式:<jsp:include page><br> 2、加载时机,运行到此处的时候加载,每个jsp都会产生java文件<br> 3、传递参数<br> 静态包含:jsp指令<br> 1、格式:<%@ include file%><br> 2、刚开始就加载,只会产生当前的java文件,其他是将最后的静态页面加载到当前页面<br> 3、不传递参数<br><br> 注意:如果一个jsp页面被加载到其他页面使用,建议直接写标签或jsp语法<br><br> 2、forward<br> 作用:实现页面的跳转,其实就是请求转发<br> 格式:<jsp:forward page="要跳转的页面路径"></jsp:forward><br> 可以携带参数<br> 注意:部分情况该标签双标签,必须有参数,单标签不需要<br> 3、param<br> 作用:在使用include或forward时传递出参数<br> 格式:<jsp:param name="key" value="value"/></p> <p> </p> <p>二、EL<br>EL:Expression Language:EL表达式,简化JSP表达式<br>格式:${域中的属性名称|param.参数名称|cookie.名称}<br>显示结果<br>开发常用EL做以下事情:<br>1、获取请求参数的值:${param.参数名称}<br>2、获取域中属性的内容:${XXXScope.属性名称}<br>3、获取Cookie中的内容:${cookie.名称}</p> <p>${dog.name}<br>${dog["name"]}</p> <p>三、JSTL<br>JSTL:Java Server Pages Standard Tag Library:JSP标准标签库<br>在Eclipse中需要导入jar包<br>myEclipse不需要</p> <p>使用步骤:<br>1、导入jar包<br>2、在JSP文档使用<br><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><br>3、在文档中使用JSTL标签<br>直接<c:out></p> <p>常用标签:<br><c:out value="输出的内容"><br><c:set ><br><c:remove><br><c:if><br><c:choose><br><c:forEach></p> <p><br>四、Cookie<br>会话状态,存储HTTP请求或响应过程的信息<br>将信息保存在客户端的磁盘</p> <p>获取Cookie:request.getCookies<br>新增Cookie:response.addCookie</p> <p>五、Session</p> <p> </p> <p><br>六、回顾<br>Servlet:java运行在服务器的api<br>主要功能:获取浏览器或客户端的请求,回应数据</p> <p>Servlet的创建方式:<br> 1、HttpServlet<br> 2、GeneralServlet<br> 3、Servlet<br>Servlet的生命周期:<br> 1、init:初始化<br> 2、service:服务<br> 3、destroy:销毁<br>Servlet的注册方式:<br> 1、使用注解@WebServlet<br> 2、使用xml配置<br>Servlet使用步骤:<br>1、创建Servlet类<br>2、重写对应的方法doGet、doPost、service<br>3、注册 注解的形式<br>4、运行在服务器<br>5、访问</p> <p>HttpServletRequest:请求</p> <p>HTTP协议的消息组成:<br>1、请求行:获取方式、协议类型、路径等<br>2、请求头:获取正文类型、编码格式、刷新等<br>3、请求内容:参数或属性</p> <p>请求属性:可以存储各种数据类型<br>getAttribute:获取指定key的属性值<br>setAttribute:设置属性<br>removeAttribute:移除属性</p> <p>请求参数:只能存储字符串<br>getParameter:获取指定参数的值<br>getParameterValues:获取指定参数的所有值。checkbox</p> <p>跳转:<br>常用的跳转方式:<br>1、客户端跳转:重定向<br>response.sednRect("页面路径")<br>不可传递request<br>2、服务端跳转:请求转发<br>request.getRequestDispatcher("页面路径").forward(request,response);<br>request.getRequestDispatcher("页面路径").include(request,response);</p> <p><br>中文乱码:<br>get如果乱码:iso8859-1---->utf-8</p> <p> </p> <p>HttpServletResponse:响应</p> <p>回复信息:<br> 1、response.getWriter:字符流<br> 2、response.getOutputStream:字节流<br><br>设置消息头:<br> 1、setContentType("text/html;charset=utf-8")<br> 2、setContentLength:设置内容的大小<br>设置状态响应码:<br> 1、setStatue()</p> <p>常用的网络数据交互格式:<br>1、HTML<br>2、XML<br>3、JSON</p> <p>JSON解析:<br>{}:对象<br>[]:数组</p> <p>根据对应的json字符串创建类,从里往外创<br>常用解析技术:<br>1、JSON源生<br>JSONObject:<br>getXXX(key)</p> <p>JSONArray:<br>getXXX(index)<br>length():长度</p> <p>2、Gson<br>gson.fromJson(json,Class):解析对象<br>gson.fromJson(json,new TypeToken<List<T>>(){}.getType()):解析数组<br>3、FastJson<br>JSON.parserObject(json,Class)<br>JSON.parserArray(json,Class)</p> <p><br>XML:可扩展的标记语言<br>常用解析:<br> 1、DOM<br> 区分:Node和Element<br> 2、SAX<br> 自定义DefaultHandler<br> 3、DOM4J<br> SAXReader<br> 4、XPATH<br> selectNodes/selectSingleNode</p> <p> </p> <p>JSP:Java Server Page<br>就是HTML和Servlet的组合</p> <p>重点:<br><%! %>:声明 <br><% %> :操作<br><%= %> :显示</p> <p>一、JSP语法:<br> 1、<%! 声明方法、属性 %>:定义属性、方法<br> 2、<% 代码块,运行在_jspService %>:操作内置对象<br> 3、<%=变量|表达式 %>:显示数据</p> <p>二、JSP组成:<br> 1、JSP模板元素:HTML标签<br> 2、JSP代码片段:<% %><br> 3、JSP表达式:<%= %><br> 4、JSP声明:<%! %><br> 5、JSP注释:<%-- --%><br>三、JSP的指令:就是JSP引擎起作用的时就加载<br> 1、page:页面信息<br> 2、include:加载其他页面<br> 3、taglib:使用JSTL表达式<br> 格式:<%@ 指令名称 属性名称="值" %><br>四、JSP内置对象:<br> 1、request:请求对象<br> 2、response:响应对象<br> 3、session:会话<br> 4、application:全局<br> 5、pageContext:当前页面信息<br> 6、exception:异常<br> 7、out:输出<br> 8、page:当前对应的Servlet对象<br> 9、config:servlet配置信息<br>五、JSP域对象<br>各个对象的作用域不同<br>从大到小:<br>1、application:整个Web应用<br>2、session:会话,一个客户端的<br>3、request:请求<br>4、pageContext:当前页面<br><br>六、EL表达式<br>简化的JSP表达式<br>格式:${名称} <br>作用:<br>1、获取请求参数<br>2、获取域的内容<br>3、获取cookie的内容</p> <p>七、JSTL<br>JSP标准标签库<br>结合指令<%@ taglib prefix="前缀" uri="资源"%></p> <p><br>分类:<br>1、核心库<br>2、格式化库<br>3、数据库<br>4、函数库<br>5、XML库</p> <p>常用:<br>核心库:<br>常用标签:<br><c:out>:输出<br><c:set>:设置<br><c:remove>:移除<br><c:if>:条件<br><c:choose>:多条件<br><c:forEach>:循环</p> <p><br>Web中的状态:<br>1、Cookie:本地状态<br>是将信息存储到本地<br>Cookie ck=new Cookie(key,v);<br>ck.setMaxAge(秒):有效期:0删除<br>ck.setPath("/"):当前Web</p> <p>response.addCookie()//添加Cookie<br>request.getCookies:获取Cookie</p> <p>可以记录用户名或免登陆等<br>2、Session:会话服务器状态<br>是将信息存储到服务器内存<br>JSP:session内置对象<br>Servlet:<br>HttpSession session=request.getSession();<br>session.setAttribute():存储数据<br>session.getAttribute:获取数据<br>session.setMaxInactiveInterval:设置Session最大空闲时间</p> <p> </p> <p>Lambda表达式<br>简化格式:接口就一个方法的实现类的简化<br>格式:(需要重新的抽象方法的参数)->代码块</p> <p>本周重点:<br>会用Servlet进行获取数据和响应数据<br>会解析XML\JSON<br>会使用JSP<br>会使用Cookie\Session</p> <p> </p> <p><strong>》十五</strong></p> <p> </p> <p>回顾:<br>Tomcat:服务器<br>Servlet:java语言运行在服务器的api<br>作用:<br>1、获取浏览器或客户端的请求信息<br>2、对浏览器或客户端进行信息的响应<br>HttpServletRequest:请求<br>getXXXX:获取<br>HttpServletResponse:响应<br>setXX:设置<br>getOutputStream:获取输出字节流<br>getWriter:输出字符流</p> <p>JSP:Java对Servlet和HTML的整合页面</p> <p>符号:<br><%! %>声明<br><% %>使用<br><%= %>显示</p> <p> </p> <p><br>三大指令:<br>page\include\taglib<br><%@ 指令名称%><br>四大域:<br>就是根据作用域的不同而区分,主要存储数据<br>从大到小:application--->session---->request---->pageContext<br>九大对象:<br>request<br>response<br>session<br>page<br>pageContext<br>application<br>exception<br>config<br>out<br>三元素<br>include\forward\param<br><jsp:元素名称></p> <p>EL:表达式----代替<%= %><br>作用:<br>1、获取请求参数<br>2、获取域中属性<br>3、获取cookie<br>格式:${ }</p> <p>JSTL:标准标签库----代替<% %><br>使用步骤:<br>1、导入jar包<br>2、在jsp使用taglib标记<br>3、使用标签</p> <p>核心库:c<br><c:out><br><c:set><br><c:remove><br><c:if><br><c:choose><br><c:forEach></p> <p><br>JSP和Servlet区别?<br>开发中:<br>JSP主要用来接收服务器数据并显示<br>Servlet主要用来进行逻辑处理</p> <p><br>三跨数据格式:<br>HTML<br>XML<br>JSON</p> <p>Cookie<br>Session</p> <p> </p> <p>内容:<br>一、反射<br>反射:就是程序运行时,动态获取类的信息的行为</p> <p>反射作用:<br>1、获取类的属性、方法、注解等<br>2、执行私有的属性或方法</p> <p>Class:字节码类</p> <p>Class对象的创建方式:<br>1、类名.class<br>2、对象名.getClass<br>3、Class.forName(类名全称)</p> <p>常用方法:<br>getFields:获取所有public字段<br>getDeclaredFields:获取本类的所有字段不包含继承<br>getDeclaredField:获取指定字段名称的字段对象<br>getMethods:获取所有的public方法<br>getDeclaredMethods:获取本类所有的方法,不包含继承<br>getDeclaredMethod:获取指定方法名称,形式参数的方法对象<br>getDeclaredAnnotations() :获取当前类的注解<br>newInstance:创建对应类的对象</p> <p><br>Method类:<br>常用方法:<br> getAnnotations:获取方法上的注解<br> invoke:执行方法<br> setAccessible:设置是否忽略访问校验<br>Filed类:<br>常用方法:<br> set:设置属性的值<br> get:获取属性的值<br> setAccessible:设置是否忽略访问校验<br> getAnnotations:获取字段上的注解</p> <p><br>Object</p> <p>二、注解<br>注解就是为机器添加的注释,主要为了简化开发</p> <p>元注解:就是修饰注解的注解<br>开发中定义注解的时候会使用元注解<br>四大元注解:<br>@Target 表示该注解用于什么地方,可能的值在枚举类 ElemenetType 中<br>设置注解的使用范围<br>@Retention 表示在什么级别保存该注解信息。可选的参数值在枚举类型 RetentionPolicy 中<br>@Documented 将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档。在doc文档中的内容会因为此注解的信息内容不同而不同。相当与@see,@param 等<br>@Inherited 允许子类继承父类中的注解</p> <p>创建注解步骤:<br>1、创建注解对象,@interface<br> 1、标记注解的使用范围和有效期<br> 2、定义属性,记录注释内容<br>2、使用注解<br> 1、要在注解的使用范围之内使用<br>3、解析注解<br> 1、通过反射获取注解的内容使用</p> <p>开发中主要是使用别人家的注解</p> <p><br>3、泛型<br>就是引用类型的占位符,避免了转型<br>jdk5.0之后出现的</p> <p>26个大写字母都可以</p> <p>记住:泛型无论在哪使用,都必须声明<br>格式:<字母><br>使用:字母</p> <p>使用方式:<br>1、泛型类或接口<br>类名<字母><br>2、泛型方法<br><字母> 返回值 方法名称(形式参数)<br>{</p> <p><br>}</p> <p>主要用来开发工具类、框架</p> <p>基本要求:<br>反射:会获取类中的信息<br>注解:使用注解时,可以大概猜出源码流程<br>泛型:要求会使用</p> <p><br>开发实例:<br>1、模拟Gson解析<br>2、模拟QueryRunner的查询</p> <p> </p> <p><strong>》十六</strong></p> <p> </p> <p>一、文件上传<br>用户通过网页将选择的图片上传到服务器<br>1、Servlet<br>负责接收请求来的文件信息并保存到服务器<br>2、HTML/JSP<br>负责用户选择文件并上传到对应的Servlet</p> <p>服务器将文件存储在<br>META-INF<br>WEB-INF<br>这些下面的时候,浏览器无法访问<br>如果存在WebContent下可以访问</p> <p>使用Apache的jar包实现文件的上传</p> <p>文件上传步骤:<br>1、创建jsp或html页面<br>注意使用表单,一定要设置表单的enctype="multipart/form-data属性<br>表示是文件上传的表单<br>2、创建Servlet<br>3、重写doPost方法<br>4、运行</p> <p>涉及到的类:<br>1、DiskFileItemFactory:文件工厂,主要用来创建上传对象<br>常用方法:<br>setRepository:设置上传的临时文件夹</p> <p>2、ServletFileUpload:上传类<br>静态方法:isMultipartContent验证是否有file标签<br>常用实例方法:<br> setHeaderEncoding:设置编码格式<br> setFileSizeMax:设置文件总大小<br> setSizeMax:设置总大小<br> parseRequest:获取当前请求中的所有参数信息</p> <p>3、FileItem:文件对象<br>常用方法: <br> 1、isFormField:验证是否为非file标签<br> 2、getName:获取文件名称<br> 3、getInputStream:获取文件内容</p> <p>二、文件下载<br>不需要任何jar包</p> <p>主要记忆的是以下消息头:<br>1、user-agent:获取浏览器类型<br>2、content-disposition:设置文件名称,值:ttachment;filename=文件名<br>3、setContentType:设置正文内容的MIME类型<br>4、setContentLengthLong:设置正文的字节个数</p> <p>使用步骤:<br>1、获取要下载的文件路径<br>2、验证文件是否存在<br>3、设置消息头<br>4、创建流,读取内容并返回<br>5、运行</p> <p>三、事件<br>事件:就是一组行为<br>实现了事件接口的类就叫监听器<br>事件的使用步骤:<br>1、创建类实现对应的xxxListener<br>2、重写方法<br>3、配置事件<br>4、运行</p> <p>注册事件的方式:<br>1、xml配置<br>在web.xml中使用<br><listener><br><listener-class>监听器的类名</listener-class><br></listener><br>2、注解配置<br>在监听器的类上使用<br>@WebListener就可以</p> <p>创建方式:<br>1、自定义类,实现接口,配置事件<br>2、直接new Listener</p> <p><br>常用事件:<br>1、ServletContext:<br>ServletContextListener:监听创建或销毁<br>ServletContextAttributeListener:监听属性的新增、修改、删除</p> <p>2、HttpSession:<br>HttpSessionListener:监听创建或销毁<br>HttpSessionAttributeListener:监听属性的新增、修改、删除<br>HttpSessionBindingListener:监听属性为对象的新增、删除</p> <p>3、ServletRequest:<br>ServletRequestListener:监听创建、销毁<br>ServletRequestAttributeListener:监听属性的新增、修改、删除</p> <p> </p> <p>12306的Session失效的效果<br>10秒无交互,失效</p> <p>思路:<br>要不要保存所有的Session<br>保存在什么地方<br>怎么验证失效<br>定时验证</p> <p> </p> <p>重点:文件上传&下载</p> <p> </p> <p><strong>》十七</strong></p> <p> </p> <p>File类:<br>FileNameFilter<br>FileFilter</p> <p><br>Listener:监听,域的变化</p> <p>Servlet过滤器Filter接口:会对每一次的请求进行过滤<br>使用步骤:<br>1、创建Filter类<br>2、重写对应的方法<br>3、配置</p> <p><br>Filter接口中的方法:<br>1、init:初始化<br>参数说明:<br>FilterConfig:过滤器的配置信息<br> 常用方法:<br> getInitParameter:获取配置的参数的值</p> <p>2、doFilter:过滤<br>重要方法,进行条件的筛选,是否允许放行<br>参数说明:<br> 1、request:请求对象<br> 2、response:响应对象<br> 3、chain:过滤器通行对象<br><br>3、destroy:销毁</p> <p><br>FilterChain:就是调用下一个链</p> <p>常用方法:<br>doFilter:继续请求<br>参数说明:<br> 1、request:请求对象<br> 2、response:响应对象</p> <p><br>Filter的注册方式:<br>1、xml配置<br>在web.xml下使用<br><!--配置过滤器 --><br> <!--filter:让服务器创建过滤器对象 --><br> <filter><br> <filter-name>myf1</filter-name><br> <filter-class>org.qf.study1.MyFilter2</filter-class><br><br> </filter><br> <!--filter-mapping:设置当前过滤对象的过滤原则 --><br> <filter-mapping><br> <filter-name>myf1</filter-name><br> <url-pattern>/MyServlet1</url-pattern><br> </filter-mapping><br><br>2、注解<br>@WebFilter:配置过滤器<br>注解的常用属性:<br> 1、urlPatterns:设置要过滤的资源 /* 所有 /Servlet名称 /xxx.jsp <br> 2、initParams:设置过滤器的配置信息</p> <p>注解注册和xml注册的区别?<br>1、注解方便,xml麻烦<br>2、注解无法设置过滤器的顺序(是根据过滤器的名称的字符串顺序进行的)<br>xml配置可以设置,是根据<filter-mapping>的先后顺序进行加载的<br><br></p> <p>在开发中,get传递中文,一般都乱码<br>url编码为ISO8859-1,而这种编码不支持中文</p> <p>过滤器的常用:<br>1、使用过滤器实现get的自动转码<br>步骤:<br>1、创建过滤器<br>2、在doFilter的方法中验证请求方式<br>3、get请求需要将请求参数的内容的编码格式都转换<br> 重写请求对象的参数内容:HttpServletRequestWrapper<br>4、重写获取参数值的方法<br> 1、getParameter<br> 2、getParameterMap<br> 3、getParameterValues</p> <p>2、自动登录</p> <p> </p> <p> </p> <p>具有登录功能的网页<br>设计数据库<br>搭框架</p> <p> </p> <p>Md5:加密,不可逆<br>目前使用最广泛,因为简单</p> <p> </p> <p>Ajax<br>JQuery<br>项目</p> <p> </p> <p><strong>》十八</strong></p> <p> </p> <p>同步:单线程:代码会从上到下进行,会引起阻塞<br>异步:多线程:开启多个线程,各个互不影响</p> <p><br>2个子线程分别运行。如何在主线程中获取2个子线程的结束?</p> <p><br>一、Ajax:Asynchronous JavaScript And XML<br>局部刷新网页的技术</p> <p>1、核心对象:XMLHttpRequest<br>获取方式:<br>//根据浏览器的不同创建Ajax对象<br>function getXMLRequest(){<br> var xttp;<br> if(window.XMLHttpRequest){//当前浏览器支持直接创建ajax对象<br> xttp=new XMLHttpRequest();<br> }else{//支持IE5\6<br> xttp=new ActiveXObject("Microsoft.XMLHTTP");<br> }<br> return xttp;<br>}</p> <p>2、常用属性:<br> readyState:类型short;只读 <br> 取值说明:<br> 就绪状态码 说 明<br> 0 XMLHttpRequest对象没有完成初始化即:刚刚创建。<br> 1 XMLHttpRequest对象开始发送请求调用了open方法,但还没有调用send方法。请求还没有发出<br> 2 XMLHttpRequest对象的请求发送完成send方法已经调用,数据已经提交到服务器,但没有任何响应<br> 3 XMLHttpRequest对象开始读取响应,还没有结束收到了所有的响应消息头,但正文还没有完全收到<br> 4 XMLHttpRequest对象读取响应结束一切都收到了<br><br> responseText:类型String;只读,服务器返回内容:一般为普通字符串或json字符串<br> responseXML:类型Document;只读,服务器返回内容:xml文档格式<br> status:类型short;只读,服务器的状态响应码<br> 常用取值说明:<br> 状态码 说 明<br> 200 服务器响应正常<br> 400 无法找到请求的资源<br> 403 没有访问权限<br> 404 访问的资源不存在<br> 500 服务器内部错误</p> <p><br>一般都需要验证readyState=4 并且 status=200<br>3、常用方法:<br> open(method,URL,async) 建立与服务器的连接method参数指定请求的HTTP方法,典型的值是GET或POST,URL参数指请求的地址,async参数指定是否使用异步请求,其值为true或false<br> send(content) 发送请求content参数指定请求的参数 <br> setRequestHeader(header,value) 设置请求的头信息 </p> <p>4、事件属性:<br> onreadystatechange:指定回调函数,获取服务器响应内容的函数<br> 值为函数,用来处理服务器响应内容<br><br>5、使用步骤:<br> 1、获取XMLHttpRequest对象------new XMLHttpRequest()<br> 2、设置回调函数-------onreadystatechange<br> 3、打开连接-----------open<br> 4、设置请求头---------setRequestHeader<br> 5、发送---------------send</p> <p> </p> <p>登陆</p> <p>练习:</p> <p>1、开发注册页面<br>要求:<br> 1、自己写Servlet(2个,一个负责验证用户名是否存在,另一个负责添加用户)<br> http://localhost:8080/Web_Day18_AutoLogin/checkname<br> http://localhost:8080/Web_Day18_AutoLogin/register<br> 2、写一个HTML页面,完成注册功能。<br> 就是普通的html页面,没有使用表单<br> 3、Ajax实现用户名是否存在,实现注册<br> 通过Ajax传输数据并接受 <br><br><br><br>2、分页<br>步骤:<br>1、完成Servlet,接受当前页码和每页显示的数据<br>2、通过Ajax请求Servlet</p> <p><br>JS解析JSON数据:<br>通常使用JSON.parse进行解析<br>有点类似JSON源生解析</p> <p> </p> <p>3、搜索<br>根据商品名称实现模糊搜索<br>只需在Servlet添加参数,商品名称<br>html中通过JS控制</p> <p> </p> <p><strong>》十九</strong></p> <p> </p> <p>一、jQuery<br>简化JS的使用<br>jQuery:就是一个轻量级的JS库<br>简化JS的使用<br>目的:写的更少,做的更多</p> <p>需要引入jQuery库<br>免费、开源</p> <p>1.2jQuery的格式:$("选择器").行为(参数);<br>解释:<br> 1、$:jQuery的标记<br> 2、选择器:类似CSS选择器<br> 3、行为:操作对知道的元素进行的操作<br><br><br>页面加载完成之后,调用 <br>$(document).ready(function(){</p> <p>});<br>等价于:<br>window.οnlοad=function(){</p> <p><br>}<br><br>1.3jQuery的选择器:<br>常用选择器:<br> 1、标签选择器:直接写HTML标签名称<br> 2、class:为HTML标签使用class属性的值,.类名<br> 3、id:为HTML标签使用id属性的值,#id名</p> <p>注意:选择器可以混合使用,只需记得每种的格式</p> <p>1.4jQuery的行为/操作<br> 行为可以是事件、文档、样式、属性、效果</p> <p>1.4.1事件:对应的就是HTML标签的事件属性<br>事件的的参数都是函数<br> 常用事件:<br> ready:加载完触发<br> click:点击触发<br> change:内容改变触发<br> blur:失去焦点触发<br> focus:获取焦点触发<br> dblclick:双击触发</p> <p>1.4.2文档<br>操作Html的内容,参数一般为要设置的文本内容,不带参数就是得到<br> html:内部的HTML内容----innerHTML<br> val:input标签的value属性<br> append:追加,在当前的选择器的元素内部追加<br> after:添加,在当前选择器元素的后面添加<br> before:添加,在当前选择器元素的前面添加<br> remove:移除<br></p> <p>1.4.3样式<br>就是为HTML元素设置CSS属性<br> 常用行为:<br> css:设置对应标签的属性<br> 参数:<br> 1、css属性敏成功<br> 2、css属性的值<br> 取值说明:<br> 1、没有:获取属性的中<br> 2、具体的值:设置属性的值<br> 3、函数:必须返回当前属性的值</p> <p><br>1.4.4属性<br>改变HTML的标签属性<br> 常用:<br> attr():设置或获取对应的属性<br> toggleClass:新增或删除class属性,不存在就新增,存在就删除<br> removeAttr:移除属性</p> <p><br>1.4.5效果<br>特效<br>1、显示和隐藏<br> hide:隐藏<br> 参数说明:<br> 1、没有参数:就是立即执行<br> 2、1个参数:就是在指定的毫秒之内隐藏完毕<br> 3、2个参数:就是在指定的毫秒之内隐藏完毕,并回调指定的函数<br><br> show:显示<br> 参数说明:<br> 1、没有参数:就是立即执行<br> 2、1个参数:就是在指定的毫秒之内显示完毕<br> 3、2个参数:就是在指定的毫秒之内显示完毕,并回调指定的函数<br> toggle:显示或隐藏<br> 参数说明:<br> 1、没有参数:就是立即执行<br> 2、1个参数:就是在指定的毫秒之内执行完毕<br> 3、2个参数:就是在指定的毫秒之内执行完毕,并回调指定的函数</p> <p><br>2、透明度<br>就是可见的清晰度<br>范围:[0.0,1.0]<br>其中:0.0看不见<br>1.0完全可见<br>常用:<br> fadeTo:改变透明度<br> 参数说明:<br> 1、速度<br> 2、透明度<br> 3、回调函数<br><br>3、自定义动画<br>可以自己指定属性的变化<br> 常用:<br> animate:设置动画<br> 参数说明:<br> 1、属性内容:json数据,可以同时设置多个属性变化<br> 2、动画持续时间<br><br><br></p> <p><br>1.5jQuery的Ajax<br>就是jQuery对象Ajax技术进行了封装,简化<br>常用:<br>1、load:<br>使用方式:<br>$(选择器).load(url,data,callback)<br>一般都是直接使用<br>会默认将返回结果设置到对应的选择器</p> <p>2、ajax:<br>使用方式:<br> $.ajax(json格式数据):参数为{属性名称:值}<br> 常用的名称:<br> url:要请求的路径<br> data:参数<br> method:方式<br> success:成功的回调方法<br> error:错误的回调方法<br>3、get:get请求<br>使用方式:<br> $.get(url,data,callback)<br>4、post:post请求<br>使用方式:<br> $.post(url,data,callback)</p> <p> </p> <p> </p> <p> </p> <p>练习:使用jQuery对输入框的内容进行校验</p> <p> </p> <p>课下:<br>设计模式:建造者模式<br>链式编程</p> <p> </p> <p> </p> <p><br>二、总结</p> <p>1、前端<br>HTML:超文本标记语言<br>在浏览器中显示数据<br>格式:<标签名称></标签名称></p> <p> 语法格式:<br> 1、固定标签<br> 2、标签嵌套<br> 3、属性的值必须双引号<br> 4、成对出现<br> 5、不区分大小写<br><br>常用标签:<br>div\form\p\a\img\input\ul\ol\select\textarea\hr\br\table\tr\td\th\span\h1\label\frameset\frame<br>常用属性:<br>width\height\src\href\border\align\style\id\class\name\action\method\enctype\checked\disabled<br>常用事件:<br>onload\onclick\ondblclick\onfocus\onblur\onchange\onmouseout\onmouseover\onsubmit\onselect</p> <p>CSS:层叠样式表<br>美化HTML</p> <p>格式:选择器{属性名称:值}</p> <p>引用方式:<br>1、外部:link<br>3、内部:在head使用<style><br>4、内嵌:在标签中使用style属性</p> <p>选择器:<br>1、标签:标签名称{}<br>2、class::.类名<br>3、id:#id名称<br>4、属性:[属性名称=值]</p> <p>常用属性:<br> 1、背景:backgroundXXX<br> 2、文本:textXXX<br> 3、字体:fontXXX<br> 4、盒子模型<br> 1、borderXXX:边框<br> 2、marginXXX:外边距<br> 3、paddingXXX:内边距<br> 5、列表:list-style-type<br> 6、位置:<br> 1、float:浮动<br> 2、position:定位<br><br>JS:JavaScript:浏览器脚本语言<br>动态交互HTML</p> <p>引用方式:<br>1、外部js文件:<script src="路径"/><br>2、head内部:<script><br>3、body内部:<script></p> <p>JS语法:<br>1、数据类型:<br> 原始类型:字符串、数字、boolean<br> 引用类型:<br>2、变量:可变的量<br>格式:var 变量名称[=值];</p> <p>js的变量可以不声明直接使用</p> <p>3、运算符:算术、比较、赋值、逻辑、位、三目、字符串连接</p> <p>4、分支语句<br> if else<br> switch<br><br>break<br>return<br>5、循环语句<br> for<br> for in <br> while<br> do\while<br></p> <p>6、函数<br>格式:function 函数名称(参数名称){<br><br> [return 返回值]<br>}</p> <p>7、全局函数<br> 1、isNaN<br> 2、Number<br> 3、String<br> 4、parseInt<br> 5、parseFloat<br><br>8、内置对象<br> 1、Number<br> 2、String<br> 3、Math:<br> floor<br> random<br> round<br> 4、Array<br> 创建数组<br> 可以改变长度<br> 常用属性:<br> length<br> 常用方法:<br> sort:排序<br><br> 5、Regex<br> 正则表达式<br> 以/正则规则/<br> Regex<br> Pattern<br><br> 常用字符串的:<br> matchs:匹配<br> split:切割<br> replace:替换<br><br> 6、window<br> 7、Date<br><br>9、document<br> 常用方法:<br> 1、getElementById<br> 2、getElementsByTagName<br> 3、getElementsByName<br> 4、createElement<br> 5、setAttribute<br> 6、appendChild<br><br><br> value<br> src<br> innerHTML<br> href<br><br><br></p> <p><br>2、数据库<br>MySQL:数据库<br>存储数据的仓库<br>SQL:结构化查询语言<br>分类:<br>1、DDL:数据库定义语言:create\drop\alter<br>2、DML:数据库操作语言:insert\update\delete<br>3、DCL:数据库控制语言:用户、安全等<br>4、DQL:数据库查询语言:select</p> <p>七大语句:<br>create table/database<br>alter table/database<br>drop table/database</p> <p>insert into 表名(字段) values(值)<br>update 表名 set <br>delete from 表名 <br>select 字段 from 表名 [where] [order by] [group by] [having] [limit] <br><br>约束条件:<br>1、主键 <br>2、唯一<br>3、非null<br>4、默认<br>5、外键</p> <p>条件:<br>and\or<br>= != >=<br>like<br>in<br>between and<br>IS NULL<br>IS NOT NULL</p> <p><br>聚合函数:<br>MAX<br>MIN<br>SUM<br>AVG<br>COUNT</p> <p>函数:<br>now<br>random<br>md5</p> <p>多表操作:<br>1、内联:inner join<br>2、左外连:left out join<br>3、右外连:right out join<br>4、笛卡尔积:select * from 表1,表2</p> <p>触发器:自动新增、修改、删除等</p> <p><br>事务:保证操作的一致性<br>start transaction:开启事务<br>commit:提交事务<br>rollback:回滚事务</p> <p>事务特性:<br>A原子性<br>C一致性<br>I隔离性<br> 防止脏读、幻度、虚度等<br>D持久性</p> <p>JDBC:java操作数据库的接口</p> <p>使用步骤:<br>1、导入数据库驱动jar<br>2、动态加载<br>3、连接<br>4、获取操作SQL对象<br>5、执行SQL<br>6、销毁</p> <p>DriverManager:驱动管理<br>Connection:连接<br>Statement:操作SQL<br>PreparedStatement:防SQL注入操作SQL<br>ResultSet:结果集</p> <p><br>连接池:存储数据库连接的池子<br>管理数据库的连接</p> <p>常用的数据库连接池:<br>1、C3P0<br>2、DBCP</p> <p><br>QueryRunner:工具类<br>常用方法:<br> 1、update<br> 2、query<br><br> BeanHander:将结果从ResultSet中转换为实体对象<br> BeanListHander:将结果从ResultSet中转换为list<br><br><br></p> <p>3、后端<br>Tomcat:服务器<br>免费、不要钱</p> <p>目录:<br>bin:可执行<br>lib:第三方jar<br>config:配置文件<br>webapps:发布的Web应用<br>work:工作空间<br>temp:临时文件<br>log:日志</p> <p>可以运行我们的Servlet&JSP</p> <p> </p> <p>Servlet:java语言编写的运行在服务器的api<br>获取请求数据<br>响应数据<br>Servlet创建方式:<br>1、实现Servlet接口<br> 重写方法:<br> init<br> destroy<br> service<br>2、继承GenericServlet<br> 重写:<br> service<br>3、继承HttpServlet<br> 重写:<br> doGet<br> doPost<br><br><br>配置Servlet:<br> 1、xml配置<br> 在web.xml下使用:<br> <servlet><br> <servlet-name>名称</servlet-name><br> <servlet-class>类名</servlet-class><br> </servlet><br> <servlet-mapping><br> <servlet-name>名称</servlet-name><br> <url-pattern>匹配规则</url-pattern><br> </servlet-mapping><br><br> 2、注解<br> @WebServlet()</p> <p>使用步骤:<br>1、创建Servlet<br>2、重写方法doGet、doPost<br>3、配置<br>4、发布</p> <p>Request:请求</p> <p>常用方法:<br> getParameter:获取指定key的值<br> getParameterValues:获取指定key的所有值<br> getParameterNames:获取所有的Key<br> getParameterMap:获取所有的Key和对应的值<br> getAttribute:获取指定Key的属性<br> setAttribute:新增属性或修改属性<br> removeAttribute:移除属性<br> getMethod:获取请求方式<br> getRemoteAddr:获取远程IP<br><br><br>属性和参数的区别?<br>属性可以存储对象<br>参数不可以</p> <p>Response:响应<br> 常用:<br> getOutputStream:获取输出字节流:响应数据<br> getWriter:获取输出字符流:响应数据<br> setCharacterEncoding:设置内容的编码格式<br> setContentType:设置内容的类型<br> setHeader:设置消息头<br></p> <p>跳转:<br>1、客户端跳转<br> 重定向<br>2、服务端的跳转<br> 请求转发<br><br>请求行:自动携带<br>消息头:浏览器、服务器识别<br></p> <p>请求的组成:<br>请求行<br>请求消息头<br>请求内容</p> <p> </p> <p>JSP:Java Server Page<br>java根据Servlet和HTML结合创建<br>可以在浏览器直接访问,底层运行转化为诶Servlet</p> <p>符号:<br><%! %>:声明<br><% %>:操作<br><%= %>:显示</p> <p><%--注释--%></p> <p><br>三大指令:<br>格式:<%@ 指令名称 属性=值 %><br>1、page:导入包、标记文档类型等<br>2、include:静态加载其他页面<br>3、taglib:标记JSTL标签库</p> <p> </p> <p>九大对象:<br>内置,默认创建<br>1、request<br>2、response<br>3、application<br>4、session<br>5、page<br>6、pageContent<br>7、out<br>8、exception<br>9、config</p> <p> </p> <p><br>四大域:<br>application----ServletContext<br>作用域:整个Web范围<br>session----HttpSession<br>作用域:客户访问产生,默认30分钟无响应销毁<br>request---HttpServletRequest<br>作用域:发起请求默认产生,也可以转发<br>pageContext---ServletContent<br>作用域:当前页面</p> <p><br>都有以下方法:<br> getAttribute<br> setAttribute<br> removeAttribute</p> <p>三元素:<br>1、include:动态加载其他页面<br>2、forward:跳转其他页面<br>3、param:携带参数 </p> <p> </p> <p><br>EL表达式:简化jsp <%= %><br>格式:${域中属性名称|param.参数名称|cookie}</p> <p> </p> <p><br>JSTL:标准标签库<br>简化jsp-- <% %><br>c:out<br>c:set<br>c:forEach<br>c:choose<br>c:if<br>c:remove</p> <p><br>Cookie:将信息保存在客户的电脑上,硬盘</p> <p>request.getCookies:获取所有Cookie<br>response.addCookie:添加Cookie</p> <p>记住账号</p> <p>Session:将信息保存在服务器,内存</p> <p>request.getSession</p> <p>保存登录账号等</p> <p>数据格式:<br>特点:三跨:跨平、跨网络、跨编程语言</p> <p>1、HTML:浏览器<br>2、JSON:<br>[]数组<br>{}对象<br>常用解析:<br> 1、JSON源生<br> JSONObject:解析对象<br> JSONArray:解析数组<br> 2、Gson<br> gson.fromJson:解析json数据<br> gson.toJson:将对象转换为JSON字符串<br> 3、fastjson<br> JSON.parseObject:解析对象<br> JSON.parseArray:解析数组<br>3、XML</p> <p>作用:<br>1、配置文件<br>2、传送数据</p> <p>常用解析:<br> 1、Dom源生解析<br> 区分元素和节点<br> 2、SAX<br> 自定义DeafultHeader<br> 3、DOM4j<br> SAXReader<br> 4、XPATH<br> 查询<br></p> <p>4、技术</p> <p>1、注解反射泛型<br>注解:为代码添加的注释<br>一般为解决特殊情况准备的<br>比如:json特殊的属性名称</p> <p> </p> <p>创建注解:<br>1、创建@interface<br>2、创建属性<br>3、使用注解<br>4、解析注解</p> <p>反射:<br>动态获取类的信息</p> <p>作用:<br>1、获取类的信息:属性、方法、注解、构造器等<br>2、执行私有属性或方法</p> <p><br>Class类</p> <p>泛型:<br>用来占位的字母</p> <p>引用类型占位,避免转型</p> <p>结合反射使用</p> <p>切记:泛型也得先声明才可以使用<br><字母>这就是声明</p> <p><br>文件上传&下载<br>文件上传使用第三方:<br>1、页面需要有file标签<br>2、设置表单的enctype="muilpart/form-data"<br>3、在对应的Servlet获取FileItem<br>4、创建保存路径<br>5、流的读取和写出</p> <p><br>Listener:事件<br>就是获取application\session\request等变化的接口</p> <p>注册方式:<br>1、xml<br><listener><br><listener-class></listener-class><br></listener><br>2、注解<br>@WebListener</p> <p>监听器:就是实现了Listener接口的类<br>创建或销毁、属性内容的变化</p> <p><br>Filter:过滤器<br>可以对每一次的请求和响应作出过滤</p> <p>注册方式:<br>1、xml<br>在web.xml下使用:<br> <filter><br> <filter-name>名称</filter-name><br> <filter-class>类名</filter-class><br> </filter><br> <filter-mapping><br> <filter-name>名称</filter-name><br> <url-pattern>匹配规则</url-pattern><br> </filter-mapping><br><br>2、注解<br>@WebFilter(ulrPatterns={})</p> <p>注解的执行顺序按照字符串顺序<br>xml是按照<filter-mapping>先后顺序执行</p> <p><br>生命周期:<br>1、init<br>2、doFilter<br>继续必须使用chain.doFilter</p> <p>3、destroy</p> <p><br>作用<br>1、自动转码<br>2、自动登录</p> <p> </p> <p>Ajax:异步局部刷新<br>可以对网页的局部内容进行请求服务器病显示返回结果</p> <p>结果数据格式:<br>1、字符串<br>2、JSON<br>3、xml</p> <p> </p> <p>XMLHttpRequest:Ajax的核心对象<br>new XMLHttpRequest();</p> <p><br>常用属性:<br>1、readyState:读取状态<br> 0初始化<br> 1打开链接<br> 2发生请求<br> 3未接收完全<br> 4全部OK<br>2、status:服务器返回的状态响应码<br> 200:OK<br> 404:未发现:要么服务器宕机、要么服务器将页面删除了、要么url路径写错了<br> 403:没有权限<br> 500:服务器错误</p> <p>事件属性:<br>onreadystatechange:读取状态变化事件<br>对应的值:回调函数</p> <p>常用方法:<br>1、open:打开链接<br>2、setRequestHeader:设置消息头<br>3、send:发送</p> <p> </p> <p>使用步骤:<br>1、创建XMLHttpRequest对象<br>2、设置回调函数<br>3、打开链接<br>4、设置请求头<br>5、发送信息</p> <p><br>jQuery:简化JS<br>就是对JS进行了封装</p> <p>详情看上面</p> <p> </p> </div> <p>转载于:https://www.cnblogs.com/lidar/p/7745979.html</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1831051367792340992"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(数据库,java,json)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835509897106649088.htm" title="Long类型前后端数据不一致" target="_blank">Long类型前后端数据不一致</a> <span class="text-muted">igotyback</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问</div> </li> <li><a href="/article/1835509769822105600.htm" title="LocalDateTime 转 String" target="_blank">LocalDateTime 转 String</a> <span class="text-muted">igotyback</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;publicclassMain{publicstaticvoidmain(String[]args){//获取当前时间LocalDateTimenow=LocalDateTime.now();//定义日期格式化器DateTimeFormatterformat</div> </li> <li><a href="/article/1835509391361667072.htm" title="Linux下QT开发的动态库界面弹出操作(SDL2)" target="_blank">Linux下QT开发的动态库界面弹出操作(SDL2)</a> <span class="text-muted">13jjyao</span> <a class="tag" taget="_blank" href="/search/QT%E7%B1%BB/1.htm">QT类</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/sdl2/1.htm">sdl2</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>需求:操作系统为linux,开发框架为qt,做成需带界面的qt动态库,调用方为java等非qt程序难点:调用方为java等非qt程序,也就是说调用方肯定不带QApplication::exec(),缺少了这个,QTimer等事件和QT创建的窗口将不能弹出(包括opencv也是不能弹出);这与qt调用本身qt库是有本质的区别的思路:1.调用方缺QApplication::exec(),那么我们在接口</div> </li> <li><a href="/article/1835504218178416640.htm" title="Google earth studio 简介" target="_blank">Google earth studio 简介</a> <span class="text-muted">陟彼高冈yu</span> <a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a> <div>GoogleEarthStudio是一个基于Web的动画工具,专为创作使用GoogleEarth数据的动画和视频而设计。它利用了GoogleEarth强大的三维地图和卫星影像数据库,使用户能够轻松地创建逼真的地球动画、航拍视频和动态地图可视化。网址为https://www.google.com/earth/studio/。GoogleEarthStudio是一个基于Web的动画工具,专为创作使用G</div> </li> <li><a href="/article/1835501821569888256.htm" title="关于提高复杂业务逻辑代码可读性的思考" target="_blank">关于提高复杂业务逻辑代码可读性的思考</a> <span class="text-muted">编程经验分享</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E7%BB%8F%E9%AA%8C/1.htm">开发经验</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>目录前言需求场景常规写法拆分方法领域对象总结前言实际工作中大部分时间都是在写业务逻辑,一般都是三层架构,表示层(Controller)接收客户端请求,并对入参做检验,业务逻辑层(Service)负责处理业务逻辑,一般开发都是在这一层中写具体的业务逻辑。数据访问层(Dao)是直接和数据库交互的,用于查数据给业务逻辑层,或者是将业务逻辑层处理后的数据写入数据库。简单的增删改查接口不用多说,基本上写好一</div> </li> <li><a href="/article/1835499681732456448.htm" title="SQL Server_查询某一数据库中的所有表的内容" target="_blank">SQL Server_查询某一数据库中的所有表的内容</a> <span class="text-muted">qq_42772833</span> <a class="tag" taget="_blank" href="/search/SQL/1.htm">SQL</a><a class="tag" taget="_blank" href="/search/Server/1.htm">Server</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/sqlserver/1.htm">sqlserver</a> <div>1.查看所有表的表名要列出CrabFarmDB数据库中的所有表(名),可以使用以下SQL语句:USECrabFarmDB;--切换到目标数据库GOSELECTTABLE_NAMEFROMINFORMATION_SCHEMA.TABLESWHERETABLE_TYPE='BASETABLE';对这段SQL脚本的解释:SELECTTABLE_NAME:这个语句的作用是从查询结果中选择TABLE_NAM</div> </li> <li><a href="/article/1835498925755297792.htm" title="DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理" target="_blank">DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理</a> <span class="text-muted">STU学生网页设计</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/%E6%9C%9F%E6%9C%AB%E7%BD%91%E9%A1%B5%E4%BD%9C%E4%B8%9A/1.htm">期末网页作业</a><a class="tag" taget="_blank" href="/search/html%E9%9D%99%E6%80%81%E7%BD%91%E9%A1%B5/1.htm">html静态网页</a><a class="tag" taget="_blank" href="/search/html5%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">html5期末大作业</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/web%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web大作业</a> <div>️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程</div> </li> <li><a href="/article/1835498547785592832.htm" title="【华为OD机试真题2023B卷 JAVA&JS】We Are A Team" target="_blank">【华为OD机试真题2023B卷 JAVA&JS】We Are A Team</a> <span class="text-muted">若博豆</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>华为OD2023(B卷)机试题库全覆盖,刷题指南点这里WeAreATeam时间限制:1秒|内存限制:32768K|语言限制:不限题目描述:总共有n个人在机房,每个人有一个标号(1<=标号<=n),他们分成了多个团队,需要你根据收到的m条消息判定指定的两个人是否在一个团队中,具体的:1、消息构成为:abc,整数a、b分别代</div> </li> <li><a href="/article/1835497411179540480.htm" title="深入理解 MultiQueryRetriever:提升向量数据库检索效果的强大工具" target="_blank">深入理解 MultiQueryRetriever:提升向量数据库检索效果的强大工具</a> <span class="text-muted">nseejrukjhad</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>深入理解MultiQueryRetriever:提升向量数据库检索效果的强大工具引言在人工智能和自然语言处理领域,高效准确的信息检索一直是一个关键挑战。传统的基于距离的向量数据库检索方法虽然广泛应用,但仍存在一些局限性。本文将介绍一种创新的解决方案:MultiQueryRetriever,它通过自动生成多个查询视角来增强检索效果,提高结果的相关性和多样性。MultiQueryRetriever的工</div> </li> <li><a href="/article/1835496149843275776.htm" title="关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript" target="_blank">关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript</a> <span class="text-muted">二挡起步</span> <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a><a class="tag" taget="_blank" href="/search/%E9%A3%8E%E6%99%AF/1.htm">风景</a> <div>⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip</div> </li> <li><a href="/article/1835496148601761792.htm" title="HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动" target="_blank">HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动</a> <span class="text-muted">二挡起步</span> <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/web%E8%AE%BE%E8%AE%A1%E7%BD%91%E9%A1%B5%E8%A7%84%E5%88%92%E4%B8%8E%E8%AE%BE%E8%AE%A1/1.htm">web设计网页规划与设计</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/dreamweaver/1.htm">dreamweaver</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线</div> </li> <li><a href="/article/1835493374514262016.htm" title="MongoDB Oplog 窗口" target="_blank">MongoDB Oplog 窗口</a> <span class="text-muted">喝醉酒的小白</span> <a class="tag" taget="_blank" href="/search/MongoDB/1.htm">MongoDB</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>在MongoDB中,oplog(操作日志)是一个特殊的日志系统,用于记录对数据库的所有写操作。oplog允许副本集成员(通常是从节点)应用主节点上已经执行的操作,从而保持数据的一致性。它是MongoDB副本集实现数据复制的基础。MongoDBOplog窗口oplog窗口是指在MongoDB副本集中,从节点可以用来同步数据的时间范围。这个窗口通常由以下因素决定:Oplog大小:oplog的大小是有限</div> </li> <li><a href="/article/1835492740536823808.htm" title="node.js学习" target="_blank">node.js学习</a> <span class="text-muted">小猿L</span> <a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a> <div>node.js学习实操及笔记温故node.js,node.js学习实操过程及笔记~node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记为什么学node.js可以让别人访问我们编写的网页为后续的框架学习打下基础,三大框架vuereactangular离不开node.jsnode.js是什么官网:node.js是一个开源的、跨平台的运行JavaScript的运行</div> </li> <li><a href="/article/1835490974911000576.htm" title="python os 环境变量" target="_blank">python os 环境变量</a> <span class="text-muted">CV矿工</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/numpy/1.htm">numpy</a> <div>环境变量:环境变量是程序和操作系统之间的通信方式。有些字符不宜明文写进代码里,比如数据库密码,个人账户密码,如果写进自己本机的环境变量里,程序用的时候通过os.environ.get()取出来就行了。os.environ是一个环境变量的字典。环境变量的相关操作importos"""设置/修改环境变量:os.environ[‘环境变量名称’]=‘环境变量值’#其中key和value均为string类</div> </li> <li><a href="/article/1835489460372992000.htm" title="【PG】常见数据库、表属性设置" target="_blank">【PG】常见数据库、表属性设置</a> <span class="text-muted">江无羡</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>PG的常见属性配置方法数据库复制、备份相关表的复制标识单表操作批量表操作链接数据库复制、备份相关表的复制标识单表操作通过ALTER语句单独更改一张表的复制标识。ALTERTABLE[tablename]REPLICAIDENTITYFULL;批量表操作通过代码块的方式,对某个schema中的所有表一起更新其复制标识。SELECTtablename,CASErelreplidentWHEN'd'TH</div> </li> <li><a href="/article/1835485429059645440.htm" title="docker" target="_blank">docker</a> <span class="text-muted">igotyback</span> <a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a> <div>Docker容器的文件系统是隔离的,但是可以通过挂载卷(Volumes)或绑定挂载(BindMounts)将宿主机的文件系统目录映射到容器内部。要查看Docker容器的映射路径,可以使用以下方法:查看容器配置:使用dockerinspect命令可以查看容器的详细配置信息,包括挂载的卷。例如:bashdockerinspect在输出的JSON格式中,查找"Mounts"部分,这里会列出所有的挂载信息</div> </li> <li><a href="/article/1835483159630802944.htm" title="nosql数据库技术与应用知识点" target="_blank">nosql数据库技术与应用知识点</a> <span class="text-muted">皆过客,揽星河</span> <a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a><a class="tag" taget="_blank" href="/search/nosql/1.htm">nosql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E9%9D%9E%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">非关系型数据库</a> <div>Nosql知识回顾大数据处理流程数据采集(flume、爬虫、传感器)数据存储(本门课程NoSQL所处的阶段)Hdfs、MongoDB、HBase等数据清洗(入仓)Hive等数据处理、分析(Spark、Flink等)数据可视化数据挖掘、机器学习应用(Python、SparkMLlib等)大数据时代存储的挑战(三高)高并发(同一时间很多人访问)高扩展(要求随时根据需求扩展存储)高效率(要求读写速度快)</div> </li> <li><a href="/article/1835480639814594560.htm" title="在Ubuntu中编译含有JSON的文件出现报错" target="_blank">在Ubuntu中编译含有JSON的文件出现报错</a> <span class="text-muted">芝麻糊76</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/kill_bug/1.htm">kill_bug</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a> <div>在ubuntu中进行JSON相关学习的时候,我发现了一些小问题,决定与大家进行分享,减少踩坑时候出现不必要的时间耗费截取部分含有JSON部分的代码进行展示char*str="{\"title\":\"JSONExample\",\"author\":{\"name\":\"JohnDoe\",\"age\":35,\"isVerified\":true},\"tags\":[\"json\",\"</div> </li> <li><a href="/article/1835478496810463232.htm" title="Xinference如何注册自定义模型" target="_blank">Xinference如何注册自定义模型</a> <span class="text-muted">玩人工智能的辣条哥</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/Xinference/1.htm">Xinference</a> <div>环境:Xinference问题描述:Xinference如何注册自定义模型解决方案:1.写个model_config.json,内容如下{"version":1,"context_length":2048,"model_name":"custom-llama-3","model_lang":["en","ch"],"model_ability":["generate","chat"],"model</div> </li> <li><a href="/article/1835477614848995328.htm" title="insert into select 主键自增_mybatis拦截器实现主键自动生成" target="_blank">insert into select 主键自增_mybatis拦截器实现主键自动生成</a> <span class="text-muted">weixin_39521651</span> <a class="tag" taget="_blank" href="/search/insert/1.htm">insert</a><a class="tag" taget="_blank" href="/search/into/1.htm">into</a><a class="tag" taget="_blank" href="/search/select/1.htm">select</a><a class="tag" taget="_blank" href="/search/%E4%B8%BB%E9%94%AE%E8%87%AA%E5%A2%9E/1.htm">主键自增</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/delete%E8%BF%94%E5%9B%9E%E5%80%BC/1.htm">delete返回值</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/insert%E8%BF%94%E5%9B%9E%E4%B8%BB%E9%94%AE/1.htm">insert返回主键</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/insert%E8%BF%94%E5%9B%9E%E5%AF%B9%E8%B1%A1/1.htm">insert返回对象</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/plus/1.htm">plus</a><a class="tag" taget="_blank" href="/search/insert%E8%BF%94%E5%9B%9E%E4%B8%BB%E9%94%AE/1.htm">insert返回主键</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/plus/1.htm">plus</a><a class="tag" taget="_blank" href="/search/%E6%8F%92%E5%85%A5%E7%94%9F%E6%88%90id/1.htm">插入生成id</a> <div>前言前阵子和朋友聊天,他说他们项目有个需求,要实现主键自动生成,不想每次新增的时候,都手动设置主键。于是我就问他,那你们数据库表设置主键自动递增不就得了。他的回答是他们项目目前的id都是采用雪花算法来生成,因此为了项目稳定性,不会切换id的生成方式。朋友问我有没有什么实现思路,他们公司的orm框架是mybatis,我就建议他说,不然让你老大把mybatis切换成mybatis-plus。mybat</div> </li> <li><a href="/article/1835476093189058560.htm" title="Java 重写(Override)与重载(Overload)" target="_blank">Java 重写(Override)与重载(Overload)</a> <span class="text-muted">叨唧唧的</span> <div>Java重写(Override)与重载(Overload)重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如:父类的一个方法申明了一个检查异常IOExceptio</div> </li> <li><a href="/article/1835473830873755648.htm" title="简单了解 JVM" target="_blank">简单了解 JVM</a> <span class="text-muted">记得开心一点啊</span> <a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a> <div>目录♫什么是JVM♫JVM的运行流程♫JVM运行时数据区♪虚拟机栈♪本地方法栈♪堆♪程序计数器♪方法区/元数据区♫类加载的过程♫双亲委派模型♫垃圾回收机制♫什么是JVMJVM是JavaVirtualMachine的简称,意为Java虚拟机。虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统(如:JVM、VMwave、VirtualBox)。JVM和其他两个虚拟机</div> </li> <li><a href="/article/1835471689929027584.htm" title="关于Mysql 中 Row size too large (> 8126) 错误的解决和理解" target="_blank">关于Mysql 中 Row size too large (> 8126) 错误的解决和理解</a> <span class="text-muted">秋刀prince</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>提示:啰嗦一嘴,数据库的任何操作和验证前,一定要记得先备份!!!不会有错;文章目录问题发现一、问题导致的可能原因1、页大小2、行格式2.1compact格式2.2Redundant格式2.3Dynamic格式2.4Compressed格式3、BLOB和TEXT列二、解决办法1、修改页大小(不推荐)2、修改行格式3、修改数据类型为BLOB和TEXT列4、其他优化方式(可以参考使用)4.1合理设置数据</div> </li> <li><a href="/article/1835471058648526848.htm" title="1分钟解决 -bash: mvn: command not found,在Centos 7中安装Maven" target="_blank">1分钟解决 -bash: mvn: command not found,在Centos 7中安装Maven</a> <span class="text-muted">Energet!c</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>1分钟解决-bash:mvn:commandnotfound,在Centos7中安装Maven检查Java环境1下载Maven2解压Maven3配置环境变量4验证安装5常见问题与注意事项6总结检查Java环境Maven依赖Java环境,请确保系统已经安装了Java并配置了环境变量。可以通过以下命令检查:java-version如果未安装,请先安装Java。1下载Maven从官网下载:前往Apach</div> </li> <li><a href="/article/1835469672334585856.htm" title="Java企业面试题3" target="_blank">Java企业面试题3</a> <span class="text-muted">马龙强_</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>1.break和continue的作用(智*图)break:用于完全退出一个循环(如for,while)或一个switch语句。当在循环体内遇到break语句时,程序会立即跳出当前循环体,继续执行循环之后的代码。continue:用于跳过当前循环体中剩余的部分,并开始下一次循环。如果是在for循环中使用continue,则会直接进行条件判断以决定是否执行下一轮循环。2.if分支语句和switch分</div> </li> <li><a href="/article/1835468916290318336.htm" title="JVM、JRE和 JDK:理解Java开发的三大核心组件" target="_blank">JVM、JRE和 JDK:理解Java开发的三大核心组件</a> <span class="text-muted">Y雨何时停T</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>Java是一门跨平台的编程语言,它的成功离不开背后强大的运行环境与开发工具的支持。在Java的生态中,JVM(Java虚拟机)、JRE(Java运行时环境)和JDK(Java开发工具包)是三个至关重要的核心组件。本文将探讨JVM、JDK和JRE的区别,帮助你更好地理解Java的运行机制。1.JVM:Java虚拟机(JavaVirtualMachine)什么是JVM?JVM,即Java虚拟机,是Ja</div> </li> <li><a href="/article/1835464504918503424.htm" title="Java面试题精选:消息队列(二)" target="_blank">Java面试题精选:消息队列(二)</a> <span class="text-muted">芒果不是芒</span> <a class="tag" taget="_blank" href="/search/Java%E9%9D%A2%E8%AF%95%E9%A2%98%E7%B2%BE%E9%80%89/1.htm">Java面试题精选</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a> <div>一、Kafka的特性1.消息持久化:消息存储在磁盘,所以消息不会丢失2.高吞吐量:可以轻松实现单机百万级别的并发3.扩展性:扩展性强,还是动态扩展4.多客户端支持:支持多种语言(Java、C、C++、GO、)5.KafkaStreams(一个天生的流处理):在双十一或者销售大屏就会用到这种流处理。使用KafkaStreams可以快速的把销售额统计出来6.安全机制:Kafka进行生产或者消费的时候会</div> </li> <li><a href="/article/1835462485629562880.htm" title="白骑士的Java教学基础篇 2.5 控制流语句" target="_blank">白骑士的Java教学基础篇 2.5 控制流语句</a> <span class="text-muted">白骑士所长</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E6%95%99%E5%AD%A6/1.htm">教学</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>欢迎继续学习Java编程的基础篇!在前面的章节中,我们了解了Java的变量、数据类型和运算符。接下来,我们将探讨Java中的控制流语句。控制流语句用于控制程序的执行顺序,使我们能够根据特定条件执行不同的代码块,或重复执行某段代码。这是编写复杂程序的基础。通过学习这一节内容,你将掌握如何使用条件语句和循环语句来编写更加灵活和高效的代码。条件语句条件语句用于根据条件的真假来执行不同的代码块。if语句‘</div> </li> <li><a href="/article/1835462232612368384.htm" title="python语法——三目运算符" target="_blank">python语法——三目运算符</a> <span class="text-muted">HappyRocking</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%B8%89%E7%9B%AE%E8%BF%90%E7%AE%97%E7%AC%A6/1.htm">三目运算符</a> <div>在java中,有三目运算符,如:intc=(a>b)?a:b表示c取两者中的较大值。但是在python,不能直接这样使用,估计是因为冒号在python有分行的关键作用。那么在python中,如何实现类似功能呢?可以使用ifelse语句,也是一行可以完成,格式为:aifbelsec表示如果b为True,则表达式等于a,否则等于c。如:c=(aif(a>b)elseb)同样是完成了取最大值的功能。</div> </li> <li><a href="/article/1835457442260021248.htm" title="ArrayList 源码解析" target="_blank">ArrayList 源码解析</a> <span class="text-muted">程序猿进阶</span> <a class="tag" taget="_blank" href="/search/Java%E5%9F%BA%E7%A1%80/1.htm">Java基础</a><a class="tag" taget="_blank" href="/search/ArrayList/1.htm">ArrayList</a><a class="tag" taget="_blank" href="/search/List/1.htm">List</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a><a class="tag" taget="_blank" href="/search/idea/1.htm">idea</a> <div>ArrayList是Java集合框架中的一个动态数组实现,提供了可变大小的数组功能。它继承自AbstractList并实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量capacity,表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器中添</div> </li> <li><a href="/article/111.htm" title="JAVA基础" target="_blank">JAVA基础</a> <span class="text-muted">灵静志远</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a><a class="tag" taget="_blank" href="/search/%E5%8A%A0%E8%BD%BD/1.htm">加载</a><a class="tag" taget="_blank" href="/search/Date/1.htm">Date</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%B1%A0/1.htm">字符串池</a><a class="tag" taget="_blank" href="/search/%E8%A6%86%E7%9B%96/1.htm">覆盖</a> <div>一、类的初始化顺序 1 (静态变量,静态代码块)-->(变量,初始化块)--> 构造器 同一括号里的,根据它们在程序中的顺序来决定。上面所述是同一类中。如果是继承的情况,那就在父类到子类交替初始化。 二、String 1 String a = "abc"; JAVA虚拟机首先在字符串池中查找是否已经存在了值为"abc"的对象,根</div> </li> <li><a href="/article/238.htm" title="keepalived实现redis主从高可用" target="_blank">keepalived实现redis主从高可用</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>方案说明 两台机器(称为A和B),以统一的VIP对外提供服务 1.正常情况下,A和B都启动,B会把A的数据同步过来(B is slave of A) 2.当A挂了后,VIP漂移到B;B的keepalived 通知redis 执行:slaveof no one,由B提供服务 3.当A起来后,VIP不切换,仍在B上面;而A的keepalived 通知redis 执行slaveof B,开始</div> </li> <li><a href="/article/365.htm" title="java文件操作大全" target="_blank">java文件操作大全</a> <span class="text-muted">0624chenhong</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>最近在博客园看到一篇比较全面的文件操作文章,转过来留着。 http://www.cnblogs.com/zhuocheng/archive/2011/12/12/2285290.html 转自http://blog.sina.com.cn/s/blog_4a9f789a0100ik3p.html 一.获得控制台用户输入的信息    &nbs</div> </li> <li><a href="/article/492.htm" title="android学习任务" target="_blank">android学习任务</a> <span class="text-muted">不懂事的小屁孩</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>任务 完成情况 搞清楚带箭头的pupupwindows和不带的使用 已完成 熟练使用pupupwindows和alertdialog,并搞清楚两者的区别 已完成 熟练使用android的线程handler,并敲示例代码 进行中 了解游戏2048的流程,并完成其代码工作 进行中-差几个actionbar 研究一下android的动画效果,写一个实例 已完成 复习fragem</div> </li> <li><a href="/article/619.htm" title="zoom.js" target="_blank">zoom.js</a> <span class="text-muted">换个号韩国红果果</span> <a class="tag" taget="_blank" href="/search/oom/1.htm">oom</a> <div>它的基于bootstrap 的 https://raw.github.com/twbs/bootstrap/master/js/transition.js  transition.js模块引用顺序 <link rel="stylesheet" href="style/zoom.css"> <script src=&q</div> </li> <li><a href="/article/746.htm" title="详解Oracle云操作系统Solaris 11.2" target="_blank">详解Oracle云操作系统Solaris 11.2</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/Solaris/1.htm">Solaris</a> <div>当Oracle发布Solaris 11时,它将自己的操作系统称为第一个面向云的操作系统。Oracle在发布Solaris 11.2时继续它以云为中心的基调。但是,这些说法没有告诉我们为什么Solaris是配得上云的。幸好,我们不需要等太久。Solaris11.2有4个重要的技术可以在一个有效的云实现中发挥重要作用:OpenStack、内核域、统一存档(UA)和弹性虚拟交换(EVS)。  </div> </li> <li><a href="/article/873.htm" title="spring学习——springmvc(一)" target="_blank">spring学习——springmvc(一)</a> <span class="text-muted">a-john</span> <a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a> <div>Spring MVC基于模型-视图-控制器(Model-View-Controller,MVC)实现,能够帮助我们构建像Spring框架那样灵活和松耦合的Web应用程序。   1,跟踪Spring MVC的请求 请求的第一站是Spring的DispatcherServlet。与大多数基于Java的Web框架一样,Spring MVC所有的请求都会通过一个前端控制器Servlet。前</div> </li> <li><a href="/article/1000.htm" title="hdu4342 History repeat itself-------多校联合五" target="_blank">hdu4342 History repeat itself-------多校联合五</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E8%AE%BA/1.htm">数论</a> <div>水题就不多说什么了。 #include<iostream>#include<cstdlib>#include<stdio.h>#define ll __int64using namespace std;int main(){ int t; ll n; scanf("%d",&t); while(t--) </div> </li> <li><a href="/article/1127.htm" title="EJB和javabean的区别" target="_blank">EJB和javabean的区别</a> <span class="text-muted">asia007</span> <a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/ejb/1.htm">ejb</a> <div>EJB不是一般的JavaBean,EJB是企业级JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean,书写EJB是需要遵循一定的规范的,具体规范你可以参考相关的资料.另外,要运行EJB,你需要相应的EJB容器,比如Weblogic,Jboss等,而JavaBean不需要,只需要安装Tomcat就可以了   1.EJB用于服务端应用开发, 而JavaBeans</div> </li> <li><a href="/article/1254.htm" title="Struts的action和Result总结" target="_blank">Struts的action和Result总结</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a><a class="tag" taget="_blank" href="/search/Action%E9%85%8D%E7%BD%AE/1.htm">Action配置</a><a class="tag" taget="_blank" href="/search/Result%E9%85%8D%E7%BD%AE/1.htm">Result配置</a> <div>    一:Action的配置详解:      下面是一个Struts中一个空的Struts.xml的配置文件     <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC &quo</div> </li> <li><a href="/article/1381.htm" title="如何带好自已的团队" target="_blank">如何带好自已的团队</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a><a class="tag" taget="_blank" href="/search/%E5%9B%A2%E9%98%9F%E7%AE%A1%E7%90%86/1.htm">团队管理</a><a class="tag" taget="_blank" href="/search/%E5%9B%A2%E9%98%9F/1.htm">团队</a> <div>在网上看到博客" 怎么才能让团队成员好好干活"的评论,觉得写的比较好。 原文如下: 我做团队管理有几年了吧,我和你分享一下我认为带好团队的几点: 1.诚信         对团队内成员,无论是技术研究、交流、问题探讨,要尽可能的保持一种诚信的态度,用心去做好,你的团队会感觉得到。 2.努力提</div> </li> <li><a href="/article/1508.htm" title="Java代码混淆工具" target="_blank">Java代码混淆工具</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/ProGuard/1.htm">ProGuard</a> <div>Open Source Obfuscators ProGuard http://java-source.net/open-source/obfuscators/proguardProGuard is a free Java class file shrinker and obfuscator. It can detect and remove unused classes, fields, m</div> </li> <li><a href="/article/1635.htm" title="【Redis三】基于Redis sentinel的自动failover主从复制" target="_blank">【Redis三】基于Redis sentinel的自动failover主从复制</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>在第二篇中使用2.8.17搭建了主从复制,但是它存在Master单点问题,为了解决这个问题,Redis从2.6开始引入sentinel,用于监控和管理Redis的主从复制环境,进行自动failover,即Master挂了后,sentinel自动从从服务器选出一个Master使主从复制集群仍然可以工作,如果Master醒来再次加入集群,只能以从服务器的形式工作。   什么是Sentine</div> </li> <li><a href="/article/1762.htm" title="使用代理实现Hibernate Dao层自动事务" target="_blank">使用代理实现Hibernate Dao层自动事务</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>都说spring利用AOP实现自动事务处理机制非常好,但在只有hibernate这个框架情况下,我们开启session、管理事务就往往很麻烦。 public void save(Object obj){ Session session = this.getSession(); Transaction tran = session.beginTransaction(); try </div> </li> <li><a href="/article/1889.htm" title="maven3实战读书笔记" target="_blank">maven3实战读书笔记</a> <span class="text-muted">braveCS</span> <a class="tag" taget="_blank" href="/search/maven3/1.htm">maven3</a> <div>Maven简介 是什么? Is a software project management and comprehension tool.项目管理工具 是基于POM概念(工程对象模型) [设计重复、编码重复、文档重复、构建重复,maven最大化消除了构建的重复] [与XP:简单、交流与反馈;测试驱动开发、十分钟构建、持续集成、富有信息的工作区]     功能: </div> </li> <li><a href="/article/2016.htm" title="编程之美-子数组的最大乘积" target="_blank">编程之美-子数组的最大乘积</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a> <div> public class MaxProduct { /** * 编程之美 子数组的最大乘积 * 题目: 给定一个长度为N的整数数组,只允许使用乘法,不能用除法,计算任意N-1个数的组合中乘积中最大的一组,并写出算法的时间复杂度。 * 以下程序对应书上两种方法,求得“乘积中最大的一组”的乘积——都是有溢出的可能的。 * 但按题目的意思,是要求得这个子数组,而不</div> </li> <li><a href="/article/2143.htm" title="读书笔记-2" target="_blank">读书笔记-2</a> <span class="text-muted">chengxuyuancsdn</span> <a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/1.htm">读书笔记</a> <div>1、反射 2、oracle年-月-日 时-分-秒 3、oracle创建有参、无参函数 4、oracle行转列 5、Struts2拦截器 6、Filter过滤器(web.xml) 1、反射 (1)检查类的结构 在java.lang.reflect包里有3个类Field,Method,Constructor分别用于描述类的域、方法和构造器。 2、oracle年月日时分秒 s</div> </li> <li><a href="/article/2270.htm" title="[求学与房地产]慎重选择IT培训学校" target="_blank">[求学与房地产]慎重选择IT培训学校</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/it/1.htm">it</a> <div>      关于培训学校的教学和教师的问题,我们就不讨论了,我主要关心的是这个问题       培训学校的教学楼和宿舍的环境和稳定性问题       我们大家都知道,房子是一个比较昂贵的东西,特别是那种能够当教室的房子... &nb</div> </li> <li><a href="/article/2397.htm" title="RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系" target="_blank">RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/rman/1.htm">rman</a><a class="tag" taget="_blank" href="/search/filesperset/1.htm">filesperset</a><a class="tag" taget="_blank" href="/search/PARALLELISM/1.htm">PARALLELISM</a> <div>RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系 转 PARALLELISM --- 我们还可以通过parallelism参数来指定同时"自动"创建多少个通道: RMAN > configure device type disk parallelism 3 ; 表示启动三个通道,可以加快备份恢复的速度。 </div> </li> <li><a href="/article/2524.htm" title="简单排序:冒泡排序" target="_blank">简单排序:冒泡排序</a> <span class="text-muted">dieslrae</span> <a class="tag" taget="_blank" href="/search/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F/1.htm">冒泡排序</a> <div> public void bubbleSort(int[] array){ for(int i=1;i<array.length;i++){ for(int k=0;k<array.length-i;k++){ if(array[k] > array[k+1]){ </div> </li> <li><a href="/article/2651.htm" title="初二上学期难记单词三" target="_blank">初二上学期难记单词三</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/sciet/1.htm">sciet</a> <div>concert 音乐会 tonight 今晚 famous 有名的;著名的 song 歌曲 thousand 千 accident 事故;灾难 careless 粗心的,大意的 break 折断;断裂;破碎 heart 心(脏) happen  偶尔发生,碰巧 tourist 旅游者;观光者 science (自然)科学 marry 结婚 subject 题目;</div> </li> <li><a href="/article/2778.htm" title="I.安装Memcahce 1. 安装依赖包libevent Memcache需要安装libevent,所以安装前可能需要执行 Shell代码 收藏代码" target="_blank">I.安装Memcahce 1. 安装依赖包libevent Memcache需要安装libevent,所以安装前可能需要执行 Shell代码 收藏代码</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz cd redis-stable make   前面3步应该没有问题,主要的问题是执行make的时候,出现了异常。 异常一: make[2]: cc: Command not found 异常原因:没有安装g</div> </li> <li><a href="/article/2905.htm" title="并发容器" target="_blank">并发容器</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91%E5%AE%B9%E5%99%A8/1.htm">并发容器</a> <div>   通过并发容器来改善同步容器的性能,同步容器将所有对容器状态的访问都串行化,来实现线程安全,这种方式严重降低并发性,当多个线程访问时,吞吐量严重降低。    并发容器ConcurrentHashMap       替代同步基于散列的Map,通过Lock控制。   &nb</div> </li> <li><a href="/article/3032.htm" title="Spring Security(12)——Remember-Me功能" target="_blank">Spring Security(12)——Remember-Me功能</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/Remember+Me/1.htm">Remember Me</a><a class="tag" taget="_blank" href="/search/%E8%AE%B0%E4%BD%8F%E6%88%91/1.htm">记住我</a> <div>Remember-Me功能   目录   1.1     概述 1.2     基于简单加密token的方法 1.3     基于持久化token的方法 1.4     Remember-Me相关接口和实现</div> </li> <li><a href="/article/3159.htm" title="位运算" target="_blank">位运算</a> <span class="text-muted">焦志广</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a> <div> 一、位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 例如:9&am</div> </li> <li><a href="/article/3286.htm" title="nodejs 数据库连接 mongodb mysql" target="_blank">nodejs 数据库连接 mongodb mysql</a> <span class="text-muted">liguangsong</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/node/1.htm">node</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5/1.htm">数据库连接</a> <div>1.mysql 连接    package.json中dependencies加入     "mysql":"~2.7.0"    执行 npm install      在config 下创建文件 database.js     </div> </li> <li><a href="/article/3413.htm" title="java动态编译" target="_blank">java动态编译</a> <span class="text-muted">olive6615</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/HotSpot/1.htm">HotSpot</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E7%BC%96%E8%AF%91/1.htm">动态编译</a> <div>    在HotSpot虚拟机中,有两个技术是至关重要的,即动态编译(Dynamic compilation)和Profiling。     HotSpot是如何动态编译Javad的bytecode呢?Java bytecode是以解释方式被load到虚拟机的。HotSpot里有一个运行监视器,即Profile Monitor,专门监视</div> </li> <li><a href="/article/3540.htm" title="Storm0.9.5的集群部署配置优化" target="_blank">Storm0.9.5的集群部署配置优化</a> <span class="text-muted">roadrunners</span> <a class="tag" taget="_blank" href="/search/%E4%BC%98%E5%8C%96/1.htm">优化</a><a class="tag" taget="_blank" href="/search/storm.yaml/1.htm">storm.yaml</a> <div>nimbus结点配置(storm.yaml)信息: # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional inf</div> </li> <li><a href="/article/3667.htm" title="101个MySQL 的调节和优化的提示" target="_blank">101个MySQL 的调节和优化的提示</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div> 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多。   2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读取的,它的速度很慢。   3. 使用电池供电的RAM(注:RAM即随机存储器)。   4. 使用高级的RAID(注:Redundant Arrays of Inexpensive Disks,即磁盘阵列</div> </li> <li><a href="/article/3794.htm" title="zoj 3829 Known Notation(贪心)" target="_blank">zoj 3829 Known Notation(贪心)</a> <span class="text-muted">阿尔萨斯</span> <a class="tag" taget="_blank" href="/search/ZOJ/1.htm">ZOJ</a> <div> 题目链接:zoj 3829 Known Notation 题目大意:给定一个不完整的后缀表达式,要求有2种不同操作,用尽量少的操作使得表达式完整。 解题思路:贪心,数字的个数要要保证比∗的个数多1,不够的话优先补在开头是最优的。然后遍历一遍字符串,碰到数字+1,碰到∗-1,保证数字的个数大于等1,如果不够减的话,可以和最后面的一个数字交换位置(用栈维护十分方便),因为添加和交换代价都是1</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>