Advertisement

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.请求转发与重定向

重定向 :客户端行为,从本质上讲等于两次请求,前一次请求的对象不会保存,地址栏的URL地址会改变。
重定向
请求转发 :服务器的行为,是一次请求,转发后请求对象会保存,地址栏的不会改变。
请求转发

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

Exception
捕获异常:

复制代码
    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
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中。
    在这里插入图片描述

全部评论 (0)

还没有任何评论哟~