javaWeb基础复习题
1.描述hello.jsp的执行过程。
2.指令include和标签include的共同点和不同点。
3.请写出9个内置对象的生存周期和功能.
4.区分服务端跳转和客户端跳转。
5.response内置对象的作用
6.如何控制浏览器自动发请求
7.Session和Cookie的关系。
8.如何保证访问某一个页面的用户是登录成功的用户。
9.表单和超链接发请求的共同点和不同点。
10.如何得到工作目录的真实路径 ,说明这种方法得到工作目录的真实路径过程
11.使用config对象的获取初始化参数的前提是什么?
12.默认首页如何设置 ?
javaWeb基础复习题
1.描述hello.jsp的执行过程。
Tomcat启动
浏览器发请求,http协议(地址栏和超链接为GET请求,表单、用户名密码为post请求)
找到127.0.0.1:8080/stuweb的web项目
找到hello.jsp
在work下自动转换成hello_jsp.java
在work下自动编译为hello_jsp.class
虚拟机执行java代码
将代码返回给服务器,嵌入到静态代码中
将静态代码发送到浏览器中解析
2.指令include和标签include的共同点和不同点。
静态include(指令)<%@include file="url"%>
动态include(标签)<jsp:include page="url"/>
共同点:
把一个页面(被包含页面)包含到另一个页面
不同点:
①语法不同:
语法范畴不同(标签属于java,指令属于jsp)
写法不同
②执行机制(执行过程)不同(最重要):
标签(动态先执行再包含,静态页面先包含不执行)
指令先包含再执行
③识别:
指令include不能识别被包含的类型
标签include可以
④传参(当前页面向被包含页面传参):
指令包含不能传参
标签被包含页面是动态,可以传参;静态不能传参
⑤各自的缺点:
指令包含不能有HTML,head,body,不能有相同的参数定义
标签包含不能有HTML,head,body,静态页面不能有动态代码
3.请写出9个内置对象的生存周期和功能.
request:
请求出现就被创建,请求结束(response将结果放在http协议上)被销毁
// 周期与response相同
作用:
①接收并传递用户请求的参数
②接收并传递服务端后台组件设定的数据--属性
请求范围
response:
请求出现就被创建,请求结束(response将结果放在http协议上)被销毁
// 周期与request相同
作用:
①将结果数据发送到浏览器显示
// 将结果数据放到http协议上
②设定http协议头,控制浏览器自动发送请求
③发送cookie
cookie: 由浏览器保存的用户重要数据(不安全)
// 由于放在数据库内保存信息需要巨大开销,cookie是为了省钱产生的不安全产物
在用一时刻的一个用户只能发一个请求,但同一时刻多个用户就会产生多个请求
即 多个response
请求范围
page:
访问JSP页面时创建,离开页面就销毁
作用:
存放临时数据(相当于空杯子),通过page进行数据交互
但是不能进行数据传递
页面范围
session:
第一次发请求访问服务器的动态组件时创建,关闭浏览器/下线时销毁(900s后)
// 创建时同时创建sessionID
(通过浏览器确保账户安全,属于用户范围)
怎么保证操作用户就是登录时的用户?
要从session中取得登陆成功时的验证信息,有验证信息即为合法用户
作用:存放并传递验证信息(用于验证用户是否登录)
一个用户只能有一个session,但是一个session对应多个请求
用户范围
application:
生存周期最长,服务器启动创建,服务器关闭销毁
作用:
放公共信息(注意信息不安全)
三个框架的集成信息
服务范围
config:
生存周期最长,服务器启动创建,服务器关闭销毁
作用:
放置web.xml的配置信息(的初始化参数)
服务范围
pageContext和page是一回事
out要少用(安全性差)
exception一般用不到
4.区分服务端跳转和客户端跳转。
服务端跳转和客户端跳转的区别:
共同点:
都是动态跳转
从一个组件跳到另一个组件
不同点:
①语法不同,但都是java范畴代码
②实质不同,客户端由服务端设定信息由浏览器完成跳转
服务端由服务器完成跳转
③客户端跳转不能传参,服务端跳转可以传参
④客户端跳转可以重新传参,服务端跳转不能重新传参(因为不重新发请求)
⑤客户端执行完跳转代码,后边的还会执行
服务端执行完跳转代码,后边的代码不会执行
总结:
服务端跳转用在正常流程
客户端跳转用在异常流程
5.response内置对象的作用
response作用:
1、修改http协议头
2、服务端跳转
3、设定cookie
要response发挥作用必须在jsp页面中,请求结束自动的把结果数据和静态代码发给浏览器
6.如何控制浏览器自动发请求
response可以通过设定http协议头控制浏览器自动发请求
(浏览器被服务器控制)
定时刷新(例):
response.setHeader("refresh","1");
//一秒钟刷新一次 (即一秒钟发送一次请求)
//语句含义:通过response向http协议头设置刷新控制信息
//此时http协议头携带两种数据:①结果数据 ②控制信息
定时跳转(例):
response.setHeader("refresh","2,URL=responseDemo02.jsp");
//两秒钟后跳转到responseDemo02.jsp页面
定时刷新是定时跳转的特殊情况
7.Session和Cookie的关系。
Cookied实例:
Cookie c1 = new Cookie("name","zs"); //创建Cookie对象
c1.setMaxAge(60); //设定Cookie保存时间为60S
//如果不加这行语句Cookie会永久保存
response.addCookie(c1); //通过response对象将Cookie设置到客户端
Cookie[] c = request.getCookies(); //通过request对象取得客户端设置的Cookie
for(int i=0; i<c.length; i++){
Cookie temp = c[i];
<%=temp.getName()%>
<%=temp.getValue()%>
} //客户端的Cookie实际上是通过HTTP头信息发送到服务器上的
另一页面中,通过Cookie[]cRme = request.getCookies() ;取得cookie
session的销毁:
1、关闭浏览器后900s后自动销毁
2、在后台用"session.invalidate()"强行销毁
3、在web.xml通过设置session的conf进行超时销毁
4、用javascript加一个方法使浏览器关闭的同时销毁
cookie 和session 的区别:
cookie数据存放在客户的浏览器上,session数据放在服务器上。
cookie里包含了sessionID(系统cookie)
session和cookie都是传递信息的用处
session传递的是用户的验证信息,在服务器工作,安全但是降低效率
cookie传递的是用户信息,在客户端工作,不安全但是不影响服务器效率
session在组件间传播
cookie在浏览器和服务器间传递
两者都传递数据
Session 存放于服务端,在服务器各个组件中进行传递,传递验证信息。安全,效率低,会增加服务器负担
Cookie 存放于客户端,存放客户端重要数据,与服务器传递客户信息。不安全,不影响执行时间
8.如何保证访问某一个页面的用户是登录成功的用户。
session作用:
传递(验证)信息
访问到某些组件/页面时确保是本人操作
通过seesion.isNew判断是不是新用户(通过有没有系统cookie判断)
在控制页面中设置session:
session.setAttribute("flag","ok") ;
在登录成功后页面取得session并验证
String flag = (String)session.getAttribute("flag") ;
9.表单和超链接发请求的共同点和不同点。
表单的作用:
①自动生成http协议的请求
②封装请求的参数(利用post请求)
表单的优点:
①、使用简单、方便
②、自动封装请求参数
不同点:
- 从表单内接受的参数都是字符串类型
- 表单可以通过method属性决定是get提交还是post提交,html 只能用get提交
10.如何得到工作目录的真实路径 ,说明这种方法得到工作目录的真实路径过程
用户通过发送url-patten找到servlet-mapping中的servlet-name,然后通过servlet-name找到sevlet中的jsp-file,从而找到组件
11.使用config对象的获取初始化参数的前提是什么?
1、 jsp需要通过虚名访问(即组件放在WEB-INF)
2、 需要在web.xml中配置
3、 配置中需在jsp-file子标签下配置init-param
在web.xml里存放初始化参数
<init-param>
<param-name>uname</param-name>
<param-value>zs</param-value>
</init-param>
<init-param>
<param-name>upass</param-name>
<param-value>123</param-value>
</init-param>
从web.xml中取得初始化参数:
<%=config.getInitParameter("uname")>
<%=config.getInitParameter("upass")>
//如果web.xml没有配置,就是Null
12.默认首页如何设置 ?
在项目中加index.jsp
一写项目名,就会自动进入index.jsp(相当于自动作为首页)
//如果要用别的文件做首页,就需要配置了
//一旦配置过,即便项目中有index.jsp,也会用配置的首页
//如果配置的首页在根下全部不存在了,就不会有首页了
配置方法:
<welcome-file-list>
<welcome-file>首页</welcome-file>
//可以配置多个,按照顺序找
</welcome-file-list>