我的第一个Javaweb项目(优化前代码整理)

这篇博客详细介绍了作者的首个JavaWeb项目的结构,包括bean、dao、service、util、web、resource和WEB-INF七个部分。在预备阶段,提到了数据库配置、实体类、属性配置文件以及工具类如DBUtilsPlus和PageUtil。数据层涉及DAO接口及其实现,业务层包含服务类和服务实现。web包中涵盖了处理不同请求的Servlet,如登录、退出、查询和更新操作。前端页面包括index.jsp和success.jsp等。
摘要由CSDN通过智能技术生成

一:项目结构

 

大致分为bean包,dao包,service包,util包,web包,resource包,WEB-INF包7个部分

二:预备阶段 

预备阶段包括数据库,实体类与resource包配置文件,工具类util,部分 jar包部分,数据库与jar包部分参考上一篇博客,这里只汇总代码:

resource包:存放属性配置文件

db.properties 配置文件

url=jdbc:mysql://localhost:3306/mydemo1?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
uname=root
upass=1380341
driverClass=com.mysql.cj.jdbc.Driver

bean包:存放实体类 

Users实体类

package bean;

public class Users {
    //属性
    private Integer userid;
    private String username;
    private Integer age;
    private String sex;
    private String password;
    private Integer status;

    //无参
    public Users() {

    }

    //全参
    public Users(Integer userid, String username, Integer age, String sex, String password) {
        this.userid = userid;
        this.username = username;
        this.age = age;
        this.sex = sex;
        this.password = password;
    }

    //重写toString(),get(),set()方法

    @Override
    public String toString() {
        return "Users{" +
                "userid=" + userid +
                ", username='" + username + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", password='" + password + '\'' +
                ", status=" + status +
                '}';
    }

    public Integer getUserid() {

        return userid;
    }

    public void setUserid(Integer userid) {

        this.userid = userid;
    }

    public String getUsername() {

        return username;
    }

    public void setUsername(String username) {

        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }
}

util包:工具类 

包括数据库连接池,分页工具类等 

DBUtilsPlus(德鲁伊数据库连接池)

package util;
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.*;
import java.util.List;
import java.util.ResourceBundle;

// BaseDao   将链接数据库的步骤进行封装,简化后续JDBC操作
public class DBUtilsPlus {


      // 德鲁伊 数据库连接池
    private static DruidDataSource dataSource;
    //1.定义常用的工具类(Protected修饰的属性或方法可以在子类中被调用)
    protected  Connection connection;
    protected PreparedStatement pps;
    protected ResultSet resultSet;

    static {
        dataSource=new DruidDataSource();
        ResourceBundle db = ResourceBundle.getBundle("db");
        dataSource.setUrl(db.getString("url"));
        dataSource.setDriverClassName(db.getString("driverClass"));
        dataSource.setUsername(db.getString("uname"));
        dataSource.setPassword(db.getString("upass"));
        //设置链接数量
       // dataSource.setInitialSize(30);
        dataSource.setMaxActive(8);
    }

