随着社会的发展,互联网的进步,信息验证的过程越来越复杂,验证码就是其中一部分
先写一个简单的登录界面
验证码
在界面代码内的script写方法
$(function(){
myf();
//给验证码添加点击事件
$("#yzm").click(function(){
myf();//刷新验证码
});
})
//随机验证码=刷新验证码
function myf(){
//下标:0-33
var arr = new Array(2,3,4,5,6,7,8,9,'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');//所有候选组成验证码的字符,当然也可以用中文的
var str = "";//用来拼接
for(var i=0;i<4;i++){
//随机数 无限逼近0-33 四舍五入
var a=Math.round(Math.random()*33);//下标
//console.info(arr[a]);//根据下标取元素
str+=arr[a];
}
//给span赋值
$("#yzm").html(str);//innerHTML
}
//验证登录
function yzLogin(){
//依次获取用户名、密码、用户输入的验证码、随机产生的验证码 不能为空
var name=$("#xx").val();
var pwd=$("#yy").val();
var yzm1=$("#zz").val();
var yzm2=$("#yzm").html();
if(name==""){
alert("用户名不能为空");
return false;
}
if(pwd==""){
alert("密码不能为空");
return false;
}
if(yzm1==""){
alert("验证码不能为空");
return false;
}
else{//当验证码不为空的情况下
//作业1:要求验证码不区分大小写
if(yzm1!=yzm2){//不一致的时候 提示
alert("验证码有误");
myf();//刷新验证码
$("#zz").val("");//清空文本框
return false;
}
}
return true;
}
在form处使用提交的方法的方法
<form action="dologin.jsp" method="post" οnsubmit="return yzLogin()">
</form>
登录
设置编码方式
request.setCharacterEncoding("utf-8");
接收到表单提交过来的值(用户名&密码)根据name自取value值
String name=request.getParameter("aa");
String pwd=request.getParameter("bb");
连接Oracle做判断(要导包)
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
String CNAME="oracle.jdbc.driver.OracleDriver";
加载驱动
Class.forName(CNAME);
创建连接
Connection con=DriverManager.getConnection(URL, "scott", "tiger");
定义sql语句
String sql="select * from tb_0325 where sname=? and sp=?";//查询语句
获得执行对象
PreparedStatement ps=con.prepareStatement(sql);
有占位符一定要给占位符赋值
ps.setString(1,name);
ps.setString(2,pwd);
开始执行
ResultSet rs=ps.executeQuery();
判断 遍历
if(rs.next()){
//说明登录成功 跳转到新闻发布系统的管理员界面
//转发
request.getRequestDispatcher("news/admin.jsp").forward(request, response);
}
else{
//说明登录失败
out.print("<script>alert('用户名或者密码有误');location.href='login.jsp';</script>");
}
关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
新闻添加
首先先写一个新闻的界面
然后开始另建一个jsp文件
开始写
设置编码方式
request.setCharacterEncoding("utf-8");
接收表单提交过来的值
String ntid=request.getParameter("ntid");
String ntitle=request.getParameter("ntitle");
String nauthor=request.getParameter("nauthor");
String nsummary=request.getParameter("nsummary");
String ncontent=request.getParameter("ncontent");
String naddtime=new Date().toLocaleString();//取系统当前时间
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
String CNAME="oracle.jdbc.driver.OracleDriver";
Class.forName(CNAME);
Connection con=DriverManager.getConnection(URL, "scott", "tiger");
String sql="select nvl(max(nid),0) from news280";
PreparedStatement ps=con.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
int nid = 0;//扩大作用域
if(rs.next()){
nid=rs.getInt(1)+1;//最大序号+1
}
实现增加=插入操作
sql="insert into news280(nid,tid,ntitle,nauthor,nsummary,ncontent,naddtime) values(?,?,?,?,?,?,?)";
执行sql语句
ps=con.prepareStatement(sql);
给占位符赋值
ps.setInt(1, nid);
ps.setInt(2, Integer.parseInt(ntid));
ps.setString(3, ntitle);
ps.setString(4, nauthor);
ps.setString(5, nsummary);
ps.setString(6, ncontent);
ps.setString(7, naddtime);
获得影响行数
int n=ps.executeUpdate();
关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
做判断
if(n>0){//说明发表成功
//新闻主界面
response.sendRedirect("/s4/news/admin.jsp");
}
out.print("<script>alert('发表失败');location.href='add.jsp';</script>");
}