Bootstrap

面试汇总——JavaWeb

Java web

web编程基础

服务器
请问JAVA应用服务器都有那些?

从功能上看分为两种:web应用服务器和java EE服务器

  • web服务器
    • Tomcat、Jetty、Orion、Resin、 Bejy Tiger、Geronimo、Jonas、Jrun
  • java EE 服务器
  • TongWeb 、BES Application Server 、 Apusic Application Server 、 IBM Websphere 、Sun Application Server 、Oracle 的 Oracle9i/AS 、Sun Java System Application Server 、Bea Weblogic 、JBoss、开源GlassFish。
JAVA 调试
请问在什么情况下回使用assert?

作用:用于检查一个boolean表达式是否正确

如果一个程序要保证其正确性,就必须使此表达式的返回值为true,返回false,则此程序有误

应用场景:通过在开发和测试中开启,在软件发布后是关闭的

tomcat

限流的几种方法:计数器,滑动窗口、漏桶法、令牌桶

请问如何在链接里不输入项目名称的情况下启动项目?

配置虚拟路径

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VH3FLVfB-1620096675359)(Interview.assets/image-20210419134341650.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HfErHrAe-1620096675361)(Interview.assets/image-20210419134019181.png)]

此处的WEB-INF可以直接粘贴tomcat中的webapps/root/WEB-INF

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RqrBgcJN-1620096675362)(Interview.assets/image-20210419134045430.png)]

配置完以后重启tomcat即可访问到

JSP
请说明一下JSP中的静态包含和动态包含的有哪些区别?
  • 请求方式不同
   静态包含页面:<%@include file="static.jsp" %>
   动态包含页面 <jsp:include page="dynamic.jsp"/>
  • 编译过程不同

    • 静态包含:包含页面以及被(静态)包含的页面只能拥有一个head,body等,且遵循先包含再编译,即只会生成一个class文件
    • 动态包含:被(动态)包含的页面遵循先编译后包含,则会生成不同的.java文件

    对于JSP文件首先会通过WEB服务器生成index_jsp.java(servlet文件)再经过编译生成index.class文件

  • request

    • 静态包含:包含页面不能向被包含的页面传参,因为两个页面会合成一个页面进行编译,就没有了我们所谓再传参的页面,使用的是同一个request对象
    • 动态包含:包含页面向被包含的页面传参,因为被包含的页面是是执行到这个语句时才会加载的,且会生成不同的class文件,既然包含页面可以向被包含的页面传参,那么两个页面的参数个数是不一样的的,所以它们有各自的request对象,因此使用的是不同的request对象
  • 注意事项

    • 静态包含:因为是先包含再编译,因此页面的 <%@page contentType=“text/html;charset=utf-8”%> 应该保持一致,否则包含整合以后的页面会报错,尽量不用出现一样的语句否则会进行覆盖
请谈一谈JSP有哪些内置对象?以及这些对象的作用分别是什么?
  1. request:用户对服务器的请求,通过post/get请求并传递参数
  2. response:封装服务器对客户端的响应
  3. session:会话对象,从第一个请求开始,到页面的关闭结束,当刷新浏览器时,此对象不会发生变化,可以看作是一次全局的,不管哪个页面都可访问,多页面共享
  4. page:当前jsp页面自身,相当于this,即对应的servlet类的对象
  5. pageContext:当前页面的上下文,可以获取此页面的内容
  6. application:可以存放全局共享的变量,从服务器开启一直到服务器关闭结束,可以看作是多客户端共享的
  7. exception:当前页面发生异常时,会有此对象,<%@page isErrorPage=“true” %>,JSP中的exception对象才有效。
  8. config:web的配置对象,取得再web.xml中的初始化参数
  9. out:向客户端输出信息的流对象
请说明一下jsp有哪些动作? 这些动作的作用又分别是什么?
  1. jsp:include:动态包含页面
  2. jsp:useBean:创建一个Bean对象
  3. jsp:setproperty:给Bean对象中的属性赋值
  4. jsp:getProperty:获取Bean对象属性中的值
  5. jsp:forward:请求转发
  6. jsp:plugin:根据浏览器的类型为Java插件生成OBJECT或EMBED标记
请简要说明一下四种会话跟踪技术分别是什么?

为什么要使用会话跟踪技术?因为服务端和客户端是通过http传输的,http是“无状态”的,一次响应完之后会断开,需要再次请求,因此需要判断是否为同一用户

  1. 重写URL:其原理是将session的id信息重写到url中
  2. 表单隐藏域:会话会将id添加到表单中,用户不会看到,存在于源码中
  3. cookie:客户请求时可以将信息发送给服务器
    1. cookie存在于客户端,不是很安全,会被解析
    2. 每个cookie限制4kb,且数量为200之内
  4. session:每个用户都有各自的session
    1. session存在于服务端,当创建一个session时,其id会随着cookie传送到用户端,当每次用户请求的时候会将sessionId传送到服务端识别不同的用户
    2. 当访问量多的时候,使用session服务器的性能会下降
请简要说明一下JSP和Servlet有哪些相同点和不同点?另外他们之间的联系又是什么呢?
  • JSP

    • 本质还是Servlet
    • 可以实现html和Java相结合
    • JSP会被编译成Servlet,Servlet再负责用户的请求
  • Servlet

    • 由web容器加载和管理
    • 是Java应用程序
    • 用于生成动态web内容
    • 负责处理客户端请求

    其实Jsp本质上还是Servlet(index_jsp.java),只是相比较Servlet更加视图化,而Servlet更偏向逻辑控制,其实显示用户请求以及响应的业务本质还是有Servlet实现的

    index.jsp—>index_jsp.java—>index.class

EL
请说一下表达式语言(EL)的隐式对象以及该对象的作用
  1. 用于读取jsp内置对象的(pageScope、requestScope、sessionScope、applicationScope)分别对应page、request、session、application对象
    1. ${requestScope.username}获取request中的username
  2. 与输入有关的(param、paramValues),可以获得用户请求的参数
    1. ${param.name}
  3. 与cookie有关的
    1. ${cookie.username.value}获取cookie中username的值
  4. 读取请求头的数据headerheaderValues
    1. ${header[“User-Agent”]}
  5. 读取web.xml中的参数值initParam
  6. 用于获取与其他用户有关的页面或者要求pageContext
    1. ${pageContext.request.contextPath} 获取web application名称
目录结构
说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp放入何目录下,然后在浏览器上就可打入主机?</
Request
请详细说明一下Request对象的主要方法是什么?

getParameter():获取前端传来的参数

getAttribute(String name):返回name指定的属性值

serAttribute(String name,Object o):设置name指定的属性值

getCookies():获取cookie

getSession():获取session

getInputStream():获取输入流

JAVA对象
请说明一下JSP的内置对象以及该对象的使用方法。
  1. page
  2. request
    1. getParameter():获取前端传来的参数
    2. getAttribute(String name):返回name指定的属性值
    3. serAttribute(String name,Object o):设置name指定的属性值
    4. getCookies():获取cookie
    5. getSession():获取session
    6. getInputStream():获取输入流
    7. foward:请求转发
  3. response
    1. sendRedirect():重定向
    2. addCookies():添加cookie
  4. session
    1.
  5. application
  6. pageContext
    1.
  7. config
  8. exception
  9. out
xml文件
;