JavaWeb04.登录&添加新闻

本文介绍了一个新闻发布系统的实现过程,包括用户注册、登录验证及新闻发布的具体步骤,并提供了详细的JavaWeb与JDBC结合使用的代码示例。

回顾:JavaWeb03.页面跳转&JDBC

项目素材:《新闻发布系统(项目素材)》 

目录

登录注册的实现

 注册功能的实现

登录功能的实现

简单添加新闻


登录注册的实现

oracle创建表格

create table t_topic    --新闻标题表
(
    topic_id   number primary key,
    topic_name varchar2(20) not null
);

select * from t_topic;

create table t_news(    --新闻表
    news_id number primary key ,
    news_title varchar2(255) not null,
    news_topic number not null,
    news_author varchar2(255) not null,
    news_publisher varchar2(255) not null,
    news_content long not null
);

select * from t_news;

create table t_user(    --用户表
  user_id number primary key,
  user_name varchar2(20) not null,
  user_pwd varchar2(20) not null,
  user_sex varchar2(3) check (user_sex='男' or user_sex='女'),
  user_age number
);

commit;    --创建好表格记得提交

将项目素材中的 bootstrap-3.3.7-dist news目录复制粘贴到webapps下login.html和regiest.html内容复制,在webapps下创建jsp文件,保留部分内容其余全部粘贴(news目录下html文件均以此操作)

 导ojdbc的jar包,再创建路径(右键build path)

 创建doLogin.jsp(登录验证页面)和doRegiest.jsp(注册验证页面)删除html内容保留下方内容语句声明 

连接数据库语句7步

1.加载驱动
2.定义连接字符串
3.获得连接
4.获得执行对象
5.获得结果集
6.判断结果
7.资源关闭

//加载驱动
	Class.forName("oracle.jdbc.driver.OracleDriver");
	//定义连接字符串
	String url="jdbc:oracle:thin:@localhost:1521:orcl";
	//获得连接
	Connection con=DriverManager.getConnection(url,"scott","sa123");
	//获得执行对象
	PreparedStatement ps=con.prepareStatement("select * from t_user where user_name=? and user_pwd=?");
	ps.setString(1, yh);
	ps.setString(2, mm);
	//获得结果集
	ResultSet rs=ps.executeQuery();
	//判断结果
	if(rs.next()){
		// localhost:8080/web04/news/index.jsp
		request.getRequestDispatcher("/news/index.jsp").forward(request, response);
	}else{
		//重定向 客户端
		/**
		(localhost:8080/web04/)跳转的时候:
			a.jsp  跳转到同级路径下的a.jsp (localhost:8080/web04/a.jsp)
			../a.jsp 跳转到上一级路径下的a.jsp (localhost:8080/a.jsp)
			/a.jsp 根目录的a.jsp (localhost:8080/a.jsp)
		**/
		response.sendRedirect("login.jsp");
	}
	//资源关闭
	if(con!=null&&!con.isClosed()){
		con.close();
	}
	if(ps!=null){
		ps.close();
	}
	if(rs!=null){
		rs.close();
	}

 注册功能的实现

<%@page import="java.sql.Time"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%	
	request.setCharacterEncoding("utf-8");
	
	//获得页面中的值
	String name=request.getParameter("yx1");
	String pwd=request.getParameter("mm1");
	String age=request.getParameter("nl");
	String sex=request.getParameter("xb");

	Class.forName("oracle.jdbc.driver.OracleDriver");
	String url="jdbc:oracle:thin:@localhost:1521:orcl";
	Connection con=DriverManager.getConnection(url,"scott","sa123");
	//找到用户表中id最大值,在其基础上加1
	PreparedStatement ps=con.prepareStatement("select nvl(max(user_id),0) from t_user");
	
	ResultSet rs=ps.executeQuery();
	
	int id=0;
	if(rs.next()){
		id=rs.getInt(1);//查询出来的最大id
	}
	id++; //避免主键的重复
	ps=con.prepareStatement("insert into t_user(user_id,user_name,user_pwd,user_sex,user_age) values(?,?,?,?,?)");
	ps.setInt(1,id);
	ps.setString(2,name);
	ps.setString(3,pwd);
	ps.setString(4,sex);
	ps.setInt(5,Integer.parseInt(age));
	int n=ps.executeUpdate();
	if(n>0){
		out.print("<script>alert('注册成功')</script>");
		request.getRequestDispatcher("login.jsp").forward(request,response);
	}else{
		out.print("<script>alert('注册失败')</script>");
		response.sendRedirect("regiest.jsp");
	}
	//关闭资源
	if(con!=null&&!con.isClosed()){
		con.close();
	}
	if(ps!=null){
		ps.close();
	}
	if(rs!=null){
		rs.close();
	}
