在这之前,需要已经安装好STS(其实也不需要安装,下载下来解压后就能用)、jdk1.8。
之所以用Maven,是因为如果按照传统地方法把jar包都放在lib文件夹,项目变多之后,工作区难免会存在许多重复文件。使用Maven,在项目复杂后可以很方便地管理各种jar包(尽管现在只是一个登陆注册功能),比如搭建ssm框架和Spring Boot框架等。
打开环境变量配置界面,新建一个变量,命名为M2_HOME,值为解压的maven目录,比如我的为D:\Program Files\apache-maven-3.2.2.
接着在path变量中新增
%M2_HOME%\bin
确认保存后,打开cmd,输入mvn -v,出现以下界面则安装成功:
Maven的核心程序并不包含具体功能,仅负责宏观调度,具体功能由插件来完成。Maven核心程序会到本地仓库中查找插件。如果本地仓库中没有就会从远程中央仓库下载。此时如果不能上网则无法执行Maven的具体功能。配置本地仓库可以解决这个问题。
本地仓库我后面也会打包(包含本次项目所有的jar包)。
下载解压后如图:
打开刚才安装的Maven核心程序解压目录下的settings.xml文件:
安装目录\apache-maven-3.2.2\conf\settings.xml
在注释的localRepository标签下添加解压的本地仓库位置,如:
<localRepository>D:\Program Files\RepMaven</localRepository>
指定核心程序的位置:
Window→Preferences→Maven→Installations
指定核心程序配置文件的位置:
Window→Preferences→Maven→User Settings
修改Maven工程默认的JDK版本:
找到并打开settings.xml,在profiles标签里加入以下代码:
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
其中JDK的版本根据自身的情况填写。
添加后保存退出,重启STS。以上就安装并配置完Maven了。
在STS中右键新建一个Maven项目,打包方式为war。
其中Group Id、Artifact Id、Version俗称坐标,就是创建的项目在maven本地仓库的目录位置。Artifact Id为项目的名字。因为是web项目,所以打包方式选择war。
新建项目后,项目会有小红叉,是因为没有前端的WebContent目录,此时右击项目->Build Path->Configure Build Path->Project Facts,把Dynamic Web Module取消勾选,点击Apply,然后再勾选Dynamic Web Module,点击Apply and Close,这样WebContent目录就生成了。
右击项目->Build Path->Add Libraries->Server Runtime->Apache Tomcat v8.5->finish,此时Tomcat相关jar就导入进来了。
因为要使用Spring,所以要导入spring-context包,maven会相应地把spring-aop、spring-beans、spring-core、aopalliance、commons-logging、和spring-expression自动从本地仓库导进来。
然后导入连接数据库的包:druid-1.1.9.jar、mysql-connector-java-8.0.19.jar,进行数据库操作的包commons-dbutils-1.6、还有发送邮件的包mail.jar。
Ctrl+c,maven就会通过groupId、artifactId、vsersion来导入包。
在src/main/resources下创建两个Spring Bean Configure File(右键new没有就点击other搜索),一个命名为applicationContext.xml,用来配置自动扫描类。
另一个命名为dbBean.xml,用来引入外部属性文件,配置数据源:
数据源文件为druid.properties,如图:
mysql用户名和密码填自己的。。
箭头指向处是项目所用的数据库名,我这里是login。
数据库表在后面会导出。
在src/main/java创建com.chenchuanfu.login(可以自己设置包名,不过需要相应修改applicationContext.xml中的base-package、各个类前面的packge和import的包路径)包,然后进一步创建五个子包bean、dao、service、servlet、utils。
在bean中创建基础类User和Questionnaire,在类上用@Component注解标注。
在dao中创建接口UserDao以及实现类UserDaoImpl,用来进行数据库的增删改查,在UserDaoImpl上使用@Repository注解;
创建QuestionnaireDao和QuestionnaireDaoImpl来进行问卷的保存,在QuestionnaireDaoImpl上使用@Repository注解;
创建BasicDao和BasicDaoImpl来提供数据库的更新、获取查询的功能,在BasicDaoImpl上使用@Repository注解。
接口如图:
UserDao.java
QuestionnaireDao.java
BasicDao.java
在service中创建UserService和UserServiceImpl,用来处理复杂逻辑,在UserServiceImpl上使用@Service注解,在实现类中通过@Autowired注解来获取持久化层的对象。
在servlet中创建处理各种前端请求的servlet,通过ioc容器来获取服务层的对象。
LoginServlet.java
特别提醒:在服务层有发送邮件的功能,这需要在相应的邮箱官网获取STMP权限,获得16位STMP口令,具体请自行百度,需要自己修改的地方如下:
其中JDBCUtils类用来获取数据库连接、释放连接。
JDBCUtils.java
我在MyIOC类中把ioc容器定义为静态属性,这样不用每次处理请求都创建一个容器,因为我测试时响应是很慢的。把ioc定义成静态属性,整个项目就只需创建一个,在servlet直接调用就行。
以上步骤完成了所有后端代码。
接下来是jsp、css、js的编写。
页面有四个:
login.jsp、signup.jsp、survey.jsp和reset_password.jsp,每个页面都有相应的css和js.
**每一个jsp页面中都有一个base标签,里面写着我项目根路径的url,请修改为自己的URL。**如login.jsp中的:
前端结构如图:
以上步骤完成了整个项目的编写,接下来是打包项目。
因为是maven项目,所以要通过maven来打包。
如果要打包,请先在src/main/webapp里面创建一个文件夹WEB-INF,在文件夹里面创建一个web.xml,不需要写入代码。
然后在pom.xml中的filename标签修改自己打包后的项目名字。
然后右键项目->Run As->Maven clean->Maven install。
打包成功后在项目的target目录下。
把war包通过Xftp传到阿里云Tomcat的webapps目录下,自动解压后就能访问了。