JavaWeb
一、如何调整TomCat服务器的内存大小:
TomCat的内存大小:
安装版:
在安装目录找到Bin目录下的Tomcat7w.exe 进去之后选择Java选项卡,修改最大与最小内存;
绿色版:
在bin目录下找到catalina.bat,用编辑工具打开后,
在:gotHome后输入set "JAVA_OPTS=-Xms512m -Xmx1024m" ;
二、描述一下JavaWeb项目的部署过程:
① 打包上传:将项目打包成 war 文件,然后利用传到远程服务器(在Eclipse中直接将项目导出为.war文件)。
② 将 war 文件移动到 Tomcat 目录下的 webapps 下。
③ 重启 Tomcat,访问我们的项目。
三、关于Http协议的理解:
规定了网络中所传送数据的格式
网络中7层模型 4层模型
第一层:电脑里网卡
第二层:网络(internet)
第三层和第四层:相应的软件 QQ 浏览器
Tcp协议 三次握手
第一步骤:建立连接
第二步骤:相互传送数据 (由客户端传送给服务器端,服务器端传送给客户端)
第三步骤:关闭连接
HTTP协议的特征
基于连接
通过请求( 客户端把数据发送给访问器端)和响应(服务器端把数据发送给客户端)来相互发送数据
会话中的请求和响应对不能进行数据共享。(无状态)
一次通话(会话)中,可以进行多次对话(请求和响应对)。
四、关于Servlet的生命周期:
Servlet的生命周期
第一个问题,谁来创建Servlet的对象?
Tomat服务器来创建,根据当前项目的配置文件web.xml培训信息来创建。
第二个问题,Tomcat什么时候去创建Servelt的对象?
浏览器第一次访问该Servelt时,去创建。
Tomat服务器会通过调用Servlet的无参构造函数去创建对象,创建完对象之后,会马上调用init()方法对该对象进行初始化。
Servlet servlet01=new Servlet01();
servlet01.init();
第三个问题:浏览器访问Servlet时,会执行那个方法。
对于接口和GenericServlet来说,Tomat服务器会调用service方法。
第四个问题: Tomcat服务器如何来删除Servlet对象
第一步骤:先调用destroy()方法
第二步骤:删除Servlet对象=null。
Servlet对象创建:
浏览器第一次访问该Servelt时,去创建。
注意:在浏览器访问服务器的过程中,同一个Servelt可以访问多次,但是只有第一次访问时,才会创建Servelt对象,才会去调用init()方法。
Servlet对象销毁:
关闭服务器时
把项目从服务器里移除掉
在创建和销毁的事情:
Servlet 通过调用 init () 方法进行初始化。
Servlet 调用 service() 方法来处理客户端的请求。
Servlet 通过调用 destroy() 方法终止(结束)。
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
五、关于Servlet 的六个对象:
ServletConfig ServletContext Request Response Cookie Session
六、关于Servlet的四个域对象的区别:每个对象在项目开发中的经典应用:
ServletContext 整个项目,在整个项目的运行过程中,只存在一个ServletContext对象。
Request 客户端发送多少次请求,就会创建多少个对象。
Cookie 针对于一次会话 比较多
Session 针对于一次会话 比较少
注意:大前提条件,如果能够使用Session,尽量使用Session。 【历史浏览记录 购物车】
七、关于页面跳转的方式?和在项目中的经典应用:
转发与重发
转发路劲不会变。重发是重新请求服务器,所有网址会变
如果未登录访问管理页面就会直接转发到登录,登陆后在转发回来。路劲不会变。
八、前台提交数据到后台的两种方式?在项目开发中的经典应用:
post与get
Post一般用在大数据,和隐私方面的数据传输。
Get一般用来处理简单的数据,比如分页;
九、如果有一个项目中,有过滤器,监听器和Servlet,在web.xml的配置顺序:
ServletContext-> context-param ->listener(监听器)-> filter(过滤器) -> servlet
十、JSP中的九个对象:
- request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
2.response对象
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
3.session对象
session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.
4.out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象.
5.page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例.
6.application对象
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
7.exception对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
8.pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext。
9.config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)
内置对象名 类型
request HttpServletRequest
response HttpServletResponse
config ServletConfig
application ServletContext
session HttpSession
exception Throwable
page Object(this)
out JspWriter
pageContext PageContext
十一、JSP的四个域对象:
ServletContext context域
HttpServletRequet request域
HttpSession session域 --前三种在学习Servlet时就能接触到
PageContext page域 --jsp学习的
域对象的作用:保存数据,获取数据,共享数据.
十二、EL表达式的十一个对象:
pageContext 对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。)
pageScope 代表page域中用于保存属性的Map对象
requestScope 代表request域中用于保存属性的Map对象
sessionScope 代表session域中用于保存属性的Map对象
applicationScope 代表application域中用于保存属性的Map对象
param 表示一个保存了所有请求参数的Map对象
paramValues 表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]
header 表示一个保存了所有http请求头字段的Map对象
headerValues 同上,返回string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
cookie 表示一个保存了所有cookie的Map对象
initParam 表示一个保存了所有web应用初始化参数的map对象
十三、关于最常用的JSTL标签:
JSTL 核心标签库(C标签)标签共有13个,
功能上分为4类:
1.表达式控制标签:out、set、remove、catch
2.流程控制标签:if、choose、when、otherwise
3.循环标签:forEach、forTokens
4.URL操作标签:import、url、redirect
<c:forEach> 标签
<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>
本体内容 </c:forEach>
<c:forEach items="${domainList }" var="item">
<tr>
<td align="center" valign="middle">${item["domain"]==null?" ":item["domain"]}</td>
<td align="center" valign="middle"><fmt:formatDate value="${item[‘bind_date‘]}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
<td align="center" valign="middle">
<c:if test="${item[‘domain‘]!=null}">
<a href="javascript:;" id="${item[‘domain‘]}" class="del"> </a>
</c:if>
</td>
</tr>
</c:forEach>
<c:out> 标签
<c:out value="value" [escapeXml="{true|false}"]>
default value</c:out>
一般来说,<c:out>默认会将<、>、’、” 和 & 转换为 <、>、‘、" 和&。假若不想转换时,只需要设定<c:out>的escapeXml属性为fasle就可以了。
<c:if> 标签
<c:if test="${not empty item.publish_time}">
内容
</c:if>
<c:if test="${item[‘domain‘]!=null}">
内容
</c:if>
<c:if test="${!empty permissionMap}">
内容
</c:if>
<c:choose> <c:when> <c:otherwise> 标签
<c:set var="score">85</c:set>
<c:choose>
<c:when test="${score>=90}">
你的成绩为优秀!
</c:when>
<c:when test="${score>=70&&score<90}">
您的成绩为良好!
</c:when>
<c:when test="${score>60&&score<70}">
您的成绩为及格
</c:when>
<c:otherwise>
对不起,您没有通过考试!
</c:otherwise>
</c:choose>
十四、html中最常用的标签:
Div br hr table hX p span label from input button
十五、CSS中选择器的类型:
每一条css样式声明(定义)由两部分组成,形式如下:
选择器{
样式;
}
在{}之前的部分就是“选择器”,“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作
用于网页中的哪些元素。下面就来介绍各种选择器:
1.标签选择器
标签选择器其实就是html代码中的标签。如右侧代码编辑器中的<html>、<body>、<h1>、<p>、<img>。例如下面代码:
p{font-size:12px;
line-height:1.6em;}
上面的css样式代码的作用:为p标签设置12px字号,行间距设置1.6em的样式。
2.类选择器
语法:
.类选器名称{css样式代码;}
注意:
1、英文圆点开头
2、其中类选器名称可以任意起名(但不要起中文)
使用方法(将字体设为红色):
第一步:使用合适的标签把要修饰的内容标记起来,如下:
<span>胆小如鼠</span>
第二步:使用class="类选择器名称"为标签设置一个类,如下:
<span class="stress">胆小如鼠</span>
第三步:设置类选器css样式,如下:
.stress{color:red;}/*类前面要加入一个英文圆点*/
3.ID选择器
在很多方面,ID选择器都类似于类选择符,但也有一些重要的区别:
1、为标签设置id="ID名称",而不是class="类名称"。
2、ID选择符的前面是井号(#)号,而不是英文圆点(.)
类和ID选择器的区别:
相同点:可以应用于任何元素
不同点:(id是专一的,每个人都有属于自己的id)
1)、ID选择器只能在文档中使用一次。与类选择器不同,在一个HTML文档中,ID选择器只能使用一次
,而且仅一次。而类选择器可以使用多次。
2)、可以使用类选择器词列表方法为一个元素同时设置多个样式。我们可以为一个元素同时设多个样
式,但只可以用类选择器的方法实现,ID选择器是不可以的(不能使用 ID 词列表)。
4.子选择器
一个比较有用的选择器子选择器,即大于符号(>),用于选择指定标签元素的第一代子元素。
例如:.first>span{border:1px solid red;}
5.包含(后代)选择器
包含选择器,即加入空格,用于选择指定标签元素下的后辈元素。
例如:
.first span{color:red;}
请注意这个选择器与子选择器的区别,子选择器(child selector)仅是指它的直接后代,或者你可
以理解为作用于子元素的第一代后代。而后代选择器是作用于所有子后代元素。后代选择器通过空格
来进行选择,而子选择器是通过“>”进行选择。
总结:>作用于元素的第一代后代,空格作用于元素的所有后代
6.通用选择器
通用选择器是功能最强大的选择器,它使用一个(*)号指定,它的作用是匹配html中所有标签元素
,如下使用下面代码使用html中任意标签元素字体颜色全部设置为红色:
* {color:red;}
7.伪类选择器
为什么叫做伪类选择符,它允许给html不存在的标签(标签的某种状态)设置样式,比如说我们给
html中一个标签元素的鼠标滑过的状态来设置字体颜色:
a:hover{color:red;
font-size:20px;}
上面一行代码就是为 a 标签鼠标滑过的状态设置字体颜色变红,字体大小变为20px。这样就会使段文
字加入鼠标滑过字体颜色变为红色特效。
8.分组选择符
当你想为html中多个标签元素设置同一个样式时,可以使用分组选择符(,),如下代码为右侧代码
编辑器中的h1、span标签同时设置字体颜色为红色:
h1,span{color:red;}
它相当于下面两行代码:
h1{color:red;}
span{color:red;}
十六、CSS中最常用的属性:
1.span: 行内标签
2.font-family: 字体类型
font-family:" 楷体 ";
3.font-size: 字体大小
font-size:16px;
4.font-style: 字体风格
normal: 正常样式
italic: 斜体样式
oblique: 倾斜样式
5.font-weight: 字体粗细:
bold: 加粗
bolder: 更粗 注示:一般不常用
lighter: 更细 注示:一般不常用
6. 字体属性:
字体风格 --> 字体粗细 --> 字体大小 --> 字体类型
7.color: 字体颜色
8.text-align: 水平对齐方式
left: 左对齐
right: 右对齐
center: 居中对齐
9.text-indent: 首行缩进
**px;
示例: text-indent:2em; 首行缩进两个字符
10.line-height: 行高
11.text-decoration: 文体修饰:
none: 没有特效
underline: 下划线
overline: 上划线
line-throuth: 删除线
blink: 闪烁:一般不用
12.vertical-align: 竖直对齐方式
middle :居中对齐方式
13.a:link: 未单击时链接的样式
a:visited: 访问过以后链接的样式
a:hover: 鼠标悬停时的样式
a:active: 鼠标单击未放开的状态
a{
: 链接正常状态
}
a:hover{
: 鼠标悬停时的状态
14.cursor:pointer: 小手状态 ( 鼠标状态 )
15.backgroud:
div: 块状标签
with: 宽度
height: 高度
16. text-indent: 0pt; padding: 0pt; text-align: justify; line-height: 18pt; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;">17.background-image: 背景图像
(1)background-image:url()
(2)background-repeat: 背景图像重复方式
A.norepeat
B.repeat-x: 水平平铺
C.repeat-y: 竖直方向平铺 ( 不用 )
D.repeat: 水平竖直方向都平铺
(3)background-positon: 背景图像的位置
mpx npx:
mpx: 代表水平偏移位置,如果是正值往右偏,如果是负值往左偏
npx: 代表竖直偏移位置,如果是正值往下偏,如果是负值往上偏
18:background: 一起写
背景颜色 --> 背景图像 --> 背景图像位置 --> 图像重复方式
19.list-style-type:
none: 没有 ( 最常用的 )
disc: 实心圆
circle: 空心圆
squaer: 实心方块
decimal: 数字
20.list-style-image: 列表背景图像:一般不用 , 实际工作中用 background-image 来代替(容易对图像来进定位)
21.list-style-position: 列表项标记位置: ( 一般不用 )
inside :标记在右侧
outside: 标记在左侧
21.list-style: (一般不用)
list-style-type-->list-style-position-->list-style-image
可以不设置某个值。
十七、关于盒子模型理解:
先说说我们在网页:内容(content)、填充(padding)、边框(border)、边界(margin), CSS盒子模式都具备这些属性。
这些属性我们可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子也就是能装东西的一种箱子,也具有这些属性,所以叫它盒子模式。
想象一个盒子,它有:外边距(margin)、边框(border)、内边距(padding)、内容(content)四个属性;
让我们俯视这个盒子,它有上下左右四条边,所以每个属性除了内容(content),都包括四个部分:上下左右;这四部分可同时设置,也可分别设置;内边距可以理解为盒子里装的东西和边框的距离,而边框有厚薄和颜色之分,内容就是盒子中间装的东西,外边距就是边框外面自动留出的一段空白。
内容(CONTENT)就是盒子里装的东西;
而填充(PADDING)就是怕盒子里装的东西(贵重的)损坏而添加的泡沫或者其它抗震的辅料;
边框(BORDER)就是盒子本身了;至于边界(MARGIN)则说明盒子摆放的时候的不能全部堆在一起,要留一定空隙保持通风,同时也为了方便取出。在网页设计上,内容常指文字、图片等元素,但是也可以是小盒子(DIV嵌套),与现实生活中盒子不同的是,现实生活中的东西一般不能大于盒子,否则盒子会被撑坏的,而CSS盒子具有弹性,里面的东西大过盒子本身最多把它撑大,但它不会损坏的。
填充只有宽度属性,每个HTML标记都可看作一个盒子;
十八、==和===的区别:
==只要求值相等,===必须类型也一致;
十九、对于表单:如何通过JS实现数据的自动提交和手动提交:
通过事件判断返回真假来实现。
二十、项目开发中,JS是面向对象的语言还是基于对象的语法:你是如何让理解的:
是基于对象。
Javascript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation)、继承(inheritance )和多态(polymorphism )。只不过实现的方式不同,其基本概念是差不多的。其实除三大特征之外,还有一个常见的特征叫做抽象(abstract),这也就是我们在一些书上有时候会看到面向对象四大特征的原因了。
二十一、项目开发中,如何设计一个页面布局如下,列出具体步骤,每个步骤中设计到的属性:
设置绝对定位与相对定位,通过计算移动。浮动。或者通过第三方插件(Bootstrap)实现
二十二、JS中如何获取HTML中的标签对象:
dcoument.getxxxxxxxById();
二十三、在项目开发中最常用的JS事件:
单击,双击,浮动。获取焦点
二十四、在项目开发中:经常涉及到一个对象的Crud,每个操作中设计到的JS代码:
动态创建,修改移除 (DOM)
二十五、你如何理解DOM与BOM:
一个是基于文档。一个是基于浏览器窗口
二十六、在页面开发中,为什么要使用AJAX:
实现异步提交。是目前最长使用的前后台数据交互;
二十七、在页面开发中,手动编写AJAX开发的具体步骤:
//创建 - 非IE6 - 第一步
if (window.XMLHttpRequest) {
var xhr = new XMLHttpRequest();
} else { //IE6及其以下版本浏览器
var xhr = new ActiveXObject(‘Microsoft.XMLHTTP‘);
}
//接收 - 第三步
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
var status = xhr.status;
if (status >= 200 && status < 300) {
options.success && options.success(xhr.responseText, xhr.responseXML);
} else {
options.fail && options.fail(status);
}
}
}
//连接 和 发送 - 第二步
if (options.type == "GET") {
xhr.open("GET", options.url + "?" + params, true);
xhr.send(null);
} else if (options.type == "POST") {
xhr.open("POST", options.url, true);
//设置表单提交时的内容类型
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(params);
}
二十八、前台数据传送给后台,可以采用那些载体传送,例如key-value等。后台传输数据给前台,可以采用那些载体,这些载体之间的区别:
键值对。Json xml。 -------------------键值对,json。Xml
二十九、在项目开发中,为什么要采用JSON格式传送数据,你用过的最复杂结构的JSON数据:
三级联动。
三十、在项目开发中,你使用过那些JS的框架?了解angularjs框架吗?jQyery框架的主要作用是什么:
Jquery bootstrap angularjs vue 更少的代码实现更多的功能;
三十一、jQuery中的九大选择器:
l 基本
l 层级
l 简单
l 内容
l 可见性
l 属性
l 子元素
l 表单
l 表单对象属性
三十二、如何通过jQuery实现ajax:
ajax({
url: myUrl,
type: ‘get‘,
dataType: ‘json‘,
timeout: 1000,
success: function (data, status) {
console.log(data)
},
fail: function (err, status) {
console.log(err)
}
})
内部封装直接使用;