从0实现基于Servlet+jsp的图书馆系统笔记篇(1)

本文介绍了JavaWeb开发的一个基础项目,技术栈包括Servlet、JSP和MySQL,借助Apache的DBUtils简化JDBC操作。项目采用Service、Dao分层架构,讲解了如何实现MyDbUtils工具类、UserDao的查询方法以及Servlet中的doGet和doPost处理。此外,还讨论了单例模式和数据转发方法。

目录

前言-项目学习目的

一、技术栈介绍

二、项目架构

三、代码记录

    1.实现MyDbUtils的工具类

2.  Userdao的list(查询所有用户)

3.Servlet

  Ⅰ.doGet()和doPost()

 Ⅱ.resp.sendRedirect()和req.getRequestDispatcher().forward(req,resp)


前言-项目学习目的

希望了解到JavaWeb开发的一般流程,重点学习后端业务逻辑处理。这是第一篇笔记,所以介绍一下技术栈和框架,剩下的笔记以记录后端代码为主

一、技术栈介绍

项目用到的技术栈主要还是Servlet+JSP + MySQL,对数据库的操作是通过Apache的DBUtils来实现 的。简化了JDBC(Java Database connect)的操作。在页面呈现使用HPlus一套基于bootstrap的页面模板来实现。

二、项目架构

 1.结构草图

对Servlet的理解:处理客户端的请求(通过doGet和doPost)

对Service,Dao分层的理解:充分解耦,减少代码之间的依赖层度;将业务逻辑处理和数据处理(对数据库)分开,便于管理。

三、代码记录

    1.实现MyDbUtils的工具类

      (思考:工具类应该是唯一的,不需要实例化,这里通过将MysqlDataSource设为静态成员来实现数据源对象唯一。或许使用单例模式效果更好)

单例模式:单例模式 | 菜鸟教程 (runoob.com)

public class MyDbUtils {
    private static MysqlDataSource dataSource;
    static{
        dataSource=new MysqlDataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3306/librarymanagent?serverTimezone=UTC");
        dataSource.setUser("root");
        dataSource.setPassword("031024");
    }//static块初始化
    public static QueryRunner getQueryRunner(){
        return new QueryRunner(dataSource);//传入数据源dataSource;
    }
}

2.  Userdao的list(查询所有用户)

/**
 * 用户信息Dao的实现类
 */
public class UserDaoimpl implements IUserDao {
   // private  final QueryRunner queryRunner = MyDbUtils.getQueryRunner();

    @Override
    public List<SysUser> list(SysUser user) {
        QueryRunner queryRunner = MyDbUtils.getQueryRunner();
        String sql = "select * from sys_user ";
        try {
            List<SysUser>list=queryRunner.query(sql, new ResultSetHandler<List<SysUser>>() {//lambda表达式的应用
                @Override
                public List<SysUser> handle(ResultSet resultSet) throws SQLException {
                    List<SysUser> list = new ArrayList<>();       
                    while(resultSet.next()){
                        SysUser user=new SysUser();                  
                        user.setId(resultSet.getInt("id"));
                        user.setUsername(resultSet.getString("username"));
                        user.setPassword(resultSet.getString("password"));
                        user.setNickname(resultSet.getString("nickname"));
                        user.setRoleId(resultSet.getInt("role_id"));
                        user.setRolename(resultSet.getString("rolename"));
                        user.setCreateTime(resultSet.getDate("create_time"));
                        list.add(user); // 把查询的记录封装到了集合容器中
                    }
                    return list;
                }
            });
            return list;
        } catch (SQLException e) {
           e.printStackTrace();
        }
        return null;
    }

3.Servlet

        Ⅰ.doGet()和doPost()

/**
 * urlPatterns:提供给客户端访问Servlet的请求路径
 */
@WebServlet(name = "userServlet",urlPatterns = {"/userServlet"})
public class UserServlet extends HttpServlet {
    private final IUserService service = new UserServiceImpl();
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
            ServletException, IOException {   
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws
            ServletException, IOException {
    }
}
  <a class="J_menuItem" href="/userServlet">用户管理</a>

        Get是最常用的方法,通常用于请求服务器发送某个资源。

        POST方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。

        点击用户管理就会触发userServlet,userServlet判断请求是Get还是Post,然后对应触发doGet还是doPost。

        Ⅱ.resp.sendRedirect()和req.getRequestDispatcher().forward(req,resp)

        request携带请求地址、参数,用于寻找需要执行的Servlet和其参数。

        response就是要返回给浏览器的结果对象

req.getRequestDispatcher().forward(req,resp)通常与req.setAttribute()一起使用

        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值