新闻项目封装版

一、什么是jsp封装

jsp封装就是把我们写在jsp中的java代码封装出去,用专门的类来定义方法,然后再jsp中调用此方法,以此来实现我们的功能,是我们看得更加方便,整洁。

二、封装步骤

1、首先先建三个包,分别为:entity实体类,dao类和untilDBHelper类

2、首先就是我们的util类,写我们DBHelper类也就是我们的连接数据库。

DBHelper是我们连接oracle数据库的代码

源代码展示:

package com.zking.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DBHelper {
	private static String user="scott";
	private static String password="1234";
	private static String cname="oracle.jdbc.driver.OracleDriver";
	private static String url="jdbc:oracle:thin:@localhost:1521:orcl";
	//注册驱动类
	static {
		try {
			Class.forName(cname);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	//连接数据库
	public static Connection getCon() {
		Connection con=null;
		try {
			con=DriverManager.getConnection(url, user, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return con;
	}
	//关闭连接
	public static void ColseDb(Connection con,PreparedStatement ps,ResultSet rs) {
		try {
			if(con!=null) {
				con.close();
			}
			if(ps!=null) {
				ps.close();
			}
			if(rs!=null) {
				rs.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 下一个获取下一个编号的方法
	 * @return 下一个编号
	 */
	public static int getNextId(String tableName,String col) {
		int id = 1;
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			con = DBHelper.getCon();
			ps = con.prepareStatement("select max("+col+") from "+tableName);
			rs = ps.executeQuery();
			if(rs.next()) {
				id = rs.getInt(1)+1;
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.ColseDb(con, ps, rs);
		}
		return id;
	}
}

ps:其中有有一个获取下一个编号的方法,这个就是在我们添加数据时因为oracle没有主键自增的功能,所有我们在这里写了一个方法首先找到最大的编号,然后再最大编号的基础加一,成为我们要添加的数据的编号。

3、其次是实体类(News新闻,Ptext评论,Subject主题,User用户)——这个是我们新闻所需的实体类(先写属性,然后创建get和set方法还有构造函数)

ps:这个是实现我们对对象的封装,然后可以对一些字段定义和状态进行判断和过滤,可以把实体类作为参数传递。

4、首先我们的新闻界面应该是我们的登录和注册,所以首先需要写下我们的User类和UserDao类。给我们的用户名和密码进行封装。

USer的源代码展示:

package com.zking.entity;

public class User {
	private int uuid;
	private String uname;
	private String upwd;
	private String uinfo;
	public User() {
		super();
	}

	public User(int uuid, String uname, String upwd, String uinfo) {
		super();
		this.uuid = uuid;
		this.uname = uname;
		this.upwd = upwd;
		this.uinfo = uinfo;
	}

	public int getUuid() {
		return uuid;
	}

	public void setUuid(int uuid) {
		this.uuid = uuid;
	}

	public String getUname() {
		return uname;
	}

	public void setUname(String uname) {
		this.uname = uname;
	}

	public String getUpwd() {
		return upwd;
	}

	public void setUpwd(String upwd) {
		this.upwd = upwd;
	}

	public String getUinfo() {
		return uinfo;
	}

	public void setUinfo(String uinfo) {
		this.uinfo = uinfo;
	}

	@Override
	public String toString() {
		return "User [uuid=" + uuid + ", uname=" + uname + ", upwd=" + upwd + ", uinfo=" + uinfo + "]";
	}
}

5、第三个就是我们的dao类,在dao类中我们需要写我们要实现的功能的方法。(newsdao,ptextdao,subjectdao,userdao)

 

ps:这个说我们新闻系统所需要用到的dao类,每一个dao类应用到的是根据我们表来的方法,比如newsdao对应的就是我们新闻的增删改查,而今在我们dao比较重要的方法就是我们的模糊查询和分页方法。

UserDao源代码展示:

package com.zking.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.zking.entity.User;
import com.zking.util.DBHelper;

public class UserDao {
	//用户登录-根据账号和密码进行查询
	/**
	 * 用户登录
	 * @param uname 用户名
	 * @param upwd 用户密码
	 * @return 登录成功返回用户对象,失败返回null
	 */
	public User login(String uname,String upwd) {
		User user=null;
		Connection con=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("select * from T277 where uname=? and upwd=?");
			ps.setString(1, uname);
			ps.setString(2, upwd);
			rs = ps.executeQuery();
			//操作数据
			if(rs.next()) {
				int uuid = rs.getInt(1);
				String uinfo = rs.getString(4);
				user = new User(uuid, uname, upwd, uinfo);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.ColseDb(con, ps, rs);
		}
		return user;
	}
	/**
	 * 用户注册
	 * @param user 注册的用户对象
	 * @return
	 */
	public int register(User user) {
		int i = 0;
		Connection con = null;
		PreparedStatement ps = null;
		try {
			con = DBHelper.getCon();
			ps = con.prepareStatement("insert into T277 values(?,?,?,?)");
			ps.setInt(1, DBHelper.getNextId("T277","uuid"));
			ps.setString(2, user.getUname());
			ps.setString(3, user.getUpwd());
			ps.setString(4, user.getUinfo());
			i = ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.ColseDb(con, ps, null);
		}
		return i;
	}
}

6、最后在我们的jsp页面中只需要调用方法即可。

例如我们的删除(dodelnews):

<%@page import="com.zking.dao.NewsDao"%>
<%@page import="com.zking.util.DBHelper"%>
<%@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"%>
<%
	int nid = Integer.valueOf(request.getParameter("nid"));
	NewsDao dd = new NewsDao();
	int i = dd.delete(nid);
	if (i > 0) {
		out.print("<script>alert('删除成功');location.href='admin.jsp'</script>");
	} else {
		out.print("<script>alert('删除失败');location.href='admin.jsp'</script>");
	}
%>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值