javaweb——模拟用户登录和新闻发布

目录

模拟用户登录

1.登录界面:

注意点:验证码

2.对登录界面与数据库实现数据交互:

3.登录成功页面:

新闻发布

1.发布新闻页面

2.发布新闻数据和数据交互:

注意点:新增id

3.发布新闻成功:


模拟用户登录

1.登录界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新闻发布系统-管理员登录</title>
<!-- 引入login.css -->
<link rel="stylesheet" type="text/css" href="css/login.css"/>
<!-- JavaScript 验证表单区域 -->
<script type="text/javascript">

	var code = "";//保存验证码
	//验证的需求:利用随机数  +拼接+数组存储需要随机的字符
	var arr =['a','b','c','d','e','f','g','h','i','j','k','l','0','1','2','3','4','5','6','7','8','9'];

	
	function $(id){
		return document.getElementById(id);
	}
	//加载函数
	window.onload = function(){
		//设置username的焦点事件
		$("username").onblur = function(){
			var usernameValue = this.value;
			if(!usernameValue){
				alert('用户名不能为空')
				return false;
			}
			return true;
		}
		//设置password的焦点事件
		$("password").onblur = function(){
			var passwordValue = this.value;
			if(!passwordValue){
				alert('密码不能为空')
				return false;
			}
			return true; 
		}
		
		//获取表单设置表单的阻止提交事件
		$("myForm").onsubmit = function(){
			if(!$("username").onblur() || !$("password").onblur() || !$("code").onblur()){
				return false;
			}
			return true;
		}
		
		//获取验证码进行匹配
		$("code").onblur = function(){
			//获取输入项中的验证码
			var inputCode = this.value;
			//获取span标签随机生成保留的验证码
			var spanCode = $("code_val").innerHTML;
			if(!inputCode){
				alert('验证码不能为空');
				return false;
			}else{//编写了验证码
				if(inputCode!=spanCode){
					alert('验证码输入错误');
					this.value = "";
					//重新生成
					return false;
				}
			}
			return true;
		};
		
		
		
		
		//问题:验证码的实现通过什么技术?
		//随机生成的验证码 有四个字母或者数字?    随机
		//javascript  随机器   Math.random()  0-1之间		
		
		//生成一个0-9的随机数
		/* var sj = Math.random()*10;
		// 向下取整 
		console.log(Math.floor(sj)); */
		
		
		setCode();
		
	
		/* 如果span中存储的验证码不清晰  需要重新修改  设置span的点击事件 */
		$("code_val").onclick = function(){
			setCode();
		}
	};
	
	//封装验证码生成
	function setCode(){
		//清空上一次保留的验证码
		code = "";
		//通过Math.random();产生一个随机数
		for(var i = 0;i<4;i++){
			/* 取范围 乘  数组的长度个数 */
			var sj = Math.floor(Math.random()*arr.length);
			//console.log(sj)
			//console.log(arr[sj]);  //根据随机数获取数组中的元素
			code+=arr[sj];
		}
		//获取存储验证码的span标签
		$("code_val").innerHTML = code;
	}



</script>	
	
</head>
	<body>
		<!-- 登录大容器 -->
		<div id="login">
			<!-- 上 -->
			<div id="top">
				<div id="top_left"><img src="images/login_03.gif" /></div>
				<div id="top_center"></div>
			</div>
			<!-- 中 -->
			<div id="center">
				<div id="center_left"></div>
				<!-- 表单区域 -->
				<div id="center_middle" style = "background:pink">
					<form id = "myForm" action = "doLogin.jsp" method = "post">
						<div id="user">用 户
							<input type="text" id= "username" name="username" />
						</div>
						<div id="pwd">密 码
							<input type="password" id = "password" name="password" />
						</div>
						<!-- 登录前需要验证码进行验证 -->
						<div id = "yzm">
							验证码 <input type ="text" name = "code" id = "code"/><span id = "code_val">SBSB</span>
						</div>
						<!-- 区域留出来   7天免登录-->
						<div id = "mdl">
						
						</div>
						<div id="btn">
							<input type = "submit" value = "登录"/>
							<input type = "reset" value = "清空"/>
						</div>
							
					
					</form>
				</div>
				<div id="center_right"></div>
			</div>
			<!-- 下 -->
			<div id="down">
				<div id="down_left">
					<div id="inf">
						<span class="inf_text">版本信息</span>
						<span class="copyright">管理信息系统 2008 v2.0</span>
					</div>
				</div>
				<div id="down_center"></div>
			</div>

		</div>
	</body>
