1.jsp中的3种对话框:alert()、confirm()、prompt()
警告框alert()
alert是警告框,只有一个按钮“确定”无返回值,警告框经常用于确保用户可以得到某些信息。当警告框出现后,用户需要点击确定按钮才能继续进行操作。语法:alert(“文本”)。
//后台处理部分
out.print("<script language='javascript'>alert('登录成功!');window.location.href='student_list.jsp';</script>");//此处点击alert()弹出的对话框中的“确定”按钮可以实现页面的跳转
确认框confirm()
confirm是确认框,两个按钮,确定或者取消,返回true或false。确认框用于使用户可以验证或者接受某些信息。当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。语法:confirm(“文本”)
//后台处理部分
out.print("<script language='javascript'>confirm('点击确定后转到登录界面');window.location.href='login.jsp';</script>");//此处点击confirm()弹出的对话框中的“确定”按钮可以实现页面的跳转,点击“取消”按钮则回到原页面
out.print("<script language='javascript'>alert('密码输入不一致!请重新注册');window.location.href='register.jsp';</script>");//此处点击alert()弹出的对话框中的“确定”按钮可以实现页面的跳转
提示框prompt()
prompt是提示框,返回输入的消息,或者其默认值提示框经常用于提示用户在进入页面前输入某个值。当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。语法:prompt(“文本”,“默认值”)
2.访问页面时首先判断是否已经登录
即判断发送的session是否存在
<%
if(request.getSession().getAttribute("name")==null){
out.print("<script language='javascript'>alert('请先登录!');window.location.href='login.jsp';</script>");
}
%>
3.页面动态显示当前时间
<script language="javascript">
var currentDate = new Date(<%=new java.util.Date().getTime()%>);
function showTime() {
currentDate.setSeconds(currentDate.getSeconds() + 1);
document.getElementById("currentTime").innerHTML = currentDate.toLocaleString();
}
window.setInterval("showTime();", 1000);
</script>
4.在页面上显示登录的用户名
登录成功后服务器向页面发送一个session,将用户名保存在整个会话期间,在student_list.jsp中获取login_check.jsp发送的请求,利用<%=request.getSession().getAttribute().toString()%>
在页面显示当前登录的用户名。
5.连接数据库(MySQL-Front)
首先建立JDBC-ODBC桥接器,具体方法为JDBC使用java.lang包中的Class类,通过调用它的静态方法forName加载com.mysql.jdbc包中的Driver类建立JDBC-ODBC桥接器,然后使用java.sql包中的Connection类声明一个对象,再使用类DriverManager调用静态方法getConnection创建这个连接对象,getConnection的三个参数分别为”jdbc:odbc:数据源名字”,”loginName”,”password”。
//2、MySQL的URL地址
//jdbc:说明采用JDBC的方式来访问数据库
//mysql:说明连接的是MYSQL数据库
//127.0.0.1:数据库所在的服务器的网络地址
//3306:mysql默认的端口号
//users:数据库的名称
Statement stmt =null;
ResultSet rs = null;
Connection conn = null;
//数据库MySQL的地址
String dburl="jdbc:mysql://127.0.0.1:3306/users?useUnicode=true&characterEncoding=utf-8";
String dbusername="root"; //数据库用户名
String dbpassword="root";//数据库密码
//加载mysql驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据库
conn=DriverManager.getConnection(dburl,dbusername,dbpassword);
//创建Statement对象
stmt=conn.createStatement();
6.数据库增删查改
调用数据库语句request.getParameter(String SQL)
、prepareStatement()
、setString()
、executeUpdate()
实现增删改查功能。首先要向数据库发送SQL语句,具体实现方法为使用Statement声明一个SQL语句对象,然后让已创建的连接对象con调用方法createStatement()创建这个SQL语句对象。随后要调用数据库语句实现相应的功能,即SQL语句对象调用方法executeQuery(String SQL)。
增加:insert into 数据表(字段1,字段2,字段3) values(值1,值2,值3)
String sql=“insert into employees(id,username,age) values(22,2,2)”;
删除:delete from 数据表 where id=接收到的ID参数
String sql2=“delete from employees where id=22”;
修改:update 数据表 set 字段1=值1,字段2=值2 where id=接收到的ID参数
String sql3=“update employees set username=‘zhang’,age=‘2222’ where id=1”;
查询
String sql4=“select * from employees where id=1”;
7.生成验证码(刷新功能没实现)
生成验证码的代码,可根据实际情况修改
<%@ page contentType="image/jpeg" language="java" import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*" pageEncoding="utf-8"%>
<%!
Color getRandColor(int fc,int bc){
Random random = new Random();
if(fc > 255){
fc = 255;
}
if(bc < 255){
bc = 255;
}
int r = fc +random.nextInt(bc-fc);
int g = fc +random.nextInt(bc-fc);
int b = fc +random.nextInt(bc-fc);
return new Color(r,g,b);
}
%>
<%
//设置页面不缓存
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-catch");
response.setDateHeader("Expires",0);
//在内存中创建图象
int width = 140;
int height = 30;
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//创建图象
Graphics g = image.getGraphics();
//生成随机对象
Random random = new Random();
Random ran1=new Random();
Random ran2=new Random();
Random ran3=new Random();
Random ran4=new Random();
//设置背景色
g.setColor(getRandColor(200,250));
g.fillRect(0,0,width,height);
//设置字体
g.setFont(new Font("Tines Nev Roman",Font.BOLD,20));
//随机产生干扰线
g.setColor(getRandColor(160,200));
for(int i = 0; i < 255; i++){
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
}
//随机产生认证码,9位,这里可根据实际情况修改位数,同时注意修改验证码的图像属性
String Rand = "";
int num;
char vercode;
char[]upper_alpha={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
char[]lower_alpha={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char[]digit={'0','1','2','3','4','5','6','7','8','9'};
int i;
for(i=0;i<=8;i++){
num=ran1.nextInt(30);
if(num%3==0){
vercode=digit[ran2.nextInt(10)];
}
else if(num%3==1)
{
vercode=upper_alpha[ran3.nextInt(26)];
}
else
{
vercode=lower_alpha[ran4.nextInt(26)];
}
String rand = String.valueOf(vercode);
Rand+=rand;
//将认证码显示到图象中
g.setColor(new Color(20 + random.nextInt(110),20 + random.nextInt(110),20 + random.nextInt(110)));
g.drawString(rand,13*i+6,18);
}
session.setAttribute("code",Rand);//向登录页面发送了session,在登录界面加入一段代码接收这个session
//图像生效
g.dispose();
//输出图像到页面
ImageIO.write(image,"JPEG",response.getOutputStream());
out.clear();
out = pageContext.pushBody();
%>
接收验证码发送的session的代码,注意getAttribute()中的属性code要对应好
String code=(String)request.getSession().getAttribute("code");//获取图片中的验证码