Javaweb,期末复习题

题型

单选 多选 判断 填空 简答 编程

查看说明

不定时更新,所以查看时,随机刷新网页以获取最新内容

1. Servlet和filter listener的两种配置方式

Servlet:
  • web.xml中配置,将访问路径和一个servlet绑定到一起
<servlet>
	<servlet-name>testservlet-name>
	<servlet-class>com.package.testservlet-class>
servlet>

<servlet-mapping>
	<servlet-name>testservlet-name>
	<url-pattern>/testurl-pattern>
servlet-mapping>
  • 使用注解
@WebServlet(name="test",urlPatterns="/test")
public class test extends HttpServlet{}
Filter:
  • web.xml中配置,将访问路径和一个Filter绑定到一起
<filter>
	<filter-name>testfilter-name>
	<filter-class>com.package.testfilter-class>
filter>

<filter-mapping>
	<filter-name>testfilter-name>
	<url-pattern>/testurl-pattern>
filter-mapping>
  • 使用注解
@WebFilter(asyncSupported = true,urlPatterns = {"/loginfilter","/succ.jsp","要过滤的页面"})

2.Session的使用,常用的方法,在web.xml中设置会话有效时间的方式

什么是Session

  在web开发中,服务器为每个用户浏览器创建一个会话(Session)对象,在保存数据时,服务器可以把用户数据写到用户浏览器独有的Session中。

使用
HttpSession session = request.getSesson();
常用的方法
SessionId :<%= session.getId() %>
IsNew:<%= session.isNew() %>
MaxInactiveInterval:<%= session.getMaxInactiveInterval() %>
CreateTime:<%= session.getCreationTime() %>
LastAccessTime:<%= session.getLastAccessedTime() %>
设置有效的时间
<session-config>
	<session-timeout>30session-timeout> 
<session-config>

3.JSP标签有那些,内置对象有哪些?JSP内置对象中作用域,各个作用域范围大小

JSP标签
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:include>
<jsp:forward>
<jsp:param>
<jsp:plugin>
<jsp:params>
<jsp:fallback>
<jsp:root>
<jsp:declaration>
<jsp:scriptlet>
<jsp:expression>
<jsp:text>
<jsp:output>
<jsp:attribute>
<jsp:body>
<jsp:element>
<jsp:invoke>
<jsp:doBody>
JSP内置对象

JSP有大内置对象:

out                     输出对象
request              请求对象
response           响应对象
session             会话对象
pageContext    页面上下文对象
application       应用程序对象
config                 配置对象
page                  页面对象
exception           错误处理对象

大作用域及其范围

page     一个页面
request    一个请求
session    一次会话,单个用户使用
Application    整个服务器,全部用户共享

4.Servlet的生命周期

1.加载和实例化:

2.初始化:Servlet容器调用init()初始化Servlet对象。

3.请求处理:Servlet容器创建ServletRequest对象和ServletResponse对象,Servlet调用servlet方法来处理客户端的请求,调用doGet(),doPost()方法接收客户端的请求,并且发回相应的响应。

4.服务终止:当web被终止,或Servlet容器终止运行,或Servlet容器重载新的实例,Servlet调用destroy方法释放占用的资源。

5.请求转发与重定向

重定向:客户端行为,从本质上讲等于两次请求,前一次请求的对象不会保存,地址栏的URL地址会改变。
Javaweb,期末复习题_第1张图片
请求转发:服务器的行为,是一次请求,转发后请求对象会保存,地址栏的不会改变。
Javaweb,期末复习题_第2张图片

6.会话跟踪技术有哪些,每种技术的介绍

URL重写:URL地址重写的原理是将该用户的Session的id信息重写到URL中,以便在服务器端进行识别不同的用户。URL重写能够在客户端停用cookies或者不支持cookies的时候仍然能够发挥作用。
隐藏表单域:将会话id添加到HTML表单元素中提交到服务器,此表单元素并不在客户端显示,兰浏览时看不到,源代码中有。
Cookie

