微博展示功能+连接数据库

该博客介绍了如何使用Java实现Web应用的用户登录功能,并展示用户的头像、昵称和微博数量。同时,通过两个接口分别获取用户的粉丝数和关注数,实现了数据的查询和页面跳转。涉及到的技术包括JDBC操作、接口实现、session存储以及JSP页面处理。
摘要由CSDN通过智能技术生成

 基本思路:

        1.前期准备:导入jar宝

        2.创建项目结构,

        3.创建实用类。

        4.写接口,写实现

分析需要两个接口一个用于登录+展示头像,用户名,地址第二个接口展示关注的数量和粉丝的数量:

首先我们写接口:于登录+展示:(USerDao):

public interface UserDao {
    //登录
    User login(String userId,String pwd);
    //查询个人信息有头像 昵称 微博数
    User showUserById(int id);
}

另一个接口 FollowDao:

public interface FollowDao {
    //显示粉丝数
    int showFS(int id);
    //显示关注数
    int showGZ(int id);
}

写完接口写实现:带啊吗如下:

首先写UserDaoimpl:

public class UserDaoImpl extends BaseDao implements UserDao {
    @Override
    public User login(String userId, String pwd) {
        String sql="select * from user where userId=? and password=?";
        Object[] objects={userId,pwd};
        ResultSet rs = this.executeQuery(sql, objects);
        User user=null;
        try {
            if (rs.next()){
                user=new User();
               user.setId(rs.getInt("id"));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return user;
    }
    @Override
    public User showUserById(int id) {
        String sql="select u1.image,u1.nickname,count(*) as count from user as u1,blog as b1 where u1.id=b1.uid and u1.id=?";
        Object[] objects={id};
        ResultSet rs = this.executeQuery(sql, objects);
        User user=null;
        try {
            if (rs.next()){
                user=new User();
                user.setImage(rs.getString("image"));
                user.setNickname(rs.getString("nickname"));
                user.setCount(rs.getInt("count"));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return user;
    }
}

再写FollowDaoimpl:

public class FollowDaoImpl extends BaseDao implements FollowDao {
    @Override
    public int showFS(int id) {
        String sql ="select count(*) as c from follow where followedUid=?";
        Object[] objects={id};
        ResultSet rs = this.executeQuery(sql, objects);
        int count=0;
        try {
            if (rs.next()){
                    count=rs.getInt("c");
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return count;
    }
    @Override
    public int showGZ(int id) {
        String sql="select count(*) as c follow where uid=?";
        Object[] objects={id};
        ResultSet rs = this.executeQuery(sql, objects);
        int count=0;
        try {
            if (rs.next()){
                count=rs.getInt("c");
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return count;
    }
}

以上java代码写完了,接下开写页面的脚本

先写登录页面:

login.jsp:

<form action="do_login.jsp">
    <p>账号:<input type="text" name="userName"></p>
    <p>密码:<input type="password" name="userPwd"></p>
    <p><input type="submit" value="登录"></p>
</form>

 do_login.jsp:

<%
    request.setCharacterEncoding("utf-8");
    String name = request.getParameter("userName");
    String pwd = request.getParameter("userPwd");
    UserDao ud=new UserDaoImpl();
    User user= ud.login(name,pwd);
    if (user!=null){
        //打当前登录的user对象存储到session中
        session.setAttribute("id",user.getId());
        //重定向到处理用户信息页面
        response.sendRedirect("do_userinto.jsp");
    }else {
        response.sendRedirect("error.jsp");
    }
%>

用户进入的jsp:do_userinto:

<%
    int id = (int) session.getAttribute("id");
    UserDao   ud=new UserDaoImpl();
    FollowDao fd=new FollowDaoImpl();

    User user=ud.showUserById(id);
    int FSCount= fd.showFS(id);
    int GZCount=fd.showGZ(id);

    //把查询到的数据存放到session中去
    session.setAttribute("user",user);
    session.setAttribute("fs",FSCount);
    session.setAttribute("gz",GZCount);

    response.sendRedirect("success.jsp");
%>

后面在根据需求写上成功/失败跳转页面。就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值