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
限流的几种方法:计数器,滑动窗口、漏桶法、令牌桶
请问如何在链接里不输入项目名称的情况下启动项目?
配置虚拟路径
此处的WEB-INF可以直接粘贴tomcat中的webapps/root/WEB-INF
配置完以后重启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有哪些内置对象?以及这些对象的作用分别是什么?
- request:用户对服务器的请求,通过post/get请求并传递参数
- response:封装服务器对客户端的响应
- session:会话对象,从第一个请求开始,到页面的关闭结束,当刷新浏览器时,此对象不会发生变化,可以看作是一次全局的,不管哪个页面都可访问,多页面共享
- page:当前jsp页面自身,相当于this,即对应的servlet类的对象
- pageContext:当前页面的上下文,可以获取此页面的内容
- application:可以存放全局共享的变量,从服务器开启一直到服务器关闭结束,可以看作是多客户端共享的
- exception:当前页面发生异常时,会有此对象,<%@page isErrorPage=“true” %>,JSP中的exception对象才有效。
- config:web的配置对象,取得再web.xml中的初始化参数
- out:向客户端输出信息的流对象
请说明一下jsp有哪些动作? 这些动作的作用又分别是什么?
- jsp:include:动态包含页面
- jsp:useBean:创建一个Bean对象
- jsp:setproperty:给Bean对象中的属性赋值
- jsp:getProperty:获取Bean对象属性中的值
- jsp:forward:请求转发
- jsp:plugin:根据浏览器的类型为Java插件生成OBJECT或EMBED标记
请简要说明一下四种会话跟踪技术分别是什么?
为什么要使用会话跟踪技术?因为服务端和客户端是通过http传输的,http是“无状态”的,一次响应完之后会断开,需要再次请求,因此需要判断是否为同一用户
- 重写URL:其原理是将session的id信息重写到url中
- 表单隐藏域:会话会将id添加到表单中,用户不会看到,存在于源码中
- cookie:客户请求时可以将信息发送给服务器
- cookie存在于客户端,不是很安全,会被解析
- 每个cookie限制4kb,且数量为200之内
- session:每个用户都有各自的session
- session存在于服务端,当创建一个session时,其id会随着cookie传送到用户端,当每次用户请求的时候会将sessionId传送到服务端识别不同的用户
- 当访问量多的时候,使用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)的隐式对象以及该对象的作用
- 用于读取jsp内置对象的(pageScope、requestScope、sessionScope、applicationScope)分别对应page、request、session、application对象
- ${requestScope.username}获取request中的username
- 与输入有关的(param、paramValues),可以获得用户请求的参数
- ${param.name}
- 与cookie有关的
- ${cookie.username.value}获取cookie中username的值
- 读取请求头的数据header和headerValues
- ${header[“User-Agent”]}
- 读取web.xml中的参数值initParam
- 用于获取与其他用户有关的页面或者要求pageContext
- ${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的内置对象以及该对象的使用方法。
- page
- request
- getParameter():获取前端传来的参数
- getAttribute(String name):返回name指定的属性值
- serAttribute(String name,Object o):设置name指定的属性值
- getCookies():获取cookie
- getSession():获取session
- getInputStream():获取输入流
- foward:请求转发
- response
- sendRedirect():重定向
- addCookies():添加cookie
- session
1. - application
- pageContext
1. - config
- exception
- out