Html弹窗及jsp+servlet弹窗实现
一、效果截图及演示
图片已经挂了
二、一般网页的弹窗
在html中加入javascript的alert(“文本“)或onfirm(“文本“)方法弹窗,如<script>alert(“你好,欢迎光临“);</script>(这也就是进入本文弹窗效果)
下面详细说明javascript中不同弹窗方法用法
1、 alert(“文本“) 警示窗
主要是提示用户一些操作信息,当警告框出现后,用户需要点击确定按钮才能继续进行操作。
警示窗也是最常用的弹窗。
2、 confirm(“文本“) 确认框
主要用于让用去确认信息或选择某种操作。当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。
如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为false。对应的,我们可以根据返回值进行相应的操作。如下图中的“退出系统”是,当用户点击“确认”,则退出系统,当点击“取消”时,则停留在当前页。
确认框也是经常使用的弹窗。
3、 prompt(“文本“,”默认值“)提示框
提示框经常用于提示用户进入某页钱输入必要的值。当提示框出现后,默认显示默认值,当用户输入值或保持默认值,单击确认或取消后才能继续操作。
当用户有输入值或保持默认值,单击确认,则返回值为框内的值,如果单击取消, 则返回null
提示框不常用。
三、JSP+servlet弹窗的实现
1、问题的提出——servlet不支持直接执行javascript代码
在用jsp+servlet做系统时,我们的底层操作实现大多在servlet中实现,所以很多相关操作信息都是在servlet中产生。例如登录操作,一般是jsp提供界面并提交用户输入的表单到处理登录验证的servlet中,而登录验证成功,用户信息正误等信息都是在servlet中产生,servlet并不能直接在out.println()中执行javascript代码,所以直接弹窗是不可能的。
2、问题的原因——servlet和javascript展现层次不一样
Servlet是服务器端执行,而javascript是客户端脚本,所以不可能在servlet中实现javascript代码运行。
4、 解决办法——servlet通过session将消息传递到jsp
1)在servlet中将需要展现的消息保存到指定session中,如
[java]
session.setAttribute(“loginMsg”, ““);
[/java]
2)在jsp页面获取消息,如在login.jsp中获取登录相关信息
[java]
String loginMsg = (String)session.getAttribute(“loginMsg”);
[/java]
获取的session为对应的servlet中设置的session。为了不产生干扰,建议在不同的servlet中设置不同session名,来传递不同的消息。
3) 在需要弹窗的页面的最后面展现弹窗消息,如在login.jsp的最后面
[java]
if(loginMsg != null) {
out.println(loginMsg);
session.removeAttribute(“loginMsg”);
}
[/java]
关于为什么要在页面的最后面展现弹窗消息,请自己动手试试在不同位置展现的效果,最后的结论是,最后展现可以保持整个页面都加载的情况下弹窗,而如果是在其他位置,会导致弹窗的背景为空白(也就是页面没加载),效果自测吧!
四、JSP+servlet弹窗实现的实例代码
1、登录页面(login.jsp)
[html]
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%
String loginMsg = (String)session.getAttribute("loginMsg"); // 第二步:获取servlet中存入session的消息
%>
<%
if(loginMsg != null) { //第三步:在需要弹窗的页面的尾部展现消息
out.print(loginMsg);
session.removeAttribute("loginMsg");
}
%>
2、登录信息处理的servlet(login.java)
[java]
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding(“gb2312″);
request.setCharacterEncoding(“gb2312″);
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
String name = request.getParameter(“name”);
String pass = request.getParameter(“pass”);
String base = “http://localhost:8080/xxx/”;
if(name == null || “”.equals(name)) {
session.setAttribute(“loginMsg”, ““);
response.sendRedirect(base+”login.jsp”); //第一步:将需要显示的消息javascript代码保存到指定的session中
} else if(pass == null || “”.equals(pass)) {
session.setAttribute(“loginMsg”, ““);
response.sendRedirect(base+”login.jsp”);
}
//………………..其他操作
}
[/java]