五秒后自动跳转页面
Servlet的测试题题目:新建一个项目,创建两个Servlet,分别为ServletA和ServletB。当浏览器访问ServletA的时候,ServletA5秒之后跳转至ServletB。注意:浏览器上要显示五秒的倒计时过程。本题思路:1、当浏览器通过ServletA的地址进行访问ServletA时;2、ServletA接收到浏览器的请求之后,回复一个消息给浏览器,让浏览器改变地址,访问Ser
·
Servlet的测试题
题目:
新建一个项目,创建两个Servlet,分别为ServletA和ServletB。当浏览器访问ServletA的时候,ServletA5秒之后跳转至ServletB。
注意:浏览器上要显示五秒的倒计时过程。
本题思路:
1、当浏览器通过ServletA的地址进行访问ServletA时;
2、ServletA接收到浏览器的请求之后,回复一个消息给浏览器,让浏览器改变地址,访问ServletB;
3、浏览器收到ServletA的消息,并开始改变请求地址,访问ServletB。
当了解了本题思路后,接下来所要知道的是如何在浏览器上显示五秒的倒计时。
我们知道动态数据是可变的,那么我们完全可以创建一个动态数据用来表示时间,然后通过对动态数据进行修改来达到时间倒计时的效果。那么ServletA的具体代码如下:
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
//我们动态数据是可变的是,那么我们完全可以创建一个动态数据用来表示时间的变换
//首先创建一个ServletContext对象
ServletContext context = getServletContext();
//使用getAttribute方法来获取指定名称的属性
Object ob = context.getAttribute("time"); //这里的值一开始为null——因为还没有为其添加动态数据
//创建一个变量用来表示当前所剩余的时间
int number = 5;
if(ob == null) {
//如果ob为空的话,那么就为其添加上动态数据
context.setAttribute("time", number);
}else {
//将其转换成整数类型,否则将无法进行运算
number = Integer.parseInt(ob + "");
//进行时间的倒计时——即动态数据的修改
context.setAttribute("time", number != 0 ? number - 1 : 5);
//当时间为0时,开始跳转页面
if(number == 0) response.sendRedirect("ServletB");
}
//将当前剩余的时间输出
response.getWriter().write("还剩下" + number + "S");
//设置每隔一秒刷新一次——其实就是每秒的倒计时
response.setHeader("refresh", "1");
//以下所使用的是另一个对象,但不管怎么样,逻辑都是一样的
// HttpSession session = request.getSession();
// Object ob = session.getAttribute("time");
// //number表示为剩余时间的秒数
// int number = 5;
// if(ob == null) {
// session.setAttribute("time", number);
// }else {
// number = Integer.parseInt(ob + "");
// session.setAttribute("time", number != 0 ? number - 1 : 5);
// //当时间为0时,跳转页面
// if(number == 0) response.sendRedirect("ServletB");
// }
// response.getWriter().write("还剩下" + number + "S");
// response.addHeader("refresh", "1");
//response.getWriter().append("Served at: ").append(request.getContextPath());
}
之后,我们再创建一个跳转的ServletB(当然,这里的内容可以随意书写),具体代码如下:
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
String info = "<h1>欢迎来到君子的诞生的之地!</h1>"
+ "<br>孔子曰:“<span style='color:red;'>君子有九思:视思明,听思聪,色思温,貌思恭,言思忠,事思敬,疑思问,忿思难,见得思义。</span>”\r\n" +
"<br>释意编辑\r\n" +
"<br>孔子说:「君子有九种要用心思考的事:\r\n" +
"<br>看要看得明确,不可以有丝毫模糊。\r\n" +
"<br>耳闻声音而心能辨别其真伪,不能够含混。\r\n" +
"<br>脸色要温和,不可以显得严厉难看。\r\n" +
"<br>容貌要谦虚恭敬有礼,不可以骄傲、轻忽他人。\r\n" +
"<br>言语要忠厚诚恳,没有虚假。\r\n" +
"<br>做事要认真负责,不可以懈怠懒惰。\r\n" +
"<br>有疑惑要想办法求教,不可以得过且过,混过日子。\r\n" +
"<br>生气的时候要想到后果灾难,不可以意气用事。\r\n" +
"<br>遇见可以取得的利益时,要想想是不是合乎义理?」";
PrintWriter pw = response.getWriter();
pw.print(info);
//response.getWriter().append("Served at: ").append(request.getContextPath());
}
最终显示的效果是:浏览器上会进行5秒倒计时,倒计时结束后,浏览器从ServletA跳转到ServletB上,显示ServletB上的信息。
这里就不允许结果了,你们可以自行运行!
更多推荐
已为社区贡献1条内容
所有评论(0)