小题:
1.Js对象和Jquery对象如何相互转换
js:Dom操作:
1)推荐:通过document对象的方法获取标签对象
document.getElementById(“id属性值”)---标签对象
ByTagName(“同名标签名称”)--节点列表
ByClassName(“同名的class属性”)--节点列表
ByName(“同名name属性值”)----节点列表
引入jq的js库
通过${js对象}---Jquery对象
Jquery对象----js对象
Jquery的基本选择器:
id
class
element
层级选择器:
后代选择器:selectorl selector2
子元素选择器:selector1》selector2
$("id属性值").get(索引值)---->js对象
使用js对象----获取标签文本中的文本内容:标签属性:innerHTML
Jquery:获取标签的文本内容
html():获取标签体内容
html(“xxx”):设置标签体内容
text():获取纯文本内容
jq对象.val()
input value=“xxxx”
2.Servlet中是生命周期
init():初始化方法---在访问的时候创建对象并初始化
service(HTTPServiceRequest request,HTTPServiceResponse response):业务服务方法
destroy():销毁:服务器正常关闭
3.四个域对象分别是什么?以及范围
pagContext:当前jsp页面中有效
HTTPService request:在一次请求中有效
HTTPsession:在一次会话中有效
servletContext:当前项目下
4.final,finally,finalize的区别
final:状态修饰符
修饰变量,该变量为常量,只可赋值一次,不能被更改
修饰成员方法:该方法不可被重写
修饰类:该类不能被继承
finally:捕获异常的一种标准格式
try...catch...finally...
finally中的代码一定会执行,除非jvm虚拟机提前终止
finalize:
与GC垃圾回收器相关
调用gc--调用finalize方法。回收没有更多引用的对象
5.Js中的数据类型
number-----对应js内置对象Number
string------js内置对象String
object------js内置对象Object
boolean---js内置对象Boolean
undefined:未定义,没有意义
jquery的http()和text()
区别:
http():获取标签属性的值
text():获取的是存文本
属性操作:attr()/prop()方法
attr():可以为标签添加额外属性值
$(“#id属性值”).attr(“属性名称”,“值”);
prop():js对象操作,也能为标签添加额外属性,但是不会显示在网页源码内
一般情况下推荐使用前者attr();
WEB项目
数据库:
表:
用户表:
相关成员变量
商品表:product
商品分类:
加载首页---将商品分页信息展示
手机数码
办公..
......
购物车:--将Cart存储session中
订单表:order
项目模块:
用户模块
登录
注册
邮箱激活
....
商品模块:
加载首页:商品分页信息展示
商品分页查询
扩展功能:
使用cookie记住用户浏览过的商品id
商品加入到购物车:(session中)
封装一些方法
addCart()
deleteCart()
订单模块:
查询订单列表(分页查询)
具体筛选查询
....
结算:---第三方支付
原生Ajax的使用
1)创建浏览器的代理对象
去Ajax文档看源码:XMLHttpRequest
代码:
var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
2)建立连接
xmlhtt.popen(“提交方式”,“url地址”,是否是异步)
例:
xmlhttp.open("get","MyAjaxServlet?username=tom",true);
3)发送异步请求
代理对象.send()
如果是post请求:将请求的参数:需要send(参数)
get请求:直接url?参数名称=内容(写在浏览器的网址上)
例:
xmlhttp.send();
4)接收请求对象携带过来的响应数据
当前代理对象携带过来服务器的数据:响应的状态:
0.请求未初始化
1.服务器连接已建立
2.请求已接收
3.请求处理中
4.请求已完成,且响应已就绪
xmlhttp.onreadystatechange=function(){
服务器响应状态:200以及当前代理对象:状态4
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var str=xmlHttp.responseText;
alter("弹窗");
}
}
小题:
1.传统事务的四个特点
ACID
原子性
一致性
隔离性
持续性
2.事务的隔离级别
1)读未提交 read uncommitted
2)读已提交 read committed
3)可重复读 repeatable read
4)串行话 serializable
3.mysql的隐式内连接和显式内连接
隐式:select 字段列表 from 表名1 别名1,表名2 别名2 where 别名1.字段=别名2.字段;
显示:select 字段列表 from 表名1 别名2 inner join 表名2 别名1 on 别名1.字段=别名2.字段;
4.session和cookie的区别
session:存储在服务器端
存储的数据类型可是是任意的Java类型
存储的数据没有限制
相对cookie,比较安全
cookie:存储在浏览器端
存储的数据类型有限制:只能是String类型
存储的数据有限制:每个页面的cookie是有限的,20-30个
相对session,不适合存储隐私属性
5.获取反射的字节码文件对象的方式
1)任意Java类的class属性
2)类名.getClass
3)class.forName(“文件的路径”);
1.请求转发和重定向的区别
请求转发:有业务数据时使用。
1)地址栏没有变化
2)属于服务器行为,在整个启动过程中,request对象是一致的
3)只能访问本工程下的资源文件,包括WIB-INF下的文件
4)业务数据:使用请求转发,
重定向:仅仅只是页面跳转不携带数据。
1)地址栏有明显变化
2)属于浏览器行为,在整个过程中,request对象不一致
3)不仅访问本工程下的资源文件,以及外部工程下的资源文件
4)页面跳转,不携带数据
2.原生Jdbc的操作步骤
1)导入核心jar包
2)注册驱动
3)创建数据库连接对象
4)准备sql语句---参数化sql
5)创建预编译对象并对sql进行编译
6)给参数赋值
7)通用操作 executeUpdate()/executeQuery()---Request
8)关闭资源
3.Jquery的ajax发送异步请求的方式有几种
有三种:
$.ajax({
"url":value
"type":
"data":
"success":function(data){}
"error":fuction(data){}
"dataTypa":服务器响应过来的数据格式
})
get提交
$.get{}(url,data,function(data){},"服务器响应过来的格式"....json/text/xml/html)
post提交
$.post{}(url,data,function(data){},"服务器响应过来的格式"....json/text/xml/html)
4.有关Statement和PreparedStatement的区别
Statement:执行sql语句效率低
执行的是静态sql语句
存在sql凭借,就会出现SQL注入
PreparedStatement:执行sql前进行预编译(参数化sql)
赋值时可以赋值不同的参数:执行效率高于Statement对象
有效防止sql注入
5.Map集合的遍历方式有几种
keySet()---Set<K>获取所有键的集合
在通过get(K k)---获取键对应的值
entrySet()---Set<Map.entry<K V>>:获取所有键值对对象
getKey()
getValue()
加载首页,最新商品的展示
后台:indexServlet完成业务操作
ProductService
ProductDao
select * from product order by pdate limit 9;最新商品
//热门商品:is_hot=1;
通过商品id查询商品详细信息
点击最新商品/热门商品的某一个商品
xxx/product?findPreduestByIdpid=$(取出id值)
findProduct
//接收参数:商品id
调用service,完善商品信息
将商品Product存储在request域中
请求转发到/jsp/product_info.jsp
点击具体分类信息
head.jsp
更改超链接地址
findByPage?currentPage=1&cid=获取id值
productService
public String findByIdPage(请求对象,响应对象){
//接收参数
当前页码
设置每页显示条数
接收分类id
调用service
将PageBean对象存储到request域中
请求转发到product_list.jsp
}
小题:
1.jsp表达式的四个域对象
pageScope
responseScope
sessionScope
applicationScope:
2.jsp的三大指令
<%@page>
<%@include>:静态导入:不会对被导入的jsp文件进行编译和翻译
<jsp:include/>动态包含
<%@taglib>:
3.servlet的生命周期
servlet:是一个单例---在内存中始终只有一个对象
单例:饿汉式和懒汉式
饿汉式是不会出问题的单例模式
懒汉式因为在使用的时候才创建对象,需要进行判断该对象是否为空,所以存在问题,解决方法就是加入线程
init():初始化
service():服务方法
destory():销毁
4.线程的状态有几种
1)NEW
2)RUNABLE
3)BLOCKED
4)WATING
5)TIMED_WEATING
6)TERMINED
多线程实现方式:
三种:
继承自Thread接口
实现Runnable接口
线程池ExecutorService
5.TreeSet集合针对自定义对象进行排序?如何试下自然排序和选择器排序
TreeSet add()的put()---红黑树结构
TreeSet<自定义类型> 如果是空参构造:默认自然排序
前提:当前自定义类型必须实现Comparable:重写compareTo(T t)按照一定规则排序
如果是有参构造:选择排序
1.String,StringBuffer,数组的区别
String:是一个常量,一旦被赋值,其值不能被更改;作为形式参数,形参的改变,不会影响实际参数
StringBuffer:构造一个字符串缓冲区;是可变的字符序列,是一个线程安全的类;作为形式参数,形参的改变,会影响实际参数
数组和StringBuffer:两个都是容器
数组:存储的元素只能是同一类型元素
StringBuffer:缓冲区--存储任意类型元素---StringBuffer的toString()---String
2.集合和数组的区别
集合:能够存放任意类型的引用类型数据;长度可变;size属性;
数组:只能存放同一类型数据;长度固定;length属性;
3.Servlet的执行流程
1)浏览器发送请求到服务器
http://localhost:8080/web App/url-patten
2)通过服务器解析路径---“url-patten”---找不到就会出现404
找到当前servlet的名称
3)通过类名---找到这个类的全限定名称
4)通过反射方式创建该类实例
5)解析这个类中的方法
通过字节码文件对象---获取Method----invoke(方法名,实际参数);
4.自定义注解里面的属性如何解析
自定义接口,继承自extends Annotation
注解---将方法名---属性名
属性的返回值
string
枚举
注解类型
以上类型的数组
如果将自定义注解应用在某个类上,给注解中的属性赋值
1)通过当前类获取他的字节码文件对象Class clazz
2)Class类中getAnnotation(注解类型的字节码文件)---返回当前:接口的子实现类
通过调用方法---获取属性值
5.IO流有哪些,举例
流的方向:
输入流
输出流
按类型
字节流
字节输入流InpuStream
字节输出流OutputStream
字符流
字符输入流Reader
字符输出流Writer
程序的解耦
解析xml文件-----核心配置文件
好处:
1)解析块--dom4j+xpath 将某个标签内容快速解析
2)符合Java的一种设计原则:开闭原则,对现有代码的修改进行关闭,对扩展开放
提供application.xml
beans
bean
id=“service层/dao层接口名称:标识符”
class=“service层和dao接口的子实现类全限定名称”
提供一个工程类:
提供静态功能返回值Object
public static Object getXXX(String id){
1)获取解析器对象SAXReader
2)获取资源文件的输入流
3)read方法读取资源文件所在输入流
4)xpath表达式---快速定位bean标签
}
购物车
购物车 Cart
很多购物车项
Map<String:商品id,cartItem>
总计金额
添加购物车项
从购物车删除购物车项
清空购物车项
购物车项CarItem
product 商品
cont 数量
subTotsl 小计