快捷搜索: 长连接 前端 源码 pan

Javaweb,期末复习题

题型

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

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

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

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

<filter-mapping>
	<filter-name>test</filter-name>
	<url-pattern>/test</url-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>30</session-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.请求转发与重定向

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.异常处理的代码

捕获异常:

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}

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="+" <c:if test="${sessionScope.op == +}">selected</c:if>>+</option>
		<option value="-" <c:if test="${sessionScope.op == -}">selected</c:if>>-</option>
		<option value="*" <c:if test="${sessionScope.op == *}">selected</c:if>>*</option>
		<option value="/" <c:if test="${sessionScope.op == /}">selected</c: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>BFilter</filter-name>
	<filter-class>web.BFilter<filter-class>
</filter>
<filter-mapping>

	<filter-name>BFilter</filter-name>
	<filter-pattern>/AServlet</filter-pattern>
</filter-mapping>

<filter>
	<filter-name>AFilter</filter-name>
	<filter-class>web.AFilter<filter-class>
</filter>
<filter-mapping>
	<filter-name>AFilter</filter-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中。
经验分享 程序员 微信小程序 职场和发展