    //3.得到链接对象
    protected  Connection getConnection(){
        try {
            connection = dataSource.getConnection();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return connection;
    }
  //4.创建通道
    protected  PreparedStatement getPps(String sql){
        getConnection();
        try {
            pps = connection.prepareStatement(sql);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return pps;
    }

    //5.绑定占位符的值  insert into A(sid,sname,sex,age .... ) values(?,?,?,?)
    //List 参数存储的是给占位符所赋的值
    //setParameter(new ArrayList())
    public  void setParameter(List list){
        try {
            if (list != null&&list.size()>0) { //对List集合进行有效性验证
                for (int i=0;i<list.size();i++) {
                    pps.setObject(i+1,list.get(i));
                }
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    //6.执行sql-增删改
    protected  int updateDB(String sql,List list){
        int i = 0;
        try {
            getPps(sql);//sql
            setParameter(list);//list-绑定的是占位符的参数
            i = pps.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return i;
    }

    //7.执行sql-查询
    protected  ResultSet selectDB(String sql,List list){

        try {
            getPps(sql);//sql
            setParameter(list);//list-绑定的是占位符的参数
            resultSet=pps.executeQuery();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return resultSet;
    }

    //8.关闭资源
    public void closeAll(){
        try {
            if (resultSet != null) {
                resultSet.close();
            }

            if (pps != null) {
                pps.close();
            }

            if (connection != null) {
                connection.close();
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

PageUtil分页工具类

package util;

public class PageUtil {

    //页码值
    public static final int PAGESIZE=3;
}

PageUtilPlus分页工具类升级版

package util;

import java.util.List;

public class PageUtilPlus<T> {
    //将分页相关数据定义在本类中
    private Integer pageIndex;//页码值
    private Integer pageSize=3;//每页显示条数
    private Integer totalCount;//总条数
    private Integer totalPages;//总页数
    private List<T> datalist;//查询的数据集合

    public Integer getPageIndex() {
        return pageIndex;
    }

    public void setPageIndex(Integer pageIndex) {
        this.pageIndex = pageIndex;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

    public Integer getTotalPages() {
        return totalCount%pageSize>0?totalCount/pageSize+1:totalCount/pageSize;
    }

    public void setTotalPages(Integer totalPages) {
        this.totalPages = totalPages;
    }

    public List<T> getDatalist() {
        return datalist;
    }

    public void setDatalist(List<T> datalist) {
        this.datalist = datalist;
    }
}

三:数据层dao

dao包 

与数据库的操作,增删改查等方法,及其实现类

数据类:UsersDao

package dao;

import bean.Users;

import java.util.List;

public interface UsersDao {
    //登录方法(根据用户名和密码查询用户信息)
    public Users Login(String username,String pass);
    //查询全部的方法
    public List<Users> selectAll(int pageIndex,int size,String uname,String usex);
    //查询总条数+模糊查询条件
    public int totalCount(String uname,String usex);
    //真删除(根据userid)
    public int deleteUser(int userid);
    //假删除
    public int deleteByid(int userid);
    //主键查询
    public Users selectById(int userid);
    //更新操作
    public int updateuser(Users users);
    //新增操作
    public int insert(Users users);
}
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
servlet+jsp+javaBean开发的网站书店(完整源码) java,jsp,web,servlet,j网上商城源码 package com.lovo.cq.shopping10_1.daoimpl; import com.lovo.cq.shopping10_1.common.DbUtil; import com.lovo.cq.shopping10_1.dao.OrderDao; import com.lovo.cq.shopping10_1.po.Order; import com.lovo.cq.shopping10_1.po.OrderItem; import com.lovo.cq.shopping10_1.po.User; import java.sql.*; import java.util.ArrayList; import java.util.List; public class OrderDaoImpl implements OrderDao { /** * 添加订单,并返回订一个单号 * @param order 一个订单 * @return int 返回一个整型的订单号 */ public int addOrder(Order order) { int orderId = 0; PreparedStatement pstmt_order = null; //用于对订单进行操作的预定义语句 PreparedStatement pstmt_item = null; //用于对订单项进行操作的预定义语句 ResultSet rs = null; DbUtil dbUtil = null; String sql_order = "insert into tb_order values(null,?,?,?,?,?,null,?)"; try { //事物处理 dbUtil = new DbUtil(); dbUtil.getCon().setAutoCommit(false); //将订单中的数据录入数据库 pstmt_order = dbUtil.getCon().prepareStatement(sql_order); pstmt_order.setString(1, order.getUser().getName()); pstmt_order.setString(2, order.getUser().getAddress()); pstmt_order.setString(3, order.getRecvName()); pstmt_order.setString(4, order.getUser().getPostcode()); pstmt_order.setString(5, order.getUser().getEmail()); pstmt_order.setInt(6,order.getFlag() ); pstmt_order.executeUpdate(); rs = pstmt_order.getGeneratedKeys();//取得主键 rs.next(); orderId = rs.getInt(1); //返回一个订单号 //将订单项中的数据录入数据库 String sql_item = "insert into tb_orderItem values(null,?,?,?,?,?)"; pstmt_item = dbUtil.getCon().prepareStatement(sql_item); List orderItem = order.getOrderItem();//得到所有订单项 for(int i=0;i<orderItem.size();i++) { OrderItem orderItems = (OrderItem)orderItem.get(i); pstmt_item.setInt(1, orderId); pstmt_item.setInt(2, orderItems.getBookId()); pstmt_item.setString(3, orderItems.getBookName()); pstmt_item.setFloat(4, orderItems.getPrice()); pstmt_item.setInt(5, orderItems.getBookNum()); pstmt_item.addBatch(); } pstmt_item.executeBatch(); dbUtil.getCon().commit(); } catch (SQLException e) { e.printStackTrace(); try { dbUtil.getCon().rollback(); } catch (SQLException e1) { e1.printStackTrace(); } }finally { try { rs.close(); pstmt_order.close(); pstmt_item.close(); dbUtil.close(); } catch (SQLException e) { e.printStackTrace(); } } return orderId; } //根据当用户的用户名查订单 public List selectOrder(String name) { List list = new ArrayList(); Order or = null ; DbUtil dao = new DbUtil(); PreparedStatement pre = null; ResultSet re = null; String sql = "select * from tb_order where name=?"; try { pre = dao.getCon().prepareStatement(sql); pre.setString(1, name); re =pre.executeQuery(); while(re.next()){ or = new Order (); User user = new User(); or.setOrderId(re.getInt("orderId")); user.setName(re.getString("name")); or.setRecvName(re.getString("recvName")); user.setAddress(re.getString("address")); user.setPostcode(re.getString("postcode")); user.setEmail(re.getString("email")); or.setUser(user); or.setOrderDate(re.getString("orderDate")); or.setFlag(re.getInt("flag")); list.add(or); } } catch (SQLException e) { e.printStackTrace(); } return list; } // 根据订单号查订单项 public List selectOrderItem(int id ) { List list = new ArrayList(); OrderItem ordetrItem = null ; DbUtil dao = new DbUtil(); PreparedStatement pre = null; ResultSet re = null; String sql = "select * from tb_orderItem where orderId = ? "; try{ pre = dao.getCon().prepareStatement(sql); pre.setInt(1, id); re =pre.executeQuery(); while(re.next()){ ordetrItem = new OrderItem(); ordetrItem.setBookId(re.getInt("bookId")); ordetrItem.setBookName(re.getString("bookName")); ordetrItem.setBookNum(re.getInt("bookNum")); ordetrItem.setOrderId(re.getInt("orderId")); ordetrItem.setOrderItemId(re.getInt("orderItemId")); ordetrItem.setPrice(re.getFloat("price")); list.add(ordetrItem); } }catch (Exception e) { } return list; } }
引用\[3\]:首先打开idae编译器,创建一个新项目,选择第一个 Java模块 ,然后配置好 JDK ,然后点击下一步。再点击下一步。然后取好项目名称即可完成创建。然后我们可以看到默认生成的项目结构。然后我们可以看到 src 这个文件,然后右键它,新建一个 packet(包)。然后在右击包,新建一个Java类,取名为helloworld。然后简单输出一句helloworld,并且点击绿色三角(开始键)运行项目。最后在控制台可以看到输出了helloworld,表示项目创建到运行成功。\[3\] 根据引用\[3\]中的描述,您可以按照以下步骤在idae中创建第一个javaweb项目: 1. 打开idae编译器。 2. 创建一个新项目,选择第一个Java模块。 3. 配置好JDK。 4. 点击下一步,然后取好项目名称即可完成创建。 5. 在默认生成的项目结构中,找到src文件,右键点击它,新建一个包。 6. 在包上右键点击,新建一个Java类,取名为helloworld。 7. 在helloworld类中编写代码,例如输出一句helloworld。 8. 点击绿色三角(开始键)运行项目。 9. 在控制台中可以看到输出了helloworld,表示项目创建到运行成功。 通过以上步骤,您就可以成功在idae中创建第一个javaweb项目了。祝您成功! #### 引用[.reference_title] - *1* *3* [跳出eclipse,用idea创建第一个Java项目——员工管理系统](https://blog.csdn.net/weixin_53231455/article/details/131004138)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [如何用idea创建第一个Javaweb项目(新版idea超详细解答)](https://blog.csdn.net/weixin_51964627/article/details/115796794)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值