Java Web考试试卷--A卷评分标准
- 格式:docx
- 大小:23.84 KB
- 文档页数:4
评分标准
A卷
一、单选题(每小题2分共40分)
二、多选题(每小题2分共20分)
三、问答题(共4小题,共23分)
1.SERVLET API 中中 forward()与与 redirect() 的区别?(4分)
(4条都写出来4分,否则酌情给分)
1).重定向是浏览器发送请求并收到响应以后再次向一个新地址发请
求,转发是服务器收到请求之后为了完成响应转到一个新的地址。
2).重定向中有两次请求对象,不共享数据;转发只产生一次请求对
象且在组件间共享数据。
3).重定向后地址改变,而转发则不会。
4).重定向的新地址可以是任意地址;转发到的新地址必须是同一个应用内的某地址。
2.简述Servlet的生命周期及每个阶段使用的方法(5分)
(1)、实例化:Servlet容器创建Servlet实例,默认会调用Servlet的无参构造方
法;-------1分
(2)、初始化化:该容器调用init方法,初始化配置参数;---------1分
(3)、请求处理:每请求一次Servlet,容器调用一次service方法,根据请求方
式的不同将请求派发给doGet或doPost方法处理;--------2分
(4)、服务终止:销毁实例之前调用destory方法;---------1分
3.说明JSP的内置对象对应的接口/类、以及作用域(9分)
对象描述类/接口名作用域
out 输出对象JspWriter page ------1分
request 请求对象HttpServletRequest r equest -----1分
response 响应对象HttpServletResponse page -----1分
pageContext 页面上下文对象PageContext page -----1分
session 会话对象HttpSession session -----1分
application 应用程序对象ServletContext a pplication -----1分
config 配置对象ServletConfig page -----1分
exception 例外对象Throwable page -----1分
page 页面对象Object page -----1分
4.写出JSTL常用的标签有哪些?并举例(至少5个)(5分)
<c:set var="age"value="20"></c:set>
<c:out value="${age}"></c:out>
<c:redirect url="login.jsp"></c:redirect>
<c:if test="${age>18}">成年人</c:if>
<c:forEach var="stu"items="${list}">
${}
</c:forEach>
除了以上几个jstl标签,只要写出5个并举例即给分
四、编程题
1、下面是LoginServlet在web.xml中的配置,请按要求填空
(1)、<servlet> ------1分
(2)、</servlet> ------1分
(3)、<servlet-mapping> -------1分
(4)、<url-pattern> ------1分
(5)、</url-pattern> -------1分
(6)、</servlet-mapping> ------1分
2、编写一个Servlet过滤器
(1)、编写Servlet过滤器实现判断当前用户是否已经登陆,如果没有登陆跳
转到/login.jsp页面
publicclass LoginFilter implements Filter {//1、正确实现Filter接口-1分
@Override
2、正确重写doFilter()方法,形参正确–2分
publicvoid doFilter(ServletRequest request, ServletResponse response, FilterChain fchain) throws IOException, ServletException {
// 将ServletRequest转换成HttpServletRequest
HttpServletRequest hrequest = (HttpServletRequest) request;
// 将ServletResponse转换成HttpServletResponse
HttpServletResponse hresponse = (HttpServletResponse) response;
// 获取地址栏地址
String uri = hrequest.getRequestURI();
// 获取最后一个斜杠出现的位置
int position = stIndexOf("/");
// 字符串截取
String resource = uri.substring(position + 1);
// 判断如果是登陆页面或者是处理用户登陆的Servlet就放行
if("login.jsp".equals(resource) || "userservlet".equals(resource)) {
//3、正确使用FilterChain的 doFilter方法放行 -1分
fchain.doFilter(hrequest, hresponse);
} else {
// 获取保存在会话中的信息
//4、正确使用HttpServletRequest的 getSession()获取会话信息- 2分
Object objUser = hrequest.getSession().getAttribute("USERS");
// 如果objUser为null,说明用户没有登陆,跳转到登陆页面
if (objUser == null) {
//5、正确使用HttpServletResponse的 sendRedirect()页面重定向- 1分
hresponse.sendRedirect("login.jsp");
} else {
// 用户已经登录,放行
//6、正确使用FilterChain的 doFilter方法放行 -1分
fchain.doFilter(hrequest, hresponse);
}
}
}
}
(2)、正确在web.xml配置过滤器(3分)
//1、正确配置filter标签下filter-name和filter-class -- 1.5分
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>cn.filter.LoginFilter</filter-class>
</filter>
//2、正确配置filter-mapping标签下filter-name(注意:filter-name要和上面一致)和url-pattern -- 1.5分
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>。