</html>

注意点:验证码

1.是通过随机器和数组生成验证码。

2.网页刷新和点击验证码,验证码可以进行刷新。

3.单独封装生成验证码的方法,方便调用。

		//获取验证码进行匹配
		$("code").onblur = function(){
			//获取输入项中的验证码
			var inputCode = this.value;
			//获取span标签随机生成保留的验证码
			var spanCode = $("code_val").innerHTML;
			if(!inputCode){
				alert('验证码不能为空');
				return false;
			}else{//编写了验证码
				if(inputCode!=spanCode){
					alert('验证码输入错误');
					this.value = "";
					//重新生成
					return false;
				}
			}
			return true;
		};
		
		
		//问题:验证码的实现通过什么技术?
		//随机生成的验证码 有四个字母或者数字?    随机
		//javascript  随机器   Math.random()  0-1之间		
		
		//生成一个0-9的随机数
		/* var sj = Math.random()*10;
		// 向下取整 
		console.log(Math.floor(sj)); */

		setCode();

		/* 如果span中存储的验证码不清晰  需要重新修改  设置span的点击事件 */
		$("code_val").onclick = function(){
			setCode();
		}
	};
	
	//封装验证码生成
	function setCode(){
		//清空上一次保留的验证码
		code = "";
		//通过Math.random();产生一个随机数
		for(var i = 0;i<4;i++){
			/* 取范围 乘  数组的长度个数 */
			var sj = Math.floor(Math.random()*arr.length);
			//console.log(sj)
			//console.log(arr[sj]);  //根据随机数获取数组中的元素
			code+=arr[sj];
		}
		//获取存储验证码的span标签
		$("code_val").innerHTML = code;
	}

2.对登录界面与数据库实现数据交互:

功能:通过查询方法来实现登录效果

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//该页面的作用:处理登录页面提交的数据进行数据库交互
	
	//1.设置request请求对象的编码格式
	request.setCharacterEncoding("utf-8");

	//2.根据reuqest对象获取表单提交的值
	String username = request.getParameter("username");
	String password = request.getParameter("password");

	//3.与数据库进行交互  判断数据库中是否存在username和passowrd
	String uname = "";
	String pwd = "";
	//加载驱动
	Class.forName("oracle.jdbc.driver.OracleDriver");
	//建立连接
	String url = "jdbc:oracle:thin:@localhost:1521:orcl";
	Connection conn = DriverManager.getConnection(url, "scott", "123");
	//编写登录的sql语句
	String sql = "select * from tb_0325_users where username = ? and password = ?";
	PreparedStatement ps = conn.prepareStatement(sql);
	//给对应的占位符进行赋值
	ps.setString(1, username);
	ps.setString(2,password);
	//返回结果集对象
	ResultSet rs = ps.executeQuery();
	//判断结果集中是否存在查询的数据
	if(rs.next()){//判断结果集中存在下一条数据
		uname = rs.getString(2);
		pwd = rs.getString(3);
	}
	
	//判断uname和pwd是否为空   为空  说明提供的账号或密码错误  不为空   查到了  可以登录
	if(""!=uname && ""!=pwd){//可以登录
		//转发
		request.getRequestDispatcher("success.jsp").forward(request, response);
	}else{//为空  不可以登录
		//重定向
		response.sendRedirect("login.jsp");
	}
		
%>

3.登录成功页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>欢迎<%=request.getParameter("username") %>来到主页!!!</h1>
</body>
</html>

新闻发布