%>

登录功能的实现

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("utf-8");
	String yh=request.getParameter("yh");
	String mm=request.getParameter("mm");

	//加载驱动
	Class.forName("oracle.jdbc.driver.OracleDriver");
	//定义连接字符串
	String url="jdbc:oracle:thin:@localhost:1521:orcl";
	//获得连接
	Connection con=DriverManager.getConnection(url,"scott","sa123");
	//获得执行对象
	PreparedStatement ps=con.prepareStatement("select * from t_user where user_name=? and user_pwd=?");
	ps.setString(1, yh);
	ps.setString(2, mm);
	//获得结果集
	ResultSet rs=ps.executeQuery();
	//判断结果
	if(rs.next()){
		// localhost:8080/web04/news/index.jsp
		request.getRequestDispatcher("/news/index.jsp").forward(request, response);
	}else{
		//重定向 客户端
		/**
		(localhost:8080/web04/)跳转的时候:
			a.jsp  跳转到同级路径下的a.jsp (localhost:8080/web04/a.jsp)
			../a.jsp 跳转到上一级路径下的a.jsp (localhost:8080/a.jsp)
			/a.jsp 根目录的a.jsp (localhost:8080/a.jsp)
		**/
		response.sendRedirect("login.jsp");
	}
	//资源关闭
	if(con!=null&&!con.isClosed()){
		con.close();
	}
	if(ps!=null){
		ps.close();
	}
	if(rs!=null){
		rs.close();
	}
%>

简单添加新闻

<%@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"%>
<%

	request.setCharacterEncoding("utf-8");
	//接受新闻的数据
	String title=request.getParameter("title");
	String author=request.getParameter("author");
	String publisher=request.getParameter("publisher");
	String topic=request.getParameter("topic");
	String content=request.getParameter("content");
	
	//新闻的添加(连接数据库)
	
	//加载驱动
	Class.forName("oracle.jdbc.driver.OracleDriver");
	//定义连接字符串
	String url="jdbc:oracle:thin:@localhost:1521:orcl";
	//获得连接
	Connection con=DriverManager.getConnection(url,"scott","123");
	
	// 主键不能不填
	// 主键没有自增的选项(触发器+序列)
	//获得执行对象【数据插入之前,先把主键查询出来】
	PreparedStatement ps=con.prepareStatement("select nvl(max(news_id),0) from t_news");
	
	ResultSet rs=ps.executeQuery();
	
	int id=0;
	if(rs.next()){
		id=rs.getInt(1);//查询出来的最大id
	}
	id++; //为什么加一 【避免主键的重复】
	
	//插入新闻的操作
	ps=con.prepareStatement("insert into t_news(news_id, news_title, news_topic, news_author, news_publisher, news_content) values(?,?,?,?,?,?)");
	//赋值
	ps.setInt(1, id);
	ps.setString(2, title);
	ps.setInt(3, Integer.parseInt(topic));
	ps.setString(4, author);
	ps.setString(5, publisher);
	ps.setString(6, content);
	//执行结果
	int n=ps.executeUpdate();
	if(n>0){
		out.print("<script>alert('增加成功');location.href='/web04/news/index.jsp'</script>");
	}else{
		out.print("<script>alert('增加失败');location.href='/web04/news/index.jsp'</script>");
	}
	//资源的关闭
	if(con!=null&&!con.isClosed()){
		con.close();
	}
	if(ps!=null){
		ps.close();
	}
	if(rs!=null){
		rs.close();
	}
%>

你要尽全力保护你的梦想。那些嘲笑你梦想的人,他们注定失败,他们想把你变成和他们一样。我坚信,只要心中有梦想,我就会与众不同。你也是。 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值