javaWEB面试题汇总.docx

上传人:b****2 文档编号:12891394 上传时间:2023-04-22 格式:DOCX 页数:18 大小:136.45KB
下载 相关 举报
javaWEB面试题汇总.docx_第1页
第1页 / 共18页
javaWEB面试题汇总.docx_第2页
第2页 / 共18页
javaWEB面试题汇总.docx_第3页
第3页 / 共18页
javaWEB面试题汇总.docx_第4页
第4页 / 共18页
javaWEB面试题汇总.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

javaWEB面试题汇总.docx

《javaWEB面试题汇总.docx》由会员分享,可在线阅读,更多相关《javaWEB面试题汇总.docx(18页珍藏版)》请在冰豆网上搜索。

javaWEB面试题汇总.docx

javaWEB面试题汇总

1tomcat如何配置?

首先进官网下载一个解压版(绿色版),解压后在环境配置JAVA_HOME中添加JDK的根目录,然后新建名称CLASS_PATH,添加.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

最后在PATH中加上;%JAVA_HOME%\bin;

2jsp中静态include和动态include的区别?

A:

动态包含用的元素是page,而且有两种形式,静态包含用的是file,只有一种形式

B:

生成的文件不同,动态包含的两个jsp文件各自生成各自的servlet和class文件,变量名可以重复。

静态包含是将两个jsp文件合二为一。

生成一个以包含页面命名的servlet和class文件,变量名不能重复。

C:

动态包含只有在执行它的时候才加载。

动态包含:

includepage=“a.jsp”/>

静态包含:

<%@include file=“”%>

3forward和redirect的区别?

A:

转发发生在一次请求中,重定向发生在两次请求中。

B:

转发不会改变浏览器地址,重定向会改变地址。

C:

转发只能访问内部资源,重定向可以访问外部资源。

D:

转发的性能要优于重定向。

4servlet的体系结构?

A:

Servlet(包含init()、service()、destroy()方法)

B:

GenericServlet

C:

HttpServlet(包含doGet()和doPost()方法)

D:

自定义

5如何实现一个自定义的servlet?

继承HttpServlet,并重写doget()和dopost方法,在web.xml中进行部署。

6servlet的生命周期过程?

Servlet对象默认第一次访问的时候创建,服务器关闭的时候销毁,当servlet对象创建的时候会调用init()方法,当这个对象销毁的时候会调用destory()方法。

每次去访问servlet对象的时候都会调用service方法

7jsp三大指令

Pageincludetaglib(在jsp页面中引入标签库)

8WEB四大作用域及应用范围

A:

page当前jsp页面范围

B:

request一次请求当中

C:

session一次会话中

D:

application整个web应用

9jsp的九大内置对象

request用户端请求,此请求会包含来自GET/POST请求的参数

response网页传回用户端的回应

pageContext网页的属性是在这里管理

session与请求有关的会话期

applicationservlet正在执行的内容

out用来传送回应的输出

configservlet的构架部件

pageJSP网页本身

exception针对错误网页,未捕捉的例外

10Jsp和servlet的共同点和区别、应用范围?

Jsp其实在本质上就是servlet,但是两者的创建方式不同:

Aservlet完全由java代码构成,是java的一个类。

擅长于流程控制和事务处理,通过servlet来生成动态网页很不直观。

jsp由jsp标签和html代码构成,可以方便的编写动态网页。

B在mvc模型中,jsp属于view视图,而servlet属于controller流程控制层

最主要的不同点在于servlet的应用逻辑是在java文件中,并且完全从表示层中的html里分离出来,而jsp是java和html组合成一个扩展名为.jsp的文件。

11MVC的各个部分都有那些技术来实现?

如何实现?

答:

MVC是Model-View-Controller的简写。

"Model"代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),"View"是应用的表示面(由JSP页面产生),"Controller"是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。

这些组件可以进行交互和重用。

11jsp中如何读取客户端的请求?

如何获取某个jsp页面的真实路径?

获取请求:

request.getparameter(“”)

获取路径:

<%=application.getRealPath(“”)%>

12cookie和session的区别和作用,及应用范围,session的工作原理?

作用:

可以利用cookie和session包含信息的任意性来筛选并维护这些信息,以判断在http传输中的状态。

最典型的应用就是在用户注册的时候判断用户是否已经登录网站,会给出用户提示信息,以便在下一次进入此网站或者登录的时候简化进入的手续,例如QQ。

还有一个作用就是在购物车中,用户在同一网站选择了不同的商品,这些信息都会存储在cookie或者session,在付款的时候会得到提示信息。

总之,cookie和session就是能够记录客户状态的技术。

只要cookie能够做到的session都能做到。

Cookie主要是用来存储在客户端上面的数据,减少服务器的储存压力,不够安全,客户端可以清除cookie。

Session主要是用来存储在服务器上面的数据,安全,但是占内存。

