2.更高层的函数包装
也就是面向对象的思想,将操作数据库
首先是登录的分离,思想是:在一个类中函数中实现将数据取出来进行比对,再在显示页面调用比对的函数,代码整洁清晰。
- 下面是userbeancl
中的checkuser函数,比对用户密码 - //处理类,用来处理user表,主要操作userbean
- //业务逻辑在这
- package
com.prince; - import
java.util.*;//ArrayList所在 - import
java.sql.*; - public
class userbeancl { - mySqlConnection
msc=null; - ResultSet
rs=null; - public
boolean checkuser(String u,String p){//从数据库中取密码核对 - boolean
b=false; - try{
- msc=new
mySqlConnection(); - rs=msc.EQ("select
passwd from mydb.users where usernames='"+u+"' limit 1"); - //System.out.println(rs.next()+"123");
- if(rs.next()){
- String
passdb=rs.getString(1);// 数据库取得的密码 - System.out.println(passdb);
- if(passdb.equals(p)){
- b=true;
- }
- }
- }catch(Exception
e){} - finally{//
每次 查询完都要关闭ResultSet和mySqlConnection连接,以防连接悬空 - try
{ - rs.close();
- msc.close();
- }
catch (SQLException e) { - //
TODO Auto-generated catch block - e.printStackTrace();
- }
- }
- return
b; - }
- }
在登录处理的函数中调用上面的比对函数
- userbeancl
ubcl=new userbeancl();//将userbeancl实例化 - boolean
check=ubcl.checkuser(u, p);//调用其中的checkuser函数
另外将显示表格的函数也分离开来:
- //这个类中放置wellcome页面的表格显示
- package
com.prince; - import
javax.servlet.http.*; - import
java.sql.*; - import
java.io.*; - public
class TableShow { - public
void page_devided(PrintWriter pw,HttpServletRequest req){ - int
pageSize=3;//每页多少条 - int
pageNow=1;//当前显示页数 - int
pageCount=0;//一共多少页,计算得到 - int
rowCount=0;//一共多少记录, 从数据库查 - //动态接收pageNow,来跳转表格页面
- String
spageNow=req.getParameter("pagenow"); - System.out.println("当前表格页面:"+spageNow);
- if(spageNow!=null){
- //用户不是第一次进入
- pageNow=Integer.parseInt(spageNow);
- }
- mySqlConnection
msc=new mySqlConnection(); - String
sql="select count(*) from mydb.users"; - ResultSet
rs=msc.EQ(sql); - try
{ - if(rs.next()){
- rowCount=rs.getInt(1);
//得到记录的条数 - }
- }
catch (SQLException e) { - e.printStackTrace();
- }
-
- if(rowCount%pageSize==0){//总数除以每页数是否整除,求总页数
- pageCount=rowCount/pageSize;
- }else{
- pageCount=rowCount/pageSize+1;
- }
- rs=
msc.EQ("select * from mydb.users "+ - "where
ID not in "+ - "(select
t.ID from (select * from mydb.users limit "+pageSize*(pageNow-1)+")as t) limit "+pageSize); - //用limit的not
in 排除掉当前页面前的数据,再取limit - try
{//打印表格 - pw.println("");
- pw.println("
");//表头 ID NAME PASSWD - while(rs.next()){
- pw.println("");//每一个tr是为一行
- pw.println("");//ID
"+rs.getInt(1)+" - pw.println("");//用户
"+rs.getString(2)+" - pw.println("");//密码
"+rs.getString(3)+" - pw.println("");
- }
- pw.println("");
- //控制页面的超链接
- if(pageNow>1){
- pw.println("+(pageNow-1)+">上一页");
- }
- for(int
i=pageNow;i<=pageNow+4;i++){ - pw.println("+i+">"+i+"");
- }
- if(pageNow<=pageCount){
- pw.println("+(pageNow+1)+">下一页");
- }
- }
catch (SQLException e) { - e.printStackTrace();
- }
- }
- }
第六讲 servletContex ,操作文件,网站计数器