




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java基础题java中多态的描述?面向对象编程有四个特征:抽象,封装,继承,多态。多态有四种体现形式:1.接口和接口的继承。2.类和类的继承。3.重载。4.重写。其中重载和重写为核心。重载:重载发生在同一个类中,在该类中如果存在多个同名方法,但是方法的参数类型和个数不一样,那么说明该方法被重载了。重写:重写发生在子类继承父类的关系中,父类中的方法被子类继承,方法名,返回值类型,参数完全一样,但是方法体不一样,那么说明父类中的该方法被子类重写了。Instanceofjava 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。用法:result = object instanceof class参数:result:布尔类型。object:必选项。任意对象表达式。class:必选项。任意已定义的对象类。说明:如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。List,set,collection,collections的区别1. List和Set都是接口,他们都继承于接口Collection,List是一个有序的可重复的集合,而Set的无序的不可重复的集合。Collection是集合的顶层接口,Collections是一个封装了众多关于集合操作的静态方法的工具类,因为构造方法是私有的,所以不能实例化。2.List接口实现类有ArrayList,LinkedList,Vector。ArrayList和Vector是基于数组实现的,所以查询的时候速度快,而在进行增加和删除的时候速度较慢LinkedList是基于链式存储结构,所以在进行查询的时候速度较慢但在进行增加和删除的时候速度较快。又因为Vector是线程安全的,所以他和ArrayList相比而言,查询效率要低。JavaWebservlet的生命周期?加载并实例化-初始化-提供服务-销毁转发与重定向的区别1)转发使用request,而重定向使用response2)转发url不会发生变化,重定向url会发生变化3)转发可以携带参数,重定向不可以携带参数4)转发是服务器端跳转,重定向是客户端跳转5)转发只能在本项目内跳转,重定向可以跨域跳转,且可以访问别的网页或者项目6)转发中的路径前面可以加上“/”,表示从项目的根目录下去寻找,而重定向时候的路径前面绝对不可以加上“/”,因为重定向的路径前面加上/表示在服务器的根目录下寻找,即在tomcat的根目录下寻找,就会丢失项目名称,发送404错误请写出用jdbc连接数据库的过程,以及伪代码1.加载驱动Class.forName(“oracle.jdbc.driver.OracleDriver”);2.创建连接Connection con = DriverManager.getConnection(“URI”,”name”,”pass”);3.取得语句对象Statement stmt = con.createStatement();4.发送sql命令stmt.executeUpdate(“sql语句”) ;5.关闭数据库stmt.close();con.close();传参数的方式有哪些?至少3种(1) url?参数名=参数值&参数名=参数值 传参(2) 提交form表单传递参数(3) Ajax发送请求传参数“参数名”:参数值,“参数名”:参数值(4) restful风格传参数 url/参数值 简述在form的action中的路径前面什么都不加,加上/,加上./和加上./的区别1、 什么都不加,当前目录下2、 加上/服务器的根目录,即tomcat的根目录,丢失项目名称(不可以使用)3、 ./当前目录,等于14、 ./上一级目录Session和cookie的区别?session是存储在服务器端,cookie是存储在客户端的,所以安全来讲session的安全性要比cookie高,然后我们获取session里的信息是通过存放在会话cookie里的sessionid获取的。又由于session是存放在服务器的内存中,所以session里的东西不断增加会造成服务器的负担,所以会把很重要的信息存储在session中,而把一些次要东西存储在客户端的cookie里,然后cookie确切的说分为两大类分为会话cookie和持久化cookie,会话cookie确切的说是存放在客户端浏览器的内存中,所以说他的生命周期和浏览器是一致的,浏览器关了会话cookie也就消失了,然而持久化cookie是存放在客户端硬盘中,而持久化cookie的生命周期就是我们在设置cookie时候设置的那个保存时间,然后我们考虑一问题当浏览器关闭时session会不会丢失,从上面叙述分析session的信息是通过sessionid获取的,而sessionid是存放在会话cookie当中的,当浏览器关闭的时候会话cookie消失所以我们的sessionid也就消失了,但是session的信息还存在服务器端,这时我们只是查不到所谓的session但它并不是不存在。那么,session在什么情况下丢失,就是在服务器关闭的时候,或者是sessio过期,再或者调用了invalidate()的或者是我们想要session中的某一条数据消失调用session.removeAttribute()方法,然后session在什么时候被创建呢,确切的说是通过调用session.getsession来创建,这就是session与cookie的区别StrutsStrtus2的运行原理1、tomcat 启动的时候会加载 web.xml 、核心控制器 FilterDispatcher 会加载并解析 struts.xml 2、客户端会发送一个请求到 action 、FilterDispatcher 会根据后缀名进行拦截3、FilterDispatcher根据 struts.xml 的配置文件信息 找到 某个action 对应的某个类里的指定方法 4、执行相关的业务逻辑最后返回 一个String5、 里配置 name的属性值与返回的String 进行匹配,跳转到指定的jsp 页面简述什么是MVCMVC中 M表示Model模型层 V代表View试图层 C 代表Controller控制器MVC即模型-视图-控制器.MVC是一种设计模式,它强制把应用程序的输入处理和输出分开.视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接受用户的输入,但是它并不进行任何实际的业务处理。模型是应用程序的主体部分。模型表示业务数据和业务逻辑。控制器接受用户的输入并调用模型和视图去完成用户的需求Struts1和Struts2的区别?(1)Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,struts1严重依赖于servletAPI,属于侵入性框架,struts2不严重依赖于servletAPI,属于非侵入型框架。(2)线程模型方面:Struts1的Action是单实例的,一个Action的实例处理所有的请求。Struts2的Action是一个请求对应一个实例(每次请求时都新new出一个对象),没有线程安全方面的问题(3)封装请求参数:Struts1中强制使用ActionForm对象封装请求的参数。Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。(4)struts1的前端总控制器(核心总控制器)为ActionServlet,struts2的前端总控制器(核心总控制器)为FilterDispather简述搭建Struts2框架的步骤1、 创建web Project2、 项目中导入必须的几个jar3、 在web.xml中配置核心控制器StrutsPrepareAndExecuteFilter4、 在src(classpath)下添加配置struts.xml文件5、 开发Action类,并配置到struts.xml内6、 测试流程5种以上result type类型dispatcher 、 chain、redirect、redirectAction、stream、freemarker、velocity、plainTextstruts2中默认属性如何配置?2种例如 后缀名配置为.do (框架后缀名默认为:struts.action.extension=action,)1、 在struts.xml标签内使用常量标签2、 在classpath下自定义perties文件配置属性struts.action.extension=dostruts2自定义拦截器开发流程?1、 开发一个拦截器类:实现Interceptor接口或继承AbstractInterceptor类,在intercept方法内实现拦截功能。2、 定义拦截器:在struts.xml配置文件的package标签内使用3、 在需要使用该拦截器的Action类的标签内引用自定义拦截器4、当Action内引用了自定义拦截器后,默认拦截器栈需要手动引用。Struts2获取request三种方法?(1)通过ServletActionContext类来获取HttpServletRequest request = ServletActionContext.getRequest();(2) 通过ActionContext实例来获取 Map request = (Map)ActionContext.getContext().get(request);该Map类型的request对应HttpServletRequest实例(3)通过ServletRequestAware接口通过IOC机制注入Request对象Action实现ServletRequestAware接口,实现接口中的方法public class XXXAction implements ServletRequestAware private HttpServletRequest request; /实现接口中的方法 public void setServletRequest(HttpServletRequest request) this.request = request; public String execute()/可以使用request实例struts2如何防止用户表单重复提交?1. 第一步:在表单中加入2. 第二步,使用token栏截器3. 定义xxxx.jsp 拦截重复提交的跳转结果页HibernateHibernate中级联的关键字以及可选的配置项?Cascade:all:代表在所有的情况下都执行级联操作none:在所有情况下都不执行级联操作(默认值)save-update:在保存和更新时执行级联操作delete:在删除时执行级联操作分页每页10条数据,显示第10页数据,则分别使用Hibernate分页以及mysql的分页完成?Hibernate:setFirstResult(90)setMaxResults(10)Mysql:Select * from 表 limit 90,10;事务的概述?在数据库中,所谓事务是指一组逻辑操作单元即一组sql语句。当这个单元中的一部分操作失败,整个事务回滚,只有全部正确才完成提交。事务的ACID属性1. 原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 2. 一致性(Consistency)事务必须使数据库从一个一致性状态变换到另外一个一致性状态。(数据不被破坏)3. 隔离性(Isolation)事务的隔离性是指一个事务的执行不能被其他事务干扰.4. 持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的.在JDBC中,事务默认是自动提交的,每次执行一个 SQL 语句时,如果执行成功,就会向数据库自动提交,而不能回滚为了让多个 SQL 语句作为一个事务执行:(1)执行语句前调用 Connection 对象的 setAutoCommit(false); 以取消自动提交事务(2)在所有的 SQL 语句都成功执行后,调用 commit(); 方法提交事务(3)在出现异常时,调用 rollback(); 方法回滚事务。简述Hibernate运行原理 首先通过configuration去加载hibernate.cfg.xml这个配置文件,根据配置文件的信息去创建sessionFactory,sessionFactory是线程安全的,是一个session工厂,用来创建session,session是线程不安全的,相当于jdbc的connection,最后通过session去进行数据库的各种操作,在进行操作的时候通过transaction进行事务的控制。hibernate持久化操作的步骤和伪代码简述Hibernate对象的三种状态以及对各种状态的描述?Transient(临时状态):在new之后,save之前,数据库没有对应的数据Persistent(持久化状态):在save之后,在session关闭之前,数据库有相对应的数据Detached(脱管状态/游离状态):在session关闭之后简述Jdbc和Hibernate中是如何操作事务的?在JDBC中,事务默认是自动提交的,每次执行一个 SQL 语句时,如果执行成功,就会向数据库自动提交,而不能回滚为了让多个 SQL 语句作为一个事务执行:(1)执行语句前调用 Connection 对象的 setAutoCommit(false); 以取消自动提交事务(2)在所有的 SQL 语句都成功执行后,调用 commit(); 方法提交事务(3)在出现异常时,调用 rollback(); 方法回滚事务。在hibernate中开启事务 session.beginTransaction();执行相关的操作,如果成功则session.getTransaction().commit();执行操作失败则 session.getTransaction.rollback();Hibernate的5大核心接口?ConfigurationSessionFactorySessionQueryTransactionHibernate的两大配置文件,以及描述各个配置文件所配置的内容1.*.hbm.xml:1.类和表的对应关系2.类里面的属性和表里面字段的对应信息3.映射关系(one-to-one,one-to-many,many-to-one,many-to-many)4.主键生成策略2. hibernate.cfg.xml: 1.Hibernate运行的底层信息:数据库连接信息、JDBC驱动、数据库Dialect(方言)等。 2.Hibernate映射文件(*.hbm.xml)每页显示5条数据,取出第三页数据,则使用Hibernate进行分页? setFirstResult(10) setMaxResults(5)ORM概述?(Object Relation Mapping)对象关系映射,其中的O指的是java对象,R指的关系型数据库,M指的是在java对象和关系型数据库之间建立起来的映射关系。关系型数据库:mysql oracle sqlserverORM这种思想下的具体技术实现包括Hibernate,Ibatis,JPAHibernate中有哪几种映射关系(并写出对应的英文)?一对一:一对多:多对一:多对多:Hibernate的五种检索策略(查询方式),并解释描述OID查询:通过get和load方法加载指定的OID对象HQL查询:通过Query接口使用HQL语言查询QBC查询:通过Criteria等接口和类进行查询SQL查询:通过原生sql语言进行查询对象导航查询:通过已经加载的对象,导航到其关联的对象hibernate的get和load的区别(最少写出四点)1、 通过主键去查询没值时候:get返回null,load抛异常2、 检索策略:get立即加载,load延迟加载3、 返回结果:get返回实体,load返回代理4、 检索机制:get查询去一级缓存,若是一级缓存没有直接去数据库查询,load去一级缓存查询,没有去二级缓存,二级没有再去数据库查询谈谈你对hibernate事务的理解1、 hibernate对jdbc实现了轻量级的封装,本身并不具备事务管理的能力2、 hibernate的事务其实是依赖与底层的jdbc或者jta,或者说hibernate将事务交给jdbc或者jta来托管3、 hibernate在与Spring集成之后将事务交给了Spring去管理简述hibernate中的query.list和query.iterate的查询机制的不同点List:查询一次,从数据库检索出所有符合条件的记录,包括全部字段Iterate:首先从数据库中检索出所有符合条件的记录,仅包含id字段如果缓存中包含全部数据,则不需要在查询数据库,直接引用(1+0规则)如果缓存中不包含任何数据,则需要再查询n次(1+n规则)(n指的是记录数)hibernate的query查询中只需要查询出实体中的某两个属性的值,且返回的是实体的list,请问使用什么查询方式,并简述操作步骤使用构造器查询方式步骤:1、 需要在实体类中创建需要查询的两个属性的构造器,并且创建一个无参构造器2、 书写hql语句 select new 实体(属性1,属性2) from 属性名Hibernate的主键生成方式,并简单描述?5种以上 1)assigned主键由外部程序负责生成,无需Hibernate参与。2) increment主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同实例可能生成同样的主键,从而造成主键重复异常。因此,如果同一数据库有多个实例访问,此方式必须避免使用。3) identity采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL中的主键生成机制。4) sequence采用数据库提供的sequence 机制生成主键。如Oralce 中的Sequence。5) native由Hibernate根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。6) uuid.hex由Hibernate基于128 位唯一值产生算法生成16 进制数值(编码后以长度32 的字符串表示)作为主键。7) foreign使用外部表的字段作为主键。Hibernate与JDBC的区别1、 hibernate和jdbc主要区别就是,hibernate先检索缓存中的映射对象( 即hibernate操作的是对象),而jdbc则是直接操作数据库.2、 Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架。Hibernate可以用在任何JDBC可以使用的场合3、 Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。4、如果正确的使用JDBC技术,它的执行效率一定比hibernate要好,因为hibernate是基于jdbc的技术.5、JDBC使用的是SQL语句,Hibernate使用的是HQL语句,但是HQL语句最终还会隐式转换成SQL语句执行。说一下JDBC与iBATIS与hibernate的区别?(1)Hibernate属于全自动, Ibatis属于半自动,Jdbc属于手动(2)从开发效率上讲hibernate较高,ibatis居中,jdbc较低(3)从执行效率上讲hibernate较低,ibatis居中,jdbc较高,因为jdbc是手工写sql语句,程序员对sql的控制能力更大,可以根据业务需要进行优化,而ibatis 虽然也可以对sql进行优化,但是他里面将resultset封装为实体的过程中采用了反射机制所以一定程度上影响了性能,而hibernate因为高度封装所以开发效率相对较高,但正因为这个原因,所以程序员在对sql语句的控制和优化方面相对比较弱,而且在将resultset封装成实体的过程中也采用了反射机制,所以在性能方面较低SpringAop概述?AOP是OOP(面向对象编程)的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程或者面向切面编程。AOP主要应用于日志记录,性能统计,安全控制,事务处理等方面。它的主要意图就要将日志记录,性能统计,安全控制等等代码从核心代码中清楚的划分出来.AOP代理可以通过jdk动态代理实现,也可以通过cglib实现,默认是通过jdk动态代理实现的。jdk动态代理需要接口的支持,如果没有接口只有类,则使用cglib来实现.IOC概述?IOC被称为控制反转或者DI依赖注入是基于工厂设计模式,用来创建Bean实例,并且完成相关的注入。所谓的控制反转就是将原来通过代码自己完成对象的创建(new)这种任务交给spring容器去完成。Spring概述?Spring就相当于一个粘合剂,有两个核心,分别是IOC/DI(控制反转/依赖注入),AOP(面向切面编程/面向方面编程),完全面向接口设计,主要用来进行bean实例的创建注入,以及进行事务的管理。动态代理概念?所谓动态代理,即通过代理类的代理,接口和实现类之间可以不直接发生联系,而可以在运行期(Runtime)实现动态关联.jdk动态代理和cglib动态代理的区别?AOP代理可以通过jdk动态代理实现,也可以通过cglib实现,默认是通过jdk动态代理实现的。jdk动态代理需要接口的支持,如果没有接口只有类,则使用cglib来实现。说说你对spring容器的理解?ApplicationContext是基于BeanFactory的,BeanFactory就相当人的心脏,ApplicationContext就相当于人的躯干,Spring容器也是整个人,所以通常来说Spring的容器就是ApplicationContext。BeanFactory是面向spring内部使用,ApplicationContext是面向使用spring框架的开发人员。SSH整合概述? 1.首先在web.xml中通过ContextLoaderListener来融入spring,并加载spring的相关配置文件2.同样配置sturts2的前端总控制器filterDispatcher来过滤相关的请求并且加载struts.xml3.action继承ActionSupport,然后通过引入struts-spring-plugin.jar包并且根据配置文件中service的id生成get,set方法来注入service层。4.dao层继承于HibernateDaoSupport,并且在dao的配置文件中注入sessionFactory.5.通过spring中的配置文件加载hibernate.cfg.xml文件从而融入hibernate.SSH整合步骤? 1.首先在web.xml中通过ContextLoaderListener来融入spring,并加载spring的相关配置文件2.同样配置sturts2的前端总控制器filterDispatcher来过滤相关的请求并且加载struts.xml3.action继承ActionSupport,然后通过引入struts-spring-plugin.jar包并且根据配置文件中service的id生成get,set方法来注入service层。4.dao层继承于HibernateDaoSupport,并且在dao
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浅谈教考分离视域下标准化试题库建设的重要性
- 2025年基层卫生岗位急救知识竞赛理论考试题及答案
- 2025年生活垃圾分类知识测试题及答案
- 短视频推广创新创业项目商业计划书
- 园林设施维护与更新服务创新创业项目商业计划书
- 治理、风险与合规软件创新创业项目商业计划书
- 智能旅游翻译助手创新创业项目商业计划书
- 动物源性食品健康饮食定制化服务创新创业项目商业计划书
- 2025年事业单位工勤技能-新疆-新疆政务服务办事员二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-新疆-新疆兽医防治员一级(高级技师)历年参考题库含答案解析(5套)
- GB/T 4937.20-2018半导体器件机械和气候试验方法第20部分:塑封表面安装器件耐潮湿和焊接热综合影响
- GB/T 3836.1-2021爆炸性环境第1部分:设备通用要求
- GB/T 25216-2010煤与瓦斯突出危险性区域预测方法
- 变压器运行维护手册
- GA/T 1161-2014法庭科学DNA检验鉴定文书内容及格式
- 英语剧本 小王子
- 云南专升本会计试题
- 民间信仰活动场所信息采集表
- 2023年版义务教育音乐课程标准(标准版)
- 神华包头煤化工分公司2013年夏季水平衡测试报告
- 有效咳嗽技术操作评分标准
评论
0/150
提交评论