Session用于保存每个用户的专用信息.每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(SessionID).她的生存期是用户持续请求时间再加上一段时间(一般是30分钟左右).Session中的信息保存在Web服务器内容中,保存的数据量可大可小.当Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错的选择

Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性。

Session工作原理

(1)当有Session启动时,服务器生成一个唯一值,称为SessionID(好像是通过取进程ID的方式取得的)。

(2)然后,服务器开辟一块内存,对应于该SessionID。

(3)服务器再将该SessionID写入浏览器的cookie。

(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放改内存块。

(5)当浏览器连入IIS时并请求的ASP内用到Session时,IIS就读浏览器Cookie中的SessionID。

(6)然后,服务检查该SessionID所对应的内存是否有效。

(7)如果有效,就读出内存中的值。

(8)如果无效,就建立新的Session。

13Session域对象的生命周期?

Session对象在第一次执行request.getSession()的时候创建,在服务器关闭、session失效/失效(默认30分钟)或者手动销毁的时候销毁。

Session的作用范围在一次会话中。

14servlet的核心类有哪些,各有什么特点?

AservletContext

Servlet容器在加载应用时会创建servletContext域对象,代表着当前整个javaWeb应用(全局)

setAttribute(Stringname)存储参数

getAttribute(Stringname)获取参数

BservletConfig

可以获取WEB-INF配置文件init-param里面的值(非全局,之恩能够获取当前servlet里面的配置数据)

获取指定参数名字的值。

注意:

init-param只能放在servlet-class配置标签后面

Stringvalue=getServletConfig().getInitParameter("ppp"); 

CHttpServletResponse响应

getOut()

sendRedirect()

DHttpServletRequest封装了所有请求

15JDBC如何进行事务处理?

Coon.setAutoCommit(false)开启事务

Cmit提交事务

Coon.rollback回滚事务

16使用jdbc对数据库进行增删改查的步骤?

A:

注册驱动

Class.forName(“com.mysql.jdbc.Driver”);

B:

得到连接

Connectioncoon=DriverManager.Coonnection(“"jdbc:

mysql:

//localhost:

3306/day01","root","root"”);

C:

准备sql语句

Stringsql="insertintostaffvalues(?

?

?

?

)";

D:

获得preparestatement预编译对象

PreparedStatementps=conn.prepareStatement(sql);

E:

执行sql语句

ps.setInt(1,22);

ps.setString(2,"铁杨");

ps.setInt(3,23000);

ps.setInt(4,1);

intn=ps.executeUpdate();

if(n>0){

System.out.println("添加成功");

}else{

System.out.println("添加失败");

}

F:

关闭连接

ps.close();

conn.close();

Hibernate

17hibernate的核心配置hibernate.cfg.xml文件有什么作用?

A:

数据库连接信息。

必选属性有五个(数据库驱动,数据库url,数据库连接用户名,数据库连接密码,数据库方言——选最短的那个)

B:

hibernate的相关特性。

可选属性有三个(将sql语句打印到控制台;格式化sql语句;自动建表选择update)

C:

实体类映射文件,加载实体类映射到核心配置文件

18hibernate对象的三大状态

瞬时:

没有id,没有在session缓存中

持久:

有id,在session缓存中

游离:

有id,没有在session缓存中

持久化:

持久化状态的对象,会在事务提交时,自动同步到数据库中.我们使用hibernate的原则.就是将对象转换为持久化状态.

Spring

19什么是spring?

Spring是一个轻量级的java开源框架,它是为了解决企业开发的复杂性而创建的。

它的主要优势之一就是分层架构。

Spring的核心就是反转控制和面向切面。

简单来说,spring就是一个分层的(一站式)轻量级的开源框架。

反转控制(IOC):

就是将对象的创建权交给了spring。

作用就是实现了程序的解耦合。

依赖注入(DI):

需要有ioc的环境,创建这个类的过程中,spring将类的依赖的属性设置进去。

Spring负责管理其他框架所有的对象。

20spring容器及applicationContext.xml配置

Spring的容器是applicationContext。

在加载applicationContext.xml时创建。

applicationContext.xml:

标签:

用来描述管理容器对象的标签

属性:

起得别名,根据该名称获得对象

属性:

被管理对象的完整类名

属性:

默认用singleton,单例对象。

在spring容器中只存在一个实例。

大多数用这个,可以不写。

Prototype多例,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的。

因为struts2每次请求都会创建一个新的action。

导入其他spring配置文件:

21spring属性注入:

A:

set方法注入。

最重要的一种。

B:

构造方法注入。

C:

p名称空间注入

D:

spel注入

Mybatis

22JDBC的问题总结:

A:

数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源的浪费,影响数据库性能。

解决:

在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。

B:

将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于系统维护。

设想:

将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

解决:

将Sql语句配置在XXXXmapper.xml文件中与java代码分离。

C:

向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。

设想:

将sql语句及占位符号和参数全部配置在xml中。

解决:

Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。

D:

从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护。

设想:

将查询的结果集,自动映射成java对象。

解决:

Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。

 

23什么是mybatis?

MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

24mybatis架构

A:

mybatis配置SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。

mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。

此文件需要在SqlMapConfig.xml中加载。

B:

通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂

C:

由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。

D:

mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。

E:

MappedStatement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。

mapper.xml文件中一个sql对应一个MappedStatement对象,sql的id即是Mappedstatement的id。

F:

MappedStatement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过MappedStatement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。

G:

MappedStatement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过MappedStatement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

25:

#{}和${}的区别?

#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。

#{}可以接收简单类型值或pojo属性值。

如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

${}表示拼接sql串,通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。

26sqlMapConfig.xml配置文件内容?

A:

properties(属性)

B:

settings(全局配置参数)

C:

typeAliases(类型别名)

D:

typeHandlers(类型处理器)

E:

objectFactory(对象工厂)

F:

plugins(插件)

G:

environments(环境集合属性对象)

environment(环境子属性对象)

H:

transactionManager(事务管理)

I:

dataSource(数据源)

J:

mappers(映射器)

27.mybatis复习

课程复习:

mybatis是什么?

mybatis是一个持久层框架,mybatis是一个不完全的ORM框架。

sql语句需要程序员自己去编写,但是mybatis也有映射(输入参数映射、输出结果映射)。

mybatis入门门槛不高,学习成本低,让程序员把精力放在sql语句上,对sql语句优化非常方便,适用与需求变化较多项目,比如互联网项目。

mybatis框架执行过程:

1、配置mybatis的配置文件,SqlMapConfig.xml(名称不固定)

2、通过配置文件,加载mybatis运行环境,创建SqlSessionFactory会话工厂

SqlSessionFactory在实际使用时按单例方式。

3、通过SqlSessionFactory创建SqlSession

SqlSession是一个面向用户接口(提供操作数据库方法),实现对象是线程不安全的,建议sqlSession应用场合在方法体内。

4、调用sqlSession的方法去操作数据。

如果需要提交事务,需要执行SqlSession的commit()方法。

5、释放资源,关闭SqlSession

mybatis开发dao的方法:

1、原始dao的方法

需要程序员编写dao接口和实现类

需要在dao实现类中注入一个SqlSessionFactory工厂。

2、mapper代理开发方法(建议使用)

只需要程序员编写mapper接口(就是dao接口)

程序员在编写mapper.xml(映射文件)和mapper.java需要遵循一个开发规范:

1、mapper.xml中namespace就是mapper.java的类全路径。

2、mapper.xml中statement的id和mapper.java中方法名一致。

3、mapper.xml中statement的parameterType指定输入参数的类型和mapper.java的方法输入参数类型一致。

4、mapper.xml中statement的resultType指定输出结果的类型和mapper.java的方法返回值类型一致。

SqlMapConfig.xml配置文件:

可以配置properties属性、别名、mapper加载。

输入映射:

parameterType:

指定输入参数类型可以简单类型、pojo、hashmap。

对于综合查询,建议parameterType使用包装的pojo,有利于系统扩展。

输出映射:

resultType:

查询到的列名和resultType指定的pojo的属性名一致,才能映射成功。

reusltMap:

可以通过resultMap完成一些高级映射。

如果查询到的列名和映射的pojo的属性名不一致时,通过resultMap设置列名和属性名之间的对应关系(映射关系)。

可以完成映射。

高级映射:

将关联查询的列映射到一个pojo属性中。

(一对一)

将关联查询的列映射到一个List中。

(一对多)

动态sql:

(重点)

if判断(掌握)

where

foreach

sql片段(掌握)

课程安排:

对订单商品数据模型进行分析。

高级映射:

(了解)

实现一对一查询、一对多、多对多查询。

延迟加载

查询缓存

一级缓存

二级缓存(了解mybatis二级缓存使用场景)

mybatis和spirng整合(掌握)

逆向工程(会用)

Springmvc

28springmvc介绍

SpringWebMVC是一种基于Java的实现了WebMVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringWebMVC也是要简化我们日常Web开发的。

在web模型中,MVC是一种很流行的框架,通过把Model,View,Controller分离,把较为复杂的web应用分成逻辑清晰的几部分,是为了简化开发,减少出错。

还是为了组内开发人员之间的配合。

总之就是一种分层工作的办法。

springMVC,是spring的一个子框架,当然拥有spring的特性,如依赖注入。

29springmvc复习

springmvc框架:

DispatcherServlet前端控制器:

接收request,进行response

HandlerMapping处理器映射器:

根据url查找Handler。

(可以通过xml配置方式,注解方式)

HandlerAdapter处理器适配器:

根据特定规则去执行Handler,编写Handler时需要按照HandlerAdapter的要求去编写。

Handler处理器(后端控制器):

需要程序员去编写,常用注解开发方式。

Handler处理器执行后结果是ModelAndView,具体开发时Handler返回方法值类型包括:

ModelAndView、String(逻辑视图名)、void(通过在Handler形参中添加request和respons

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1