7.JSP设置编码格式用什么指令实现

  • jsp页面编码:
pageEncoding<%@page pageEncoding="UTF-8"%>
  • web页面显示编码:
contentType:<%@page contentType="text/html;charset=UTF-8"%>

8.异常处理的代码

Javaweb,期末复习题_第3张图片
捕获异常:

try
{
   // 程序代码
}catch(ExceptionName e1)
{
   //Catch 块
}finally{
  // 程序代码无论是否发生异常,finally 代码块中的代码总会被执行。
  //在 finally 代码块中,可以运行清理类型等收尾善后性质的语句
}

抛出异常:

throws Exception

9.JSP的include指令元素和< jsp:include >动作元素有何异同点

  include指令称为文件加载指令,可以将其他的文件插入JSP网页,被插入的文件必须保证插入后形成的新文件JSP页面的语法规则。该指令标签作用是在该标签的位置处,静态插入一个文件,这种属于静态包含。
  而include动作元素的功能是动态包含一个文件,即将当前JSP页面内、被包含的文件各自独立编译为字节码文件。当执行到该动作标签处,才加载执行被包含文件的字节码。这种include动作元素属于动态包含。

10.EL表达式,EL表达式有哪些隐含对象

格式:

${expr}

Javaweb,期末复习题_第4张图片
EL表达式的隐含对象

隐含对象 描述
pageScope page作用域
requestScope request作用域
sessionScope session作用域
applicationScope application作用域
param Request对象的参数,字符串
header HTTP信息头,字符串
headerValues HTTP信息头,字符串集合
initParam 上下文初始化参数
cookie Cookie值
pageContext 当前页面的pageContext

11.过滤器的基本原理

  过滤器也称为“拦截器”,通过过滤器,可以在用户访问某个web资源之前,对访问的请求和相应进行拦截,从而实现一些特殊的功能。
  当用户的请求到达所请求的资源之前,可以借助过滤器来改变这些请求的内容,此过程也称为“预处理”。当执行结果要响应到用户之前,可经过过滤器修改相应输出的内容,此过程也称为“后处理”。
  在一个web应用中,可以部署多个过滤器,这些过滤器组成了一个过滤器链,过滤器链中的每个过滤器负责特定的任务,客户端的请求可以在这些过滤器之间进行传递,直到达目标资源。

12.编写一个servlet,实现统计网站被访问次数的功能

  1. 新建一个SowTimeServlet类继承HttpServlet,重写父类的doGet和doPost。
  2. 在doPost中调用doGet方法,在doGet中实现统计网站被访问此时的功能,用户每请求一次servlet,访问次数+1。
  3. 获取ServletContext,通过他的功能,记住上一次访问后的次数。
    代码实现:
public class ShowTimeServlet extends HttpServlet{
	protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
		ServletContext context = getServletContext();
		Integer times = (Integer) context.getAttribute("times");
		if(tims == null){
			times = new Integer(1);
		}else{
			times = new Integer(times.intValue() + 1);
		}
		//设置中文编码,否则会乱码
		resp.setContextType("text/html;charset = GB2312");
		//得到输出流对象
		PrintWeiter out = resp.getWriter();
		out.pringln("当前页面被访问了"+times+"次");
		//设置属性,将times保存到当前的上下文中
		context.setAttribute("temes",times);
	}
	protected void doPost(HttpServletRequest req,HttpServletResponse resp)throw ServletException,IOException{
		this.doGet(req,resp);
	}
}

13.请编写2个jsp文件,使用动作元素计算三角形的面积,并输出到页面上

A.jsp

<form action="B.jsp">
	<p style="color: red;font-weight: ">${msg }p>
	<input type="text" name="edge1" value="${sessionScope.e1 }">
	<input type="text" name="edge2" value="${sessionScope.e2 }">
	<input type="text" name="edge3" value="${sessionScope.e3 }"><br><br>
	<input type="submit" value="计算" >
