【第四小组】【姓名:郑梦飞】
说明:
上方【组】填入所在的组,上方【姓名】填入自己的真实姓名。
答题方式,基于Word文档基础上答题
编程题可利用工具编程完以后,复制到该文档内。
答完以后,导成PDF。以姓名.PDF命名。上传至老师指定邮箱。
一、 选择题(共10题,每题2分)
1、Tomcat默认端口号(B)
A) 80
B) 8080
C) 3306
D) 6379
2、 在Servlet中四大作用域不包含(B)
A) request。
B) response
C) session
D) application
3、在Servlet中,当获取到session对象后,下面哪行代码可以销毁session(C)
A) session.clear()
B) session.remove()
C) session.invalidate()
D) session.stop()
4. 在Servlet中,向请求域中设置参数名为name,值为张三的写法(C)
A) response.setAttribute(“name”,”张三”);
B) response.setAttribute(“张三”,”name”);
C) request.setAttribute(“name”,”张三”);
D) request.setAttribute(“张三”,”name”);
5、以下哪个表达式可以产生一个0~7之间(含0,7)的随机整数?(C )
A) Math.floor(Math.random()*6)
B)Math.floor(Math.random()* 7)
C) Math.floor(Math.random()*8))
D) Math.ceil(Math.random()*8)
6、如果需要在JSP页面中引入web根目录下的名为util文件夹中的checkLogin.jsp时,以下代码正确的是(A )
A) <% include file=”util/checkLogin.jsp”%>
B) <%= include file=”util/checkLogin.jsp”%>
C)<%! include file=”util/checkLogin.jsp”%>
D)< include file=”util/checkLogin.jsp”%>
7、使用response对象进行重定向时,使用的方法是(C)
A)getAttribute()
B)setContentType()
C) sendRedirect()
D)setAttribute()
8、以下关于session对象说法错误的是(C)。
A)session对象是用户首次访问服务器时由服务器自动为其创建的
B) 在JSP中可以通过pageContext对象获得session对象
C) 只有访问JSP、Servlet等程序时才会创建session对象
D) 只访问HTML、IMAGE等静态资源并不会创建session对象
9、获取本地所有Cookie的方法是(A)
A)request.getCookies()
B)request.getCookie()
C)response.getCookies()
D)response.getCookies()
10、 servlet中request.getParameter(String)得到的数据,其类型是(C)
A)Double
B)int
C) String
D)Integer
二、 填空题(共5题,每题2分)
1、在实际编程中,不需要编写service()方法,只需编写相应的___doGet()________和____doPost()________方法。
2、过滤器执行doFilter( )方法时,会自动获得___过滤器链_________对象,使用该对象的doFilter()方法可继续调用下一级过滤器。
3、JSP页面的字符编码方式默认是_____ISO8859-1_______________。
会话跟踪技术有 Cookie , Session
在servlet中,使用HttpServletRequest.setCharacterEncoding("utf-8")设置请求的字符集。
三、 判断题(共5题,每题2分)
1、不能用一个page指令指定多个属性的取值。(F)
2、JSP内置对象是指不用声明就可以在JSP页面的脚本部分使用的对象。(T)
3、session对象的存在期限是指浏览器未关闭之前及默认时间内。(T)
4、过滤器是特殊的Servlet。(T)
5、仅通过pageContext对象不能访问到本页面中所有的其他对象。(T)
四、简答题(共5题,每题4分)
1、 写出JSP的九大内置对象以及其对应的含义。
Requset: request对象是javax.servlet.httpServletRequest类型的对象。
Response:response代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。
Session:一个会话中设置的内容,只要与此项目相关的页面都可以访问。关了浏览器就不见了。
Out—JspWriter:向客户端去输出内容。
Page:当前Jsp页面本身,实际上是一个对象,是当前jsp页面转换成.java类的对象。
Application:当前应用。
PageContext:域对象。page对象代表JSP本身,只有在JSP页面内才是合法的
Config:配置,servlet初始化的时候用到的参数,config来获取。
Exception:异常,前提是当前jsp是一个错误页。
2、JSP的include标签和include指令的区别。
从效果上来书没区别。
Include指令是把两个页面合成一个jsp,再编译成.class。
Jsp:include标签是N个JSP页面单独编译.class之后,再进行合并。
3、cookie和session的区别。
Cookie保存在客户端,Session保存在服务端
Cookie如果不设置最大时效,生命周期和session相同,关闭浏览器cookie失效。Session关闭浏览器则失效。Session可以利用cookie和JSESSIONID来持久化存储session,根据JSESSIONID来找到之前创建的。Session,cookie(”JSESSIONID”,session.getId()),
把cookie保存在客户端。
4、JSP和servlet的区别
JSP就是servlet
JSP更加侧重于视图的展示,servlet更加注重逻辑的处理。
5、请求转发与重定向的异同
请求转发是服务器行为、重定向是客户端浏览器行为
请求转发是request对象调用方法、重定向是response对象调用方法
请求转发只有一次请求所以可以实现request域对象中的数据共享,而重定向是多次请求、多次响应
请求转发的效率要高于重定向
请求转发url地址栏不变,而重定向会发生变化
既然请求转发是服务器内部的行为,所以只能访问服务器内部资源!而重定向既然是浏览器行为,地址栏会变,所以可以访问服务器外部资源!
如果既想要实现路径跳转,又需要实现数据共享,使用请求转发!
如果只是纯粹的想要实现路径跳转,我们可以使用重定向!
五、编程题(共2题,每题20分)
1、利用cookie实现7天内自动登录案例。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script>location.href="index.do";
</script></body>
</html>
package com.jsoft.test;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;@WebServlet("/index.do")
public class IndexServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Cookie[] cookies = request.getCookies();if(cookies!=null&&cookies.length>0){for (Cookie cookie : cookies) {if(cookie.getName().equals("islogin")&&cookie.getValue().equals("1")){//如果进入此if,说明登陆过!response.sendRedirect("main.html");return;}}}response.sendRedirect("login.html");}
}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>主页</h1>
</body>
</html>
package com.jsoft.test;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;@WebServlet("/login.do")
public class LoginServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");if(username.equals("admin")&&password.equals("123456")){//登录成功,新建一个cookie并放入到cookieCookie cookie=new Cookie("islogin","1");cookie.setMaxAge(7*24*60*60);response.addCookie(cookie);//登陆成功,跳转到主页response.sendRedirect("main.html");}}
}
2、编写登录案例以及登录过滤器,包含登录以及安全退出功能。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>登陆成功!</h1></body>
</html>
package com.jsoft.test.filter;import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Objects;@WebFilter("/success.do")
public class HelloFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterchain) throws ServletException, IOException {HttpServletRequest request=(HttpServletRequest) servletRequest;HttpServletResponse response=(HttpServletResponse) servletResponse;HttpSession session=request.getSession();Object username=session.getAttribute("username");if(Objects.nonNull(username)){filterchain.doFilter(request,response);return;}response.sendRedirect("login.html");}
}