1.发布新闻页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新闻发布--管理后台</title>
		<link rel="stylesheet" type="text/css" href="css/admin.css" />
	</head>
	<body>
		<div id="header">
			<div id="welcome">欢迎使用新闻管理系统!</div>
			<div id="nav">
				<div id="logo"><img src="images/logo.jpg" alt="新闻中国" /></div>
				<div id="a_b01"><img src="images/a_b01.gif" alt="" /></div>
			</div>
		</div>
		<div id="admin_bar">
			<div id="status">管理员: 登录 &#160;&#160;&#160;&#160;<a href="#">退出</a></div>
			<div id="channel"> </div>
		</div>
		<div id="main">
			<div id="opt_list">
				<ul>
					<li><a href="admin.html">管&nbsp;&nbsp;理&nbsp;&nbsp;首&nbsp;&nbsp;页</a></li>
					<li><a href="admin_addNews.html">新&nbsp;&nbsp;闻&nbsp;&nbsp;发&nbsp;&nbsp;布</a></li>
					<li><a href="admin_themeMaintain.html">主&nbsp;&nbsp;题&nbsp;&nbsp;维&nbsp;&nbsp;护</a></li>
					<li><a style="color: red;" href="#">系统账号管理</a></li>
					<li><a style="color: red;" href="#">注册用户管理</a></li>
				</ul>
			</div>
			<div id="opt_area">
				<h1 id="opt_type"> 添加新闻: </h1>
				<form action="doAddNews.jsp" method="post">
					<p>
						<label> 主题 </label>
						<select name="ntid">
							<option value="1">国际</option>
							<option value="2">美女</option>
							<option value="3">游戏</option>
							<option value="4">娱乐</option>
							<option value="5">体育</option>
						</select>
					</p>
					<p>
						<label> 标题 </label>
						<input name="ntitle" type="text" class="opt_input" />
					</p>
					<p>
						<label> 作者 </label>
						<input name="nauthor" type="text" class="opt_input" />
					</p>
					<p>
						<label> 摘要 </label>
						<textarea name="nsummary" cols="40" rows="3"></textarea>
					</p>
					<p>
						<label> 内容 </label>
						<textarea name="ncontent" cols="70" rows="10"></textarea>
					</p>
					<p>
						<label> 上传图片 </label>
						<input name="file" type="file" class="opt_input" />
					</p>
					<input name="action" type="hidden" value="addnews">
					<input type="submit" value="提交" class="opt_sub" />
					<input type="reset" value="重置" class="opt_sub" />
				</form>
			</div>
		</div>
		<div id="site_link"> <a href="#">关于我们</a><span>|</span> <a href="#">Aboue Us</a><span>|</span> <a href="#">联系我们</a><span>|</span>
			<a href="#">广告服务</a><span>|</span> <a href="#">供稿服务</a><span>|</span> <a href="#">法律声明</a><span>|</span> <a href="#">招聘信息</a><span>|</span>
			<a href="#">网站地图</a><span>|</span> <a href="#">留言反馈</a> </div>
		<div id="footer">
			<p class="">24小时客户服务热线:010-68988888 &#160;&#160;&#160;&#160; <a href="#">常见问题解答</a> &#160;&#160;&#160;&#160;
				新闻热线:010-627488888<br />
				文明办网文明上网举报电话:010-627488888 &#160;&#160;&#160;&#160; 举报邮箱:<a href="#">jubao@jb-aptech.com.cn</a></p>
			<p class="copyright">Copyright &copy; 1999-2009 News China gov, All Right Reserver<br />
				新闻中国 版权所有</p>
		</div>
	</body>
</html>

2.发布新闻数据和数据交互:

<%@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("<script>alert('发布成功');location.href='admin.jsp'</script>");
    	}else{
    		out.print("<script>alert('发布失败');location.href='add_news.jsp'</script>");
    	}
    
    %>
    
    

注意点:新增id

1.查询到数据库中最大的id。

2.在最大id的基础上+1则是新增数据的id。

    	//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;
		}