form>

B.jsp

<%
	double e1 = Double.valueOf(request.getParameter("edge1"));
	double e2 = Double.valueOf(request.getParameter("edge2"));
	double e3 = Double.valueOf(request.getParameter("edge3"));
	double result =0.0;
	session.setAttribute("e1", e1);
	session.setAttribute("e2", e2);
	session.setAttribute("e3", e3);
	if((e1+e2)>e3 && (e1+e3)>e2 && (e2+e3)>e1){
	    double p=(e1+e2+e3)/2;
	    result=Math.sqrt(p*(p-e1)*(p-e2)*(p-e3));
	}
	else{
	    request.setAttribute("msg", "该三边无法构成三角形");
	    result = -1;
	}
%>
<!--导入A.jsp -->
<jsp:include page="A.jsp">
</jsp:include>
计算结果为:<%=result %>

 <a href="A.jsp">点击这里继续计算</a>

14.编写程序代码实现模拟用户注册功能

15.用两个JSP页面完成一个整数四则运算的功能。

A.jsp

<form action="B.jsp">
	<input type="text" name="num1" value="${sessionScope.num1 }">
	<select id="operator" name="operator">
		<option value="+" if test="${sessionScope.op == '+'}">selectedc:if>>+option>
		<option value="-" if test="${sessionScope.op == '-'}">selectedc:if>>-option>
		<option value="*" if test="${sessionScope.op == '*'}">selectedc:if>>*option>
		<option value="/" if test="${sessionScope.op == '/'}">selectedc:if>>/option>
	select>

	<input type="text" name="num2" value="${sessionScope.num2 }">
	<input type="submit" value="计算">
form>

B.jsp

<%
	double num1 = Double.valueOf(request.getParameter("num1"));
	double num2 = Double.valueOf(request.getParameter("num2"));
	String op = request.getParameter("operator");
	session.setAttribute("num1", num1);
	session.setAttribute("num2", num2);
	session.setAttribute("op", op);
	double result = 0.0;

	if(op.equals("+")){
		result = num1 + num2;
	}else if(op.equals("-")){
		result = num1 - num2;
	}else if(op.equals("*")){
		result = num1 * num2;
	}else{
		result = num1 / num2;
	}
%>
<jsp:include page="A.jsp"></jsp:include>
计算结果:<%=result %><br>
<a href="A.jsp">点击这里继续计算</a>

16.过滤器的执行顺序和配置顺序

过滤器的配置:

<filter>
	<filter-name>BFilterfilter-name>
	<filter-class>web.BFilter<filter-class>
filter>
<filter-mapping>

	<filter-name>BFilterfilter-name>
	<filter-pattern>/AServletfilter-pattern>
filter-mapping>

<filter>
	<filter-name>AFilterfilter-name>
	<filter-class>web.AFilter<filter-class>
filter>
<filter-mapping>
	<filter-name>AFilterfilter-name>
	<filter-pattern>/*filter-pattern>
filter-mapping>

过滤器的执行顺序和url-pattern标签匹配的精确程度无关,只和他们的filter-mapping标签在web.xml文件中的顺序有关,配置在上的先执行

17.Servlet完成登录功能

18.简述Session和Cookie的区别

  • Cookie和Session都是会话技术,Cookie运行在客户端,Session运行在服务器端。
  • Cookie有大小的限制,以及浏览器在存储cookie的个数也有限制,Session没有大小限制,和服务器的内存大小有关。
  • Cookie有安全隐患,通过拦截或者本地文件找到cookie可以进行攻击。
  • Session在服务器端保存一段时间后才会消失,如果Session过多会增加服务器的压力。
  • 所以重要的信息可以放在Session中,如果有重要的信息需要保留则可以放在Cookie中。

你可能感兴趣的:(Javaweb,期末复习题)