复习

JSP:

1、jsp和servlet的区别

jsp本质就是Servlet,jsp的工作原理是:JSP页面在执行的时候都会被服务器端的JSP引擎转换为Servelet(.java),然后又由JSP引擎调用Java编译器,将Servelet(.java)编译为Class文件(.class),并由Java虚拟机(JVM)解释执行。

JSP充当mvc思想中显示层内容,Servlet主要用于控制逻辑,Servlet更多的是类似于一个Controller,用来做控制。

2、什么是servlet

是一个java类,是一个java类,能运行在服务器上。能处理客户端发过来的请求(get post)生命周期:初始化( init() )--服务--销毁,结束服务时,调用destroy()

继承了Httpservlet类 一定要配置web.xml文件。

3、Sevlet运行过程:

它由web服务器调用,当web服务器接收到客户端的访问请求

1、web服务器检查是否已经装载并创建了该Servlet的实例对象

2、若没有,则装载并创建Servlet实例

3、调用实例对象的init()

4、创建一个用与封装HTTP请求消息的HttpServletRequest对象和

相应消息对象HttpServletResponse,再调用service(),将请求和响应传入

5、web应用程序被停止or重启前,Servlet引擎将卸载Servlet,在卸载前调用destroy()

浏览器发送一个HTTP请求,请求被Web容器分配给特定的Servlet处理

Servletz本质就是拥有一系列可以处理HTTP请求的方法的对象,常见方法doGet()/doPost()

web容器包含多个Servlet,特定的HTTP请求由那个Servlet处理由web.xml决定

4、什么是cookie

cookie是存储在客户端浏览器上所在硬盘上的一个文本文件,该文本文件是以键值对形式存储,键和值均为字符串。(cookie应用:自动登录)----response.addCookie(cookie):将cookie值写入到文本文件中

5、什么是session

session 就是会话,session理解成是一个作用域,实现session有两种方式,一种依托于cookie形式,一种为url重写

依靠JsessionID来判断是否为同一个会话,session是存在服务器端。

当系统禁用cookie时,必须要用url重写。代码:/myServlet;jsessionid= ?name = '?'

6、session关闭几种方式

session是30分钟没人用了才会死,服务器会自动摧毁session

手动销毁:httpSession.invalidate();

session典型应用:(1)权限管理 (2)购物车(3)防盗链接

7、请求转发和重定向的区别

forward跳转是url地址栏不发生变化,能带request值进行跳转,只能跳转站内资源,一次请求;

redirect跳转时url地址栏会变化,不能带request值,可以跳转站外资源,二次请求;

8、get和post请求

url地址栏请求,标签,method属性为get时,response.sendredirect页面跳转时均为get请求;

method属性为post,request.forward 当有a页面跳servletA,servletA跳servletB请求时,以前续请求跳转为准,如前续为get则为get,为post则为post;

get形式数据量传输有限制,为255个字符;post无数据量大小限制;

get请求不可以传中文,启动email用get请求,文件上传使用post请求;

9、jsp隐式对象

request、response、out、session、application、config、pageContext、page、Exception

request HttpServletRequest 接口的实例

Response HttpServletResponse 接口的实例

out JspWriter类的实例,用于把结果输出至网页上

session HttpSession类的实例

application ServletContext类的实例,与应用上下文有关

pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问

config ServletConfig类的实例

page 类似于Java类中的this关键字

Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象

10、El隐式对象

requestScope、sessionScope、applicationScope、param、paramvalues(取超链接值或者表单提交数据时)

11、el表达式读取顺序

pageContext,request,session,application

12、EL表达式** ${empty name}

13、过滤器filter

能对servlet进行过滤,controller和jsp也可以进行过滤;

生命周期:初始化-服务-销毁;

在服务器加载时启动,对web.xml文件中filter中配置的文件进行过滤;

filter应用如权限管理,防盗连接等;

chain.dofilter含义:如果有下一个filter则执行下一个filter,如没有则执行原请求;

服务器关闭时,filter销毁;

超链接 forward

缺点:Aj ---------Bs------------Cs/cj 过滤器拦截不了 forward后跳转的资源;

14、监听器

能统计网站在线人数;创建 销毁 添加 移除 修改

应用 统计网站在线人数,

15、拦截器:

拦截器采用AOP前置通知的特点,

以forward形式跳转,拦截器可以,过滤器不行

过滤器可以对servlet进行过滤,拦截器不行

16、拦截器与过滤器区别:

拦截器:只有存在的资源才能拦截,能对控制器都能过滤

过滤器:能对jsp,控制器都能过滤

17、JSP工作原理

1 .浏览器客户端向将JSP引擎发出对JSP页面的请求

2 .JSP引擎将对应的JSP页面转化成Java Servlet源代码

3 .JSP引擎编译源代码生成.class文件

4 .JSP引擎加载运行对应的.class文件生成响应的结果页面

5 .JSP引擎吧响应的输出结果发送到浏览器端











SSM框架:

1、什么事AJAX:

数据的异步传输
分四步:创建var request = new XMLHttpRequest();
连接服务器 open(method,url,async),有三个参数1 get或者psot 2 地址 3 同步(false)或者异步(true)
发送请求 send(string),在使用GET方式请求时无需填写参数,在使用POST方式时参数代表着向服务器发送的数据
接收服务器相应数据

2、Spring框架:

spring实现了mvc思想(sping是一个实现了mvc思想的框架)
sping的特点:
IOC(控制反转)-将控制权转移给sping容器,即以前在控制器中(servlet、controller)需要实例化一个对象,在sping框架中不需要实例化对象,交由.xml文件实现;
DI(依赖注入)-service和dao层应用依赖注入(dao注入到service层,service注入到controller层);
AOP(面向切面编程)-更合理的一个层次划分
应用spring框架,结藕,主要是降低程序的耦合度。

3、springmvc框架:

springmvc是一个实现了mvc思想的框架,
主要负责mvc思想中控制器内容,采用无侵入式的设计方式来实现的;
springmvc是通过lisenner监听器(web.xml中)来启动的;
springmvc的优点是返回值丰富(string、modelandview、void),方法的参数列表可以进行重写;
无侵入式的java操作

4、什么是mvc;各个部分都有那些技术来实现?如何实现:

软件工程中的一种软件架构模式
模型Model – 程序员编写程序应有的功能、数据库专家进行数据管理和数据库设计
视图View – 界面设计人员进行图形界面设计
控制器Controller – 负责转发请求,对请求进行处理

Model:业务逻辑,通过JavaBean,EJB组件实现
View:表示层,JSP页面产生
Controller:控制层,一般是一个Servlet

5、Spring与SpringMVC

Spring与SpringMVC是一个框架,只不过使用侧重点不同
Spring与SpringMVC区别:MVC实现控制器内容;spring使用了ioc di aop

6、mybaties框架:

是实现了mvc思想的框架,是一个实现数据持久层的框架;
使用mapper.xml文件替代了dao中的实现类;
优点提供了动态sql的应用;
通过namespace名字+id名 与 方法名相同 就可以连接上;
提供了一套完善的ormappering映射机制(一对一、一对多、多对多)

7、#{}与${}区别:

采用预编译的传参方式,预编译好处防止sql注入

$进行传参,有隐含sql注入风险

8、SSM框架介绍:

SSM是实现mvc思想的框架组合,s的目的就是为了结藕,sm是控制层的框架,m实现的是数据持久层的框架;
spring 三大特点;springmvc 控制器;Mybatis 实现数据持久层











Oracle:

Select语句执行顺序:

from -- where -- group by -- having -- select -- order by

增:insert into dept (deptno,dname,loc) values (50,A,SY);

删:Delete from emp where job=”clerk”;

改:update emp set deptno = 20;

查:select distince(消除重复) deptno from emp;

外连接:

分为左、右、全外连接,以scott表为例,一个emp表,一个dept表,当查询员工没有部门,或部门没有员工的时候,进行等值连接时候需要用到外连接,
mysql中只有左、右连接,没有全外连接。

自连接:

自己连接自己,以emp表为例,查询某员工经理的信息需要用到自连接。(层次模型转换为关系模型的时候需要用到自连接)

序列:

(SEQUENCE)通常情况下配合主键使用,产生一组等间隔的数值(类型为数字),且不重复,多个表可以共用一个序列
CURRVAL 中存放序列的当前值
NEXTVAL 返回序列中下一个有效的值

视图:

是一个虚拟表,使用视图时可以对视图进行增删改查等功能,建议只使用视图的查询功能,不建议进行增删改工作。

约束:

主键约束(PRIMARY KEY)、唯一性约束(UNIQUE)、非空约束(NOT NULL)、外键约束(FOREIGN KEY)、检查约束(CHECK)

事务:

ACID (原子性、一致性、持久性、隔离性)事务为一件事可以有多个点组成,只有每个点都完成,会执行commit操作,如果有一个点未完成,即会执行rollback回滚操作。

索引:

一种为自动索引,一种为手动索引,自动索引:为当创建主键、唯一性约束时,系统会在当前列自动添加索引,优点是可以提高数据读取速度(查询效率);
手动索引:创建索引经常充当查询条件的内容会创建索引,查询的数据量很大,但结果很小的时候可以创建索引(如比例为2%,4%时)

分组函数:

最大值,最小值,平均数,总合,个数

varchar与varchar2区别:

varchar空格补齐 varchar2写啥就是啥,varchar是固定的,varchar2的动态的

having:

在ground by后面用;分组函数充当查询条件时必须用having。

group by:

按...分类。出现在select后面的字段 要么是是聚合函数中的,要么就是group by中的, 最好将主键带上,避免因为数据重复出错。

Oracle与MySQL的区别:

提交方式
oracle默认不自动提交,需要用户手动提交。
mysql默认是自动提交。
oracle比mysql更安全。

冒泡排序:

比较两个相邻的元素,将值大的元素交换至右侧,循环此操作,直到从左往右依次按顺序升序为止

单例模式:

单例类只能有一个实例,单例类必须自己创建自己的唯一实例,单例类必须给所有其他对象提供这一实例。懒汉式单例,饿汉式单例,双重检查等
应用于JDBC,mybatis中sqlsessionfactory
实例化对象,获取的为同一个对象,在事务操作时需要同一个对象,才能进行connection操作(加sessionfactory方法,关闭后可以继续实例化一个新的对象)
public static SqlSessionFactory sqlSessionFactory = null;
public static SqlSessionFactory getSqlSessionFactory() {
if(sqlSessionFactory==null){
String resource = "SqlMapConfig.xml";
try {
Reader reader = Resources.getResourceAsReader(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
return sqlSessionFactory;
}

你可能感兴趣的:(复习)