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=
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;
}