javaWeb银行管理系统---java课设,javaWeb入门项目,文末免费分享源码

目录

1.主要技术栈

2.最终效果图

3.学习该项目前提知识点提示

4.部分代码展示(文末有源码链接)

5.结语


1.主要技术栈

mybatis+servlet+freemarker+layui

辅助功能:druid+logback

2.最终效果图

 在此给出部分子模块功能图:

 

 具体功能模块划分见下图:

 3.学习该项目前提知识点提示

1.java基础

2.javaWeb基础知识,包括但不限于servlet,tomcat,三件套基础html5,css,js,以及jsp,freemarker等等知识

3.mysqsl基础增删改查以及简单的多表关联查询

4.mybatis框架的基本使用方法,最好先学会jdbc的基本操作

4.部分代码展示(文末有源码链接)

先放一张项目结构图:

 此处的代码先供大家参考,如果你觉得有学习价值可以去文末拿源码。

@WebServlet(name = "IndexServlet", value = "/index")
public class IndexServlet extends HttpServlet {
    private UserService userService = new UserService();
    private PersonService personService = new PersonService();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        //得到当前登录用户
        User user = (User) session.getAttribute("login_user");
        Person person = personService.selectByIdentityId(user.getIdentityId());

        //获取登录用户可用登录模块列表
        List<Node> nodeList = userService.selectNodeByUserId(user.getUserId());
        //放入请求属性
        request.setAttribute("node_list",nodeList);
        session.setAttribute("current_person",person);  //这里的employee如果只是为index.ftl服务,则放入请求也可以,但由于考虑到实际上用户信息会在多处使用到,故提示其生存周期,放入session中
        //请求派发至ftl进行展现
        request.getRequestDispatcher("/index.ftl").forward(request,response);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

@WebServlet(name = "LoginServlet", value = "/check_login")
public class LoginServlet extends HttpServlet {
    private UserService userService = new UserService();
    Logger logger = LoggerFactory.getLogger(LoginServlet.class);  //日志输出组件
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //接收用户输入
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        Map<String,Object> result = new HashMap<>();
        //调用业务逻辑
        try {
            User user = userService.checkLogin(username,password);
            result.put("code",0);  //编码为0,登录成功
            result.put("message","success");
            result.put("redirect_url","/index");  //登录成功,放入跳转的url地址
            req.getSession().setAttribute("login_user",user);  //将用户登录信息存放到当前会话窗口中
        }catch (BussinessException ex){
            logger.error(ex.getMessage(),ex);
            result.put("code",ex.getCode());
            result.put("message",ex.getMessage());
        }catch (Exception ex){
            logger.error(ex.getMessage(),ex);
            result.put("code",ex.getClass().getSimpleName());
            result.put("message",ex.getMessage());
        }
        //返回json结果
        String json = JSON.toJSONString(result);
        resp.getWriter().println(json);

    }
}
public class DruidDataSourceFactory extends UnpooledDataSourceFactory {

    public DruidDataSourceFactory(){
        this.dataSource = new DruidDataSource();  //将mybatis的数据源指向第三方阿里巴巴的druid连接池
    }

    @Override
    public DataSource getDataSource() {        //注意是否要重写getDataSource取决于具体的连接池产品,druid连接池由于要进行初始化检查,强制要求重写,但对诸如c3p0的产品则没有这个要求 是否重写取决
        try {
           ((DruidDataSource)this.dataSource).init();  //初始化druid数据源
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);

        }
        return this.dataSource;

    }

}
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory = null;
    static {
        Reader reader = null;
        try {
            reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        }catch (IOException e){
            throw new ExceptionInInitializerError(e);
        }
    }


    /**
     * 进行数据的查询操作
     * @param func
     * @return
     */
    public static Object excuteQuery(Function<SqlSession,Object> func){  //传入一个函数式接口,传入参数为sqlSession,返回值为object;
        SqlSession sqlSession = sqlSessionFactory.openSession();
        System.out.println(sqlSession);
        try {
            Object obj = func.apply(sqlSession);  //func中有个apply代表执行代码,至于执行什么交由外界传入,此外这里确保了连接的关闭
            return obj;
        }finally {  //确保连接一定会关闭
            sqlSession.close();
        }
    }


    /**
     * 进行数据的写操作,对比查询就是增加了事务的控制
     * @param func   要执行的写操作代码块
     * @return  要返回的结果
     */
    public static Object excuteUpdate(Function<SqlSession,Object> func){  //传入一个函数式接口,传入参数为sqlSession,返回值为object;
        SqlSession sqlSession = sqlSessionFactory.openSession(false);
        System.out.println(sqlSession);
        try {
            Object obj = func.apply(sqlSession);  //func中有个apply代表执行代码,至于执行什么交由外界传入,此外这里确保了连接的关闭
            sqlSession.commit();
            return obj;
        }catch (RuntimeException e){
            sqlSession.rollback();
            throw e;
        }finally {  //确保连接一定会关闭
            sqlSession.close();
        }
    }



}

5.结语

        本项目是本人大二做的java课程设计,在此发帖纪念一下,同时也非常高兴分享给各位,希望能对你们的java学习有所帮助.如果大家有什么问题,也欢迎评论或私信讨论,共同进步!

百度网盘提取码:(里面有建表语句,注意数据库及web服务器的配置因人而异,要根据你的环境做修改)

链接:https://pan.baidu.com/s/1GVm9YQk0TRXmsD_0Xje19g 
提取码:zjxv 
--来自百度网盘超级会员V4的分享

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值