java_web 快速入门之第四章 验证码&新闻增加

一:验证码的基本概念:

        验证码是一种区分用户是计算机还是人的公共全自动程序,验证码问题由计算机生成并评判,只有人类才能解答,可以防止恶意破解密码、刷票、论坛灌水等问题,分为Gif动画验证码、手机短信验证码、手机语音验证码和视频验证码。

       由于验证码是随机产生的,有很大几率会出现无法清楚识别的验证码图片,一般会有【看不清,换一张】的提示,直接点击当前的验证码图片可以完成验证码的更换,一般注册用户ID的地方以及各大论坛都要输入验证码,常见的验证码为四位数字或字母,6位数字的验证码也是很常见的。

  • 验证码的作用:

      在系统登录或者注册时,为防止有人恶意注册账号或者尝试暴力破解用户密码,常需要使用验证码来验证用户是否是人为操作。

  • 案例:演示带验证码的登录操作(login.jsp)

%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




用户登录







用 户
密 码
验证码 XXXX
版本信息 管理信息系统 2008 v2.0
  •  中转页面   

     中转页面是注册页面提交数据的中转站,常以do开头,加上需要进行数据库交互的项目名。   

  • 作用:

  1. 获取页面提交的数据
  2. 进行数据库交互
  3. 判断是否提交到指定的页面去 

案例:演示带验证码的登录中转页面操作(dologin.jsp)

​
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% 

	//1.将编码格式变为utf-8
	request.setCharacterEncoding("utf-8");

	//取表单提交的值
	String name=request.getParameter("uname");
	String pwd=request.getParameter("upwd");
	
	//到数据库做验证
	
	//准备工作(导包)
	
	//1.加载驱动
	Class.forName("oracle.jdbc.driver.OracleDriver");
	
	//2.获得连接
	String url="jdbc:oracle:thin:@localhost:1521:orcl";
	Connection con=DriverManager.getConnection(url, "scott", "123");
	
	//3.编写sql语句
	String sql="select * from tb_user where name=? and pwd=?";
	
	//4.获得执行对象
	PreparedStatement ps=con.prepareStatement(sql);
	
	//5.设置?的值
	ps.setString(1, name);
	ps.setString(2, pwd);
	
	//6.开始执行
	// 增删改都返回int
	// 查询返回结果集 resultSet
	ResultSet rs=ps.executeQuery();
	
	//7.判断是否登录成功  查看结果几里面是否有数据
	if(rs.next()){//登录成功 跳首页
		request.getRequestDispatcher("admin/index.jsp").forward(request, response);
	}else{
		response.sendRedirect("login.jsp");
	}
	
	//8.关闭资源  con  ps  rs
	if(con!=null&&!con.isClosed()){
		con.close();
	}
	if(ps!=null){
		ps.close();
	}
	if(rs!=null){
		rs.close();
	}
		

%>

​

二:新闻增加操作

​
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




新闻发布--管理后台
		
	
	
		
		
管理员: 登录     退出

添加新闻:

中转数据库验证页面操作:

​
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
    <%
    	//作用:获取新增表单的数据进行数据库交互
    	
    	//1.编码格式
    	request.setCharacterEncoding("utf-8");
    	//2.获取表单提交的数据
    	//编号
    	int nid = 0;//定义一个变量保存最终的id
		//链接数据库查询到最大的id   最后+1
		//加载驱动
		Class.forName("oracle.jdbc.driver.OracleDriver");
		//建立连接
		String url = "jdbc:oracle:thin:@localhost:1521:orcl";
		Connection conn = DriverManager.getConnection(url, "scott", "123");
		
		String sql = "select nvl(max(nid),0) from tb_news";
		PreparedStatement ps = conn.prepareStatement(sql);
		ResultSet rs = ps.executeQuery();
		if(rs.next()){
			nid = rs.getInt(1)+1;
		}
    	//新闻分类id
    	String tid = request.getParameter("ntid");
    	int ntid = Integer.valueOf(tid);
    	//标题
    	String ntitle = request.getParameter("ntitle");
    	//作者
    	String nauthor = request.getParameter("nauthor");
    	//摘要
    	String nsummary = request.getParameter("nsummary");
    	//内容
    	String ncontent = request.getParameter("ncontent");
    	//图片 (默认  到时再说)
    	//日期 (获取系统时间)
    	//点击量  默认0
    
    	
    	//新增新闻
    	sql = "insert into tb_news(nid,ntid,ntitle,nauthor,nsummary,ncontent,ndate,ncount) values (?,?,?,?,?,?,sysdate,0)";
    	ps = conn.prepareStatement(sql);
    	ps.setInt(1, nid);
    	ps.setInt(2,ntid);
    	ps.setString(3,ntitle);
    	ps.setString(4,nauthor);
    	ps.setString(5,nsummary);
    	ps.setString(6,ncontent);
    	int n = ps.executeUpdate();
    	if(n>0){
    		out.print("");
    	}else{
    		out.print("");
    	}
    
    %>
    
    

​

你可能感兴趣的:(java,eclipse,tomcat,jar)