黑马旅游网项目总结
项目启动
这里使用的是事先准备的项目模板,然后在这个基础上进行代码编写
首先导入项目模板
直接将项目文件夹放入指定的位置,然后在idea中打开,直接使用maven的tomcat7:run命令运行;
在这个过程中遇到一些问题:
1.由于项目比较老,所以遇到jar包下载不到,或者下载不全的问题首先是
这里显示我的maven的包出了一些问题,原来的pom文件是:
<!--maven插件-->
<plugins>
<!--jdk编译插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
后来改为
<!--maven插件-->
<plugins>
<!--jdk编译插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
2.经常会出现tomcat端口被占用:
问题出在这里:
<!--tomcat插件-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<!-- tomcat7的插件, 不同tomcat版本这个也不一样 -->
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<!-- 通过maven tomcat7:run运行项目时,访问项目的端口号 -->
<port>83</port>
<!-- 项目访问路径 本例:localhost:9090, 如果配置的aa, 则访问路径为localhost:9090/aa-->
<path>/travel</path>
</configuration>
</plugin>
</plugins>
这里更改一下端口号即可,如上所示,网站访问的地址为:
http://localhost:83/travel/
3.还有一个bug
目前这个bug查了一下应该是版本的问题,但是不影响具体的使用,所以忽略了。
技术选型
1 Web层
a)Servlet:前端控制器
b)html:视图
c)Filter:过滤器
d)BeanUtils:数据封装
e)Jackson:json序列化工具
2 Service层
f)Javamail:java发送邮件工具
g)Redis:nosql内存数据库
h)Jedis:java的redis客户端
3 Dao层
i)Mysql:数据库
j)Druid:数据库连接池
k)JdbcTemplate:jdbc的工具
4 创建数据库
这里直接使用项目中准备好的sql命令创建即可
注册模块的实现
页面展示:
功能分析
首先明确的是:由于项目中使用的都是html页面,所以必须使用ajax去提交数据,如果使用表单提交,每次提交都会刷新页面。
首先在页面中利用js结合正则表达式对输入进行限制,如果不满足条件就将输入框变为红色,离开焦点的时候也同样对输入框中的内容进行判断。这里有一点需要非常注意
如果提交表单的按钮中有设定属性为submit,一定会按照提交表单的方式提交数据,而不走ajax的判断语句,解决办法是将按钮的type属性设置为button,然后设置一个点击事件。在点击事件中设置ajax的逻辑语句
上图中可以看到使用$("#registerForm").serialize()方法,可以将表单中的数据转换成json格式数据。
邮件激活功能模块
功能分析
在之前的注册功能模块中在UserService中的registerUSer方法中去设置一个激活码以及将状态码设置成‘N’,code使用UUid工具类,获得一个独一无二的激活码
public boolean registerUser(User user) {
//1.check user
if(!dao.checkUser(user)){
//2.save user
user.setStatus("N");
user.setCode(UuidUtil.getUuid());
dao.saveUser(user);
MailUtils.sendMail("XXXXXXXXXX@qq.com","请点击<a href='http://localhost:83/travel/activeUserServlet?code="+user.getCode()+"'"+">激活</a>","激活邮件");
return true;
}
else return false;
}S
用户通过点击这个超链接之后会将code数据传给activeUserServlet,在该servlet中进行判断,如果激活码为空,就不去进行后面的工作了,反正只是浪费资源,如果不为空就根据激活码去查询对象,如果有该对象,就将状态码改为‘Y’并且跳转到提示登录的界面,这里需要注意一点:
需要给工具类中的这两个变量赋值,第一个是发送邮件的邮箱地址,第二个是密码,但是我在实际操作过程中发现发送不出去,原来是需要去官网申请一个授权码,然后在密码一栏输入授权码即可,具体操作过程详见:
https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
总结
注册模块和邮箱模块实际上实现不是很难,不过项目导入经常遇到一些奇怪的问题。