3.发布新闻成功:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新闻发布系统-后台主页</title>
		<link rel="stylesheet" type="text/css" href="css/admin.css" />
	</head>
	<body>
		<div id="header">
			<div id="welcome">欢迎使用新闻管理系统!</div>
			<div id="nav">
				<div id="logo"><img src="images/logo.jpg" alt="新闻中国" /></div>
				<div id="a_b01"><img src="images/a_b01.gif" alt="" /></div>
			</div>
		</div>
		<div id="admin_bar">
			<div id="status">管理员:<%=request.getParameter("username") %> 登录 &#160;&#160;&#160;&#160; <a href="#">login out</a></div>
			<div id="channel"> </div>
		</div>
		<div id="main">
			<div id="opt_list">
				<ul>
					<li><a href="admin.html">管&nbsp;&nbsp;理&nbsp;&nbsp;首&nbsp;&nbsp;页</a></li>
					<li><a href="add_news.jsp">新&nbsp;&nbsp;闻&nbsp;&nbsp;发&nbsp;&nbsp;布</a></li>
					<li><a href="admin_themeMaintain.html">主&nbsp;&nbsp;题&nbsp;&nbsp;维&nbsp;&nbsp;护</a></li>
					<li><a href="admin_themeMaintain.html">评&nbsp;&nbsp;论&nbsp;&nbsp;管&nbsp;&nbsp;理</a></li>
					<li><a style="color: red;" href="#">系统账号管理</a></li>
					<li><a style="color: red;" href="#">注册用户管理</a></li>
				</ul>
			</div>
			<div id="opt_area">
				<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
				<script language="javascript">
					function clickdel() {
						return confirm("删除请点击确认");
					}
				</script>
				<ul class="classlist">
					<li> <a href="admin_newsDetail.html">深足教练组:说我们买球是侮辱 朱广沪常暗中支招</a> <span> 作者:
							sport
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> 省政府500万悬赏建业登顶 球员:遗憾主场放跑国安 <span> 作者:
							sport
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> 洪元硕:北京人的脸就看你们了 最后一哆嗦看着办 <span> 作者:
							sport
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> 临界冠军京城夺票总动员 球迷:夺冠!让所有人闭嘴 <span> 作者:
							sport
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> 一纸传真暗含申花处理态度 国足征调杜威突生悬疑 <span> 作者:
							sport
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li class='space'></li>
					<li> 气候变化导致海平面上升 <span> 作者:news

							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> 商贸联委会在杭州开会 中美对贸易争端态度低调 <span> 作者:news
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> 迟福林:“十二五”改革应向消费大国转型 <span> 作者:
							news
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> 伊朗称放弃美元作为外储地位 人民币或上位 <span> 作者:
							out
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> “持械抢劫,当场击毙” 浙江永康现超雷人标语 <span> 作者:
							news
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li class='space'></li>
					<li> 国内成品油价格上调几成定局 <span> 作者:
							news
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> 俄数百所幼儿园和学校因流感停课 <span> 作者:
							news
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> 喀布尔市中心传出爆炸和枪声 目前原因不明 <span> 作者:
							out
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> 国台办介绍大陆高校加大对台招生力度情况 <span> 作者:
							news
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li> 国台办将授权福建等六省市部分赴台管理审批权 <span> 作者:
							news
							&#160;&#160;&#160;&#160; <a href='admin_editNews.html'>修改</a> &#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
						</span> </li>
					<li class='space'></li>
					<p align="right"> 当前页数:[1/3]&nbsp; <a href="#">下一页</a> <a href="#">末页</a> </p>
				</ul>
			</div>
		</div>
		<div id="site_link"> <a href="#">关于我们</a><span>|</span> <a href="#">Aboue Us</a><span>|</span> <a href="#">联系我们</a><span>|</span>
			<a href="#">广告服务</a><span>|</span> <a href="#">供稿服务</a><span>|</span> <a href="#">法律声明</a><span>|</span> <a href="#">招聘信息</a><span>|</span>
			<a href="#">网站地图</a><span>|</span> <a href="#">留言反馈</a> </div>
		<div id="footer">
			<p class="">24小时客户服务热线:010-68988888 &#160;&#160;&#160;&#160; <a href="#">常见问题解答</a> &#160;&#160;&#160;&#160;
				新闻热线:010-627488888<br />
				文明办网文明上网举报电话:010-627488888 &#160;&#160;&#160;&#160; 举报邮箱:<a href="#">jubao@jb-aptech.com.cn</a></p>
			<p class="copyright">Copyright &copy; 1999-2009 News China gov, All Right Reserver<br />
				新闻中国 版权所有</p>
		</div>
	</body>
</html>

如果不能理解可以将代码实操一下。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小羊持续开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值