【黑马旅游网】项目完结+未完成功能实现+个人总结+bug记录

22 篇文章 4 订阅
订阅专栏


算是经历了整整四天吧,前两天听课跟着视频敲。后两天自己手动完成剩余的其他若干功能,一路debug过来,收获许多,在此记录。希望自己永远保持热忱,加油。

源码地址:在本文的最下方!

一、项目配置问题

1、【maven项目目录结构】

可能一开始创建出来的项目文件目录形式不对,IDEA对目录结构有明显的要求,可以通过以下方法修改,当然其他情况也可以使用;

在这里插入图片描述

2、【修改目录属性】

在这里插入图片描述

后来发现可以直接右键点击目录,选择make directory as 效果是一样的。

在这里插入图片描述

3、【设置web源目录】

在这里插入图片描述

4、【maven低版本和servlet3.0冲突】

视频中使用的是Servlet3.0之后的版本,利用注解配置,我原来之前一直也是注解配置,想试着使用xml配置练练手。但是当我从xml到注解转换的过程中,遇到了一些问题,主要是Servlet版本和maven仓库版本冲突?具体我也不太清清除,过于真实,整个过程迷迷糊糊的,bug频出,也试过很多方法,真的不知道是哪个方法起了作用。

以下内容仅记录自己的纠错过程,首先我先去视频中的代码文件查看一下有偏差的地方:直接锁定是Servlet的版本问题,servlet3.0之后才可以使用注解,而我使用的是2.5。

接着,我参考了这个博客: Maven创建webapp骨架无法使用@WebServlet来实现注解配置解决方案,修改了maven仓库中的jar包的web.xml内容,可能是我操作的问题,并没有见效。

接着又在某个论坛上看到一个方法,可以重新指定xml的版本。【后面测试了几次,貌似和这个关系不大】

在这里插入图片描述
在这里插入图片描述

接着在pom.xml中添加servlet3.0之后的依赖,需要注意的是,要指定scope为provide,不然的话可能会产生冲突。【一定要注意找到填写正确坐标,有一次我把artifactId里写成servlet-api死活下载不来】

        <!--Servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

就像这样的冲突错误(下面两种都是因为scope没有指定privided的原因,因为添加上去就成功了)

com.travel.web.filter.CharacterFilter cannot be cast to javax.servlet.Filter

javax.servlet.ServletException: java.lang.LinkageError

中途会遇到缺少javaEE啥啥啥的,annotation包依赖缺少的错误,按照提示添加即可。

以上就是我从web.xml到注解配置的全过程,有点坎坷,但是今后遇到这样的问题,兴许会多一些思路吧。

5、【控制台输出乱码解决】

在这里插入图片描述

settings->Build,Execution,Deployment->Build Tools->Maven->Runner

设置VM-Option参数,指定虚拟机字符集:-Dfile.encoding=gb2312,如果不行可以设置称其他的。

二、前台代码

1、【发送异步请求】

//校验通过,ajax发送请求,提交表单数据  $("#registerForm").serialize()
$.post("registerUserServlet",$(this).serialize(),function (data) {

    if(data.flag){
        //注册成功,跳转成功页面
        location.href= "register_ok.html";
    }else{
        //如果错误,需要重新对验证码servlet请求一次,不然会导致会话中的验证码消失,图片虽然存在,但码已经没有了
		document.getElementById("check_img").src= "checkCode?"+new Date().getTime();
        //注册失败,给errormsg添加提示信息
        $("#error_msg").html(data.errorMsg);
    }
})

2、【校验手机号格式】

var reg_telephone = /^1(3|4|5|7|8)\d{9}$/;

3、【校验邮箱格式】

var reg_email = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;

4、【失去焦点事件】

注意此时将函数名作为Function对象传入,没有()。

$("#username").blur(checkUsername);

5、【前后端交互】

将信息封装为对象,是值得我学习的地方。

public class ResultInfo implements Serializable {
    private boolean flag;//后端返回结果正常为true,发生异常返回false
    private Object data;//后端返回结果数据对象
    private String errorMsg;//发生异常的错误消息
}

6、【html的onclick()事件】

参考: https://blog.csdn.net/ywl570717586/article/details/53130863,该博客分割线以下内容。

7、【jackson】

利用mapper对象操作json数据

import com.fasterxml.jackson.databind.ObjectMapper;

//将info对象序列化为json,返回客户端
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(info);
//将json数据写回客户端
//设置content-type
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);

8、【checkbox】

没有指定value属性得时候,传递过去的值为on!!!

9、【获取url中拼接的参数】

//根据传递过来的参数name获取对应的值
function getParameter(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i");
    var r = location.search.substr(1).match(reg);
    if (r!=null) return (r[2]); return null;
}

三、工具类的使用

利用【MailUtils】完成邮箱发送,不过得在邮箱设置里面申请开启服务。

利用【uuid工具类】完成随机激活码的生成。

利用【JedisUtils】完成redis客户端的获取,从而操作redis数据库。

利用【JDBCUtils】封装druid连接池,返回数据源对象。

四、路径分发思想

参考HttpServlet的service方法对请求的方式进行路径分发,对应不同的方法,完成不同的类似Servlet完成的功能,真的受益匪浅,回过头来思考原本需要定义那么多那么多的Servlet,现在完全封装到一个UserServlet中,妙啊。

【分发Servlet】

try {
    Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
    //调用方法
    method.invoke(this,req,resp);

} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
}

报错:java.lang.NoSuchMethodException

原因:调用方法是Protected修饰的。

解决:

  1. 忽略访问权限修饰符+暴力破解。

    try {
        //忽略访问权限修饰符
        Method method = this.getClass().getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
        //暴力破解
        method.setAccessible(true);
        //调用方法
        method.invoke(this,req,resp);
    
    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
        e.printStackTrace();
    }
    
  2. 直接将调用的方法权限修改为public即可。(看到这操作,忍不住笑了)

五、数据库问题

1、【连接问题】

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

报错原因:可能是因为MySQL服务没有开启,打开services.msc,开启MySQL就ok了。

类似的问题还有redis服务端未开启:redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out

2、【mysql语句】

报错:Every derived table must have its own alias

SELECT COUNT(*) FROM ( select * from department) AS aa; -- 语法如此,需要给子查询的表加上别名。

3、【缓存优化】

有些资源每次加载页面都会重新请求数据库数据来加载,对数据库的压力比较大,且这些数据不会经常发生变化,可以进行缓存优化。

  1. 在service层中,首先判断数据是否存在于redis缓存中,如果有的话直接从缓存中获取。
  2. 如果缓存中没有,例如第一次请求时缓存中还不存在,这就需要去数据库中查询,并将查询得到的数据添加进缓存。

https://blog.csdn.net/Sky_QiaoBa_Sum/article/details/105167978

六、个人对项目一些细微不足的优化

1、【Alibaba Java Coding Guidelines】

这个插件下载之后,才发现自己原来写的注释那么没有原则,哈哈,这个东西对于有强迫症的人来说,简直魔鬼无疑。

2、【抽取了验证码校验功能】

    private boolean checkCode(HttpServletRequest request,HttpServletResponse response) throws IOException {
        //验证码校验
        String check = request.getParameter("check");

        HttpSession session = request.getSession();
        String checkCodeServer = (String) session.getAttribute("checkCode");

        //保证验证码只能使用一次
        session.removeAttribute("checkCode");
        //验证码不相等
        if(checkCodeServer == null||!checkCodeServer.equalsIgnoreCase(check)){
			//对用户输入验证码进行判断
            if("".equals(check)){
                info.setErrorMsg("验证码不能为空");
            }else {
                info.setErrorMsg("验证码错误");
            }
            info.setFlag(false);
            response.setContentType(JSON_CONTENT_TYPE);
            String s = mapper.writeValueAsString(info);
            response.getWriter().write(s);
            return false;
        }
        return true;
    }

3、【关于list==null和list.size()==0】

这也是我在回头看代码的时候思考的一个问题,曾经在一些微信公众号上见过类似的科普。

有时候dao层可能会产生list集合为空的情况,比如没有查询到list,这时候如果返回null,在service层就需要做相应的非null判断,有时候可能会忘记。我最初的想法是初始化一个空的ArrayList,List<Category> list = new ArrayList();

![优化](E:\1JavaBlog\maven\pic\优化.png)![优化](E:\1JavaBlog\maven\pic\优化.png)    @Override
    public List<Category> findAll() {
        //List<Category> list = Collections.emptyList();
        List<Category> list = new ArrayList<>();
        try{
            String sql = "select * from tab_category";
            list = template.query(sql,new BeanPropertyRowMapper<>(Category.class));
        }catch (Exception e){
        }
        return list;
    }

在查找资料的过程中,发现Collections集合类有专门产生空集合的方法,例如List<Category> list = Collections.emptyList();,查看他的源码可以发现,实际上它创建一个静态内部类的对象private static class EmptyList<E>。更特别的是,产生的list并没有我们熟悉的add,remove等方法,对他进行这些操作会直接抛出UnsupportedOperationException异常。

https://blog.csdn.net/Sky_QiaoBa_Sum/article/details/105168546

七、实现未完成的功能

1、【加载完成时,让大图成为第一张】

在这里插入图片描述

2、【增加验证码为空的信息,并且刷新验证码】

避免图文不符。

在这里插入图片描述

3、【增加我的收藏及分页功能】

<a href="javascript:void(judgeUser())" id="myFavorite" class="collection">我的收藏</a>

//点击我的收藏
judgeUser = function (){
    //未登录
    if(user == null){
        alert("您尚未登录,请登录!")
        location.href = "http://localhost/travel/login.html";
    }else{
        //已登录a
        // alert(user.uid);
        var uid = user.uid;
        // http://localhost/travel/route/pageFavorite?uid=7
        location.href = "http://localhost/travel/myfavorite.html?uid=7";
    }
}

在这里插入图片描述

在这里插入图片描述

4、【增加了自动登录功能】

利用cookie技术,在客户端存储账号密码,实现自动登录。

5、【增加了热门推荐功能】

增加热门推荐,并连接路线具体信息。

在这里插入图片描述

6、【增加了首页三大种类旅游路线的显示功能】

在这里插入图片描述

但是上面对应的样式是真的不知道哪里改,经过debug,发现点击状态下会激活active样式是没错的,bug处在左边三栏和右边字体差了一格,希望知道怎么修复的小伙伴教教我!不然也太难受了。

注:在评论区Stevenlinc同学的提醒下,成功修改bug:修改index.html,将a链接放入span中即可。

                 <!-- Nav tabs -->
                 <ul class="jx_tabs" role="tablist">
                     <li onclick="popu()" role="presentation" class="active">
                         <span>
                             <a href="#popularity" aria-controls="popularity"
                                role="tab" data-toggle="tab">人气旅游</a>
                         </span>
                     </li>
                     <li onclick="newest()" role="presentation">
                         <span>
                             <a href="#newest" aria-controls="newest" role="tab"
                                data-toggle="tab">最新旅游</a>
                         </span>
                     </li>
                     <li onclick="theme()" role="presentation">
                         <span>
                             <a href="#theme" aria-controls="theme" role="tab"
                                data-toggle="tab">主题旅游</a>
                         </span>
                     </li>
                 </ul>

在这部分基础上,又优化了部分显示:

                    <ul class="jx_tabs" role="tablist">
                        <li onclick="popu()" role="presentation" class="active">
                                <a href="#popularity" aria-controls="popularity"
                                   role="tab" data-toggle="tab">人气旅游</a>
                        </li>
                        <li onclick="newest()" role="presentation">
                                <a href="#newest" aria-controls="newest" role="tab"
                                   data-toggle="tab">最新旅游</a>
                        </li>
                        <li onclick="theme()" role="presentation">
                                <a href="#theme" aria-controls="theme" role="tab"
                                   data-toggle="tab">主题旅游</a>
                        </li>
                    </ul>

css样式改变:

        <style >
            .jx_tabs li  a {
                display: inline-block;
                flex: 1;
                flex-direction: row;
                position: relative;;
            }
            .jx_tabs .active a {
                background-color: #ffc900;
                color: #fff;
            }
        </style>

这部分可以下载下来代码看看效果。

7、【增加了收藏排行榜展示分页以及查询功能】

在这里插入图片描述

在这里插入图片描述

这个部分在sql语句部分消耗了许多时间,表关系如下:

在这里插入图片描述

我的想法是,先根据tab_favorite中的rid进行分组,然后计算每个rid的数量,就是用户收藏的个数,按照降序排列,生成新的子查询表。然后在tab_route中寻找rid与子查询表rid相同的路线,并进行where子查询,模糊匹配路线名,以及金额大小,最后就可以获得:

由收藏次数降序排序的route,并且是完全符合搜寻条件的。

    @Override
    public List<Route> findRouteByRangePage(int start, int pageSize, String rname, int first, int last) {
        //String sql = "select * from tab_route where cid = ? limit ? , ?";

        String sql = "SELECT * FROM (SELECT * FROM (SELECT rid,COUNT(rid) AS COUNT FROM tab_favorite " +
                "GROUP BY rid ORDER BY COUNT(rid) DESC)AS aa)AS bb,tab_route t WHERE t.rid = bb.rid ";
        StringBuilder sb = new StringBuilder();
        //条件们
        List params = new ArrayList();
        //判断参数是否有值
        if(rname!=null&&rname.length()>0){
            sb.append("and t.rname like ?");
            params.add("%"+rname+"%");
        }
        if(first!=0){
            sb.append("and t.price > ? ");
            //添加?对应的值
            params.add(first);
        }
        if(last!=0){
            sb.append("and t.price < ? ");
            //添加?对应的值
            params.add(last);
        }
        //分页
        sb.append("limit ? , ? ");
        sql += sb.toString();
        params.add(start);
        params.add(pageSize);
        return template.query(sql,new BeanPropertyRowMapper<>(Route.class),params.toArray());
    }

面前能够完成需求,只是比较繁琐,不知有没有更好的方案,欢迎交流。

8、【一点小bug】

  1. js页面字符串比较大小需要注意:console.log("5">"123");结果是true,因为字符串比较回从前向后依次比较,如果希望数值比较,可以利用parseInt(first) > parseInt(last)
  2. 在查询搜索的时候,由于没有在本文框中输入信息,因此数据返回的时候,页码部分的调用的ajax请求函数的参数将为"",而不是null,调用favoriteRank(null, rname, first, last),会造成javascript:favoriteRank(2,,,)函数调用失败。我想了个很蠢办法:在调用之前对参数进行判断,如果为"",就认为赋null。
if (rname === "" && first === "" && last === "") {
    favoriteRank(null, null, null, null)
} else if (rname === "" && first === "") {
    favoriteRank(null, null, null, last)
} else if (rname === "") {
    favoriteRank(null, null, first, last)
} else {
    favoriteRank(null, rname, first, last)
}

这样子就可以解决了:

在这里插入图片描述

八、个人反思

  1. 总体来说在看视频学习的时候能够跟上思路,也许跟项目复杂度不高有些许关系。

  2. 在一些小知识掌握的不够扎实,导致许多细节的地方四处寻找博客,时间消耗较多。

  3. 还有一个明显的感受就是,听的时候都会,自己做的时候就有点犹豫,生怕哪里搞错。

  4. 自己也对项目本身不足之处进行优化,例如验证码刷新失效、某些页面跳转、代码部分重构等,这个过程还是挺锻炼我的排错纠错能力,debug渐渐熟练,原本的一些问题就越发容易解决。

  5. 最重要的一点:在敲代码前一定要确定自己的思路,有了思路,写起来真的很清晰!看老师从前台分析到后台,从servlet到service,再到dao,每一层的任务都划分得清清楚楚,真的值得我学习再学习。

  6. 最近在培养这种列提纲的意识,真的吃逻辑,但列出来之后就感觉自己还是能行的,无非就是消耗的时间多一点。

  7. 其实之前看过一些spring,看到一些依赖注入的问题,其实理解没有那么深刻的,又回过头来练练web项目,理解又更加深刻一些。

  8. 一起奋战的兄弟们,加油!


九、后续补充

有小伙伴在拿到项目之后,找到了小bug,如下:

在这里插入图片描述

然后出现了:xxx is not defined

在这里插入图片描述

因为在函数参数里面,在拼接的时候,需要用单引号将参数括起来

在这里插入图片描述

还可以优化一下:

var first_param = rname ===""?null:rname;
var second_param = first ===""?null:first;
var thrid_param = last ===""?null:last;
favoriteRank(null, first_param, second_param, thrid_param)

这样就可以解决了。

十、源码下载

之前码云链接失效,可能是因为我误把仓库设置成私有的了,之后我重新上传至码云仓库,需要代码的小伙伴可以进行下载。

下载地址: https://gitee.com/tqbx/itheima-travel-demo

如果觉得本文对你有帮助,请动动小手点个赞,哈哈。

ssm黑马旅游整合最终版2018
08-19
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>cn.itcast.parent</groupId> <artifactId>itcast-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>cn.itcast</groupId> <artifactId>travel</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </dependency> <!-- 连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> <!-- Jackson Json处理工具包 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> </dependency> </dependencies> <build> <plugins> <!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <port>8080</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
黑马旅游项目_java_web_基础
11-11
黑马旅游项目_java_web_基础
根据黑马旅游改进的毕业设计.mp4
05-20
是根据黑马旅游改进的毕业设计项目,有景点管理、轮播图管理、对景点收藏,删除和修改等功能,分了管理员和用户。
黑马旅游项目总结与反思
qq_37366618的博客
03-08 4486
黑马旅游项目总结 环境:IDEA+Maven 技术选型: Web层:Servlet,html,Filter,BeanUtils,Jackson Service层:Javamail,Redis,Jedis Dao层:MySQL,Druid,JdbcTemplate 完成功能: 注册功能: 1.1 表单校验: 在前台html页面中使用JavaScript,利用正则表达式完成表单校验。使...
easyui tabs按照标签页ID进行检索
略略略的博客
01-11 1692
默认的tabs只能根据index或者title检索,现在进行修改,看到的一个不错的教程,非改源代码,只要贴在js文件里就能用 $.extend($.fn.tabs.methods, { getTabById: function(jq,id) { var tabs = $.data(jq[0], 'tabs').tabs; for(var i=0; i<
旅游总结报告
05-27
旅游总结报告 中国的旅游人数随着经济的飞速发展和生活水平的不断提高,旅游站出现以来就因其“方便,丰富,全面”等优点而得到了广大旅游爱好者的欢迎。由于旅游借助互联,能够解决传统旅游业不能解决的适应游客行、吃、住、玩一体化的需求;同时还由于旅游也作为一个整体的商业生态链,涉及到旅行服务机构、酒店、景点景区、交通等等,利用互联可以将这些环节连成一个统一的整体,进而可以大大提高服务的水平和业务的来源。
BootStrap基础
刘索隆ʕ•ᴥ•ʔ的博客
08-29 322
模板: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 上述.
27.黑马旅游
khmff的博客
08-30 142
一、获取url中参数,和引入头部和尾部的html文件的js代码。一、获取url中参数,和引入头部和尾部的html文件的js代码。(注册:关注邮箱校验格式)(1)login.html。(serialize()方法)五、login、register、route_list。四、BaseServlet类。...
【Elasticsearch】黑马旅游实践
小皮皮LL的博客
11-20 3458
文章目录黑马旅游实践1.酒店搜索和分页1.1 需求分析1.2 定义实体类1.3 定义controller1.4 实现搜索业务2.酒店结果过滤2.1 需求分析2.2 修改实体类RequestParams2.3 修改搜索业务3.查询周边的酒店3.1 需求分析3.2 修改实体类3.3 距离排序API3.4 添加距离排序3.5 排序距离显示4.酒店竞价排名4.1 需求分析4.2 修改HotelDoc实体4.3 添加广告标记4.4 添加算分函数查询5.酒店实现聚合5.1 需求分析5.2 业务实现6.酒店数据自动补全
黑马旅游
热门推荐
飞鸿踏雪泥的博客
12-22 4万+
近期,跟着视频学到了黑马旅游案例,看完后,需要自己动手练一练,于是,整理出整个项目的开发步骤。大体框架是人家给好的,前端页面也是写好的(美滋滋)。我想,这也符合工作的实际情况,要是每个程序员都一步一步从零开始开发,那岂不会累死? 好了,开始进入正题。我把初始项目模板travel放在我的资源里面,有兴趣的可以下载(没办法,CSDN最少都要选1C币。。。)。 创建空的工程,导入maven项目 ...
travel-web-maven:黑马旅游全部源码+附加功能
03-23
travel-web-maven:黑马旅游全部源码+附加功能
黑马点评项目个人笔记+项目优化调整
最新发布
05-01
黑马点评项目个人笔记+项目优化调整
黑马点评详细总结(问题 + 踩坑点 + 解决思路)
06-15
黑马点评详细总结(问题 + 踩坑点 + 解决思路),可以用来配合做黑马点评项目,也可用来复盘总结,总之,非常好用,总结的非常到位。
黑马旅游初始项目文件
12-22
我本来不想要积分的,但是这个CSDN上传的资源最少都要选一个积分。
2018_IDEA版黑马旅游初始项目文件(含数据库)
03-02
2018黑马javaweb教学视频IDEA版本Java web一阶段案例黑马旅游初始项目资源,包含数据库.
SSM整合demo黑马旅游-------1.环境搭建
weixin_45958218的博客
04-20 952
0.写在前面的话 java小白,前段时间想要入门java,跟着黑马教程学习java,学习javaweb并搭建了黑马旅游;在学习了ssm整合之后,打算将黑马旅游用SSM框架整合,下面就正式开始: 0.1 开发环境 SSM idea2020.1.3 JDK 1.8 Tomcat 7.0 maven mysql数据库 0.2 前期项目 点击获取 项目准备好之后即可运行,如下图: 一、SSM整合环境搭建 1. Maven导入坐标(pox.xml) pox.xml <?xml version="1.0
黑马旅游项目总结与完善后端(非maven构建)
monkeylvjava
12-12 2612
项目介绍:仿黑马旅游项目不是用maven构建的项目,数据库连接池使用的是c3p0不是druid,操作操作sql用的不是jdbcTemplate而是Apache的DBUtlis工具,json工具用的是阿里的fastjson,redis并没有用到,后期学习了但是,确实不错!后期对项目进行了完善,其实只要认真学完了黑马教程的这期案例,尽管后面没有完善,后期所有的分析设计都和前面的大同小异。 我的完善...
基于SpringBoot+Vue的校园菜鸟驿站管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战
03-15 965
💗博主介绍:✌全粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗👇🏻精彩专栏 推荐订阅👇🏻2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐✅2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐✅Java精品实战案例《500套》微信小程序项目精品案例《500套》🌟文末获取源码+数据库🌟。
tab栏选项多条件搜索及文字两端对齐的实现,自定义封装组件
able_me的博客
08-04 499
文字两端对齐和tab多条件选择的自定义封装组件:代码如下:(复制需要点赞????) <template> <div> <!-- 活动中心页面 --> <div class="Cooperative_Unit"> <div class="Condition_search"> <div class="conditions"> <div class="heading
黑马旅游实训的主要任务
06-10
黑马旅游实训的主要任务是让学生通过实践项目,掌握Java Web开发的基本技术和流程,包括需求分析、数据库设计、前后端开发、测试和部署等环节。具体任务包括: 1.需求分析:学生需要根据实际需求,分析用户的需求和功能,确定系统的基本功能和特点。 2.数据库设计:学生需要根据需求分析,设计合适的数据库结构,包括表的设计、关系的建立等。 3.前后端开发:学生需要根据数据库设计,使用JSP和Servlet技术实现站的前后端功能,包括用户登录、浏览景点、预订酒店、支付等。 4.测试和部署:学生需要对项目进行系统测试,发现并修复潜在的问题,最终将项目部署到服务器上。 通过完成这些任务,学生可以掌握Java Web开发的基本技术和流程,同时提升自己的编程能力、团队协作和项目管理能力,为将来从事Java软件开发工作打下坚实的基础。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 大数据技术原理与应用第2版-林子雨版-课后习题答案 60527
  • 解决:java.lang.NoSuchMethodError: net.sf.jsqlparser.statement.select.Plain【Mybatis3.x + PageHelper】 11452
  • Windows10如何开放指定端口号 7199
  • SpringBoot实现文件上传功能详解 6178
  • 解决:win10 浏览器麦克风权限如何打开?打开也没用? 6108

分类专栏

  • 论文 13篇
  • Mac 5篇
  • Matlab 1篇
  • 操作系统
  • Java并发编程 37篇
  • 大数据
  • Java面向对象 54篇
  • 中间件 2篇
  • SpringBoot 28篇
  • SpringCloud 18篇
  • Java集合 9篇
  • MySQL 17篇
  • Redis 7篇
  • 安装配置 7篇
  • Java基础 10篇
  • JavaWeb 22篇
  • 踩坑日常 17篇
  • IDE使用技巧 11篇
  • 算法 14篇
  • Linux 14篇
  • maven 1篇
  • Mybatis 15篇
  • 前端 11篇
  • JWT 1篇
  • JVM 4篇
  • ElasticSearch 1篇
  • SpringMVC 9篇
  • Spring 15篇
  • 计算机网络 5篇
  • docker 2篇
  • python 3篇
  • Markdown 1篇
  • JDBC 4篇
  • Java I/O 2篇

最新评论

  • 【解决】:阿里云登录:命令终端提示符显示-bash-4.2#

    RatMarina: # cp /etc/skel/.bashrc /root/ cp /etc/skel/.bash_profile /root/ # cp: cannot stat '/etc/skel/.bash_profile': No such file or directory,请问这样怎么办啊表情包

  • Mysql超详细安装配置+客户端连接

    夤夜Shinya: 太强了,感谢大佬的优质博文,给你点赞了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • DeepGPS: Deep Learning Enhanced GPS Positioning in Urban Canyons

    天乔巴夏丶: 当时尝试复现, 加载模型的步骤就失败了

  • DeepGPS: Deep Learning Enhanced GPS Positioning in Urban Canyons

    m0_70901753: 请问博主代码复现难不难?

  • IDEA配置WEB项目+Tomcat+虚拟主机

    若天无风: 最后一个还是不行,直接就是连接不上

最新文章

  • Visio使用笔记
  • 【已解决】Error: No such file or directory @ rb_sysopen,brew install 时发生错误
  • DeepGPS: Deep Learning Enhanced GPS Positioning in Urban Canyons
2024年1篇
2023年10篇
2022年17篇
2021年43篇
2020年225篇
2019年23篇

目录

目录

评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司湘西阿里店铺运营报价湖州网站推广工具公司台州网站优化按天收费威海高端网站设计多少钱株洲营销网站报价眉山seo排名报价衡阳网站搭建推荐长葛网站优化广安设计公司网站价格惠州百姓网标王价格北海网站优化按天扣费哪家好通辽seo网站优化多少钱马鞍山网站设计模板报价铜川网站搜索优化安阳网页设计哪家好连云港SEO按天收费推荐济南企业网站建设哪家好宿迁阿里店铺运营报价白银网络广告推广哪家好朝阳外贸网站设计多少钱长沙SEO按天扣费哪家好湘潭网站开发价格吉安模板制作公司襄阳网页设计价格芜湖百姓网标王推广价格飞来峡建设网站价格丹竹头SEO按效果付费遂宁百度竞价包年推广报价福永百姓网标王推广哪家好凉山网站优化按天收费价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化