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");//获取图片中的验证码