小言_互联网的博客

呼之欲出!期末课设IDEA整合SSM实现登录注册—轻松实现期末弯道超车,学霸直呼内行!

263人阅读  评论(0)

呼之欲出!期末课设整合SSM实现的登录注册—轻松实现期末弯道超车,学霸直呼内行!


目录

呼之欲出!期末课设整合SSM实现简单的登录注册

1 导读

2 结果欣赏

3 创建项目的具体过程

3.1 新建项目

3.2 导入jia包

3.3 自定义Classes目录

3.4 设置src资源目录结构

3.5 编写源代码以及配置文件

 3.6 配置web目录下相关资源与文件

3.7 类路径和资源路径的匹配

3.8 最终结构

3.9 运行结果

 4 最后终结


1 导读

如何整合SSM项目?如何在JavaEE课程中脱颖而出?如何掌握一些入门知识?

没错!不用思考了,跟我来,你想要找的这里应有尽有!

想在学期末取得圆满的成绩吗?

快来试试这个登录小案例,这里没有过于抽象的概念,也没有烧脑的语法结构,全是简单脱俗的操作步骤,楼下一年级学弟直呼有用,分分钟送上热门!

相信我,看完这篇文章你一定不会后悔,手把手教你搭建SSM项目,成功避坑!

赶快加入学习计划吧......

2 结果欣赏

 

3 创建项目的具体过程

3.1 新建项目

新建项目前需要配置相关的开发环境:


  1. 安装并配置了Tomcat,此处版本为tomcat9.0.35;
  2. 安装并配置了jdk,此处版本为jdk1.8.0_271(这里的版本号指的是jdk1.8版本的地271次更新版);
  3. 集成开发环境为IDEA2019企业版

(1)开始一个新的JavaEEweb项目,首先选择菜单栏File选项,->New->Project,开始新建一个新的项目:

(2) 选中java Enterprise,找到右边的选项列表,下拉找到Web Application选项并勾选,项目会默认在web目录下的WEB-INF下新建一个web.xml配置文件,完成后选择next:

 


(3)配置项目信息:

Project name 配置项目的名称
Project location 选择项目的地址

(5)以上信息完成后,点击Finsh后项目新建成功,我们可以看到loginDemo目录下有一个名为src子目录和一个web子目录;

1.其中src为资源目录,也就是说我们接下来的java代码均放在次目录下;

2.其次就是web子目录,里面包括一个index.jsp文件和WEB-INF子目录,其中index.jsp为tomcat运行默认启动页面,如需更改此配置可通过修改tomcat相关配置文件,一般我们不做修改!WEB-INF是java的WEB应用的安全目录,只对服务端开放,对客户端是不可见的。

3.2 导入jia包

因为我们这里是整合SSM,所以我们需要导入Spring、Mybatis、SpringMVC三者所依赖的相关jar包。

(1)此处我们在web\WEB-INF目录下新建一个libs目录用于存放jar包。

(2) 添加完需要的jar包到libs目录下后需要进行一步必要的操作:右击libs目录,弹出对话框后选择Add as Libray...选项,目的是将这些依赖的jar包添加到项目的依赖环境。

另一种添加jar包到依赖的方法是:先打开项目结构找到modul,选择Dependencies选项,单击+,再选择项目下的libs目录添加jar到依赖。

3.3 自定义Classes目录


关于这一步,其实我们需要思考两个问题:

  1. 既然idea默认了自定义classes目录为什么还需要自定义classes目录,会不会多此一举呢?
  2. 如何自定义classes目录,过程是怎么样的?

其实答案很简单:

  1. 自定义的classes目录后,我们可以将类路径和资源路径进行关联,减少不必要的问题的出现,有时候不正确的访问路径会造成404错误,处理起来也是比较头疼的,很多程序员就是因为这个404而放弃这一行选择去做销售的。
  2. 自定义classes的过程分三部,先在web/WEB-INF下新建一个classes文件夹,然后再项目结构中更改Modul中的path为这个classes。

1.自定义类路径,首先我们在web/WEB-INF目录下创建一个名为classes的目录:

2.第二步,选择File->Project Structure...打开项目结构:

3.第三步,选中Modules,loginExp(这是项目名称),找到Path后单击,更改output path,这里选择Use module compile output path(使用模块编译输出路径),然后找到web/WEB-INF/classes目录,将Output path以及Test output path均改为这个classes目录;

4.修改为下图所示,最后点击apply;

3.4 设置src资源目录结构

在src目录下创建main包,之后在main包下创建一个名为java和一个名为resources的子包,其中java包下对应所有的java类,而resources包下存放相关配置文件。

  • java包下应包含controllre层、dao层、持久层、以及service层。
  • resources包下应创建srping配置文件、SpringMVC配置文件、mybatis核心配置文件等。

1.创建结构如下:

2.定义文件类型:

IDEA 中需指定 Sources 文件夹、 Resources 资源文件夹,否则在新建 Java 类时不能建 Java 类型,且编译时不知道如何处理

3.指定java包为Sources文件夹,resources包为Resources资源文件夹,结果如下:
 

3.5 编写源代码以及配置文件

编写结果如下图所示:

 1.相关项目文件已打包到:https://download.csdn.net/download/qq_44140450/18944748

 2.这里只展示部分配置文件:

(1)mybatis.xml


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <typeAliases>
  7. <package name="com.myProject.pojo.User"/>
  8. </typeAliases>
  9. <mappers>
  10. <!--映射文件的位置-->
  11. <mapper resource="com/myProject/dao/mapperDao/userMapper.xml"/>
  12. </mappers>
  13. </configuration>

(2)springDao.xml


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation= "http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <!--配置数据源-->
  7. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
  8. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  9. <property name="url" value="jdbc:mysql://localhost:3306/testdata?characterEncoding=UTF8"/>
  10. <property name="username" value="root"/>
  11. <property name="password" value=""/>
  12. <property name="initialSize" value="1"/>
  13. <property name="minIdle" value="1"/>
  14. <property name="loginTimeout" value="100"/>
  15. <property name="maxActive" value="20"/>
  16. </bean>
  17. <!--配置SqlSessionFactory-->
  18. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  19. <property name="dataSource" ref="dataSource"/>
  20. <property name="configLocation" value="classpath:mybatis.xml"/>
  21. </bean>
  22. <!--配置映射文件Mapper对于的dao和mybatis工厂-->
  23. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  24. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  25. <property name="basePackage" value="com.myProject.dao"/>
  26. </bean>
  27. </beans>

(3)userService.xml


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context= "http://www.springframework.org/schema/context"
  5. xmlns:tx= "http://www.springframework.org/schema/tx"
  6. xsi:schemaLocation= "http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/tx
  11. http://www.springframework.org/schema/cache/spring-tx.xsd">
  12. <context:component-scan base-package="com.myProject.service.implUserService"/>
  13. <bean id="userServiceImpl" class="com.myProject.service.implUserService.UserServiceImpl">
  14. <property name="userDao" ref="userDao"/>
  15. </bean>
  16. <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  17. <property name="dataSource" ref="dataSource"/>
  18. </bean>
  19. </beans>

(4)userServlet.xml


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:mvc= "http://www.springframework.org/schema/mvc"
  5. xmlns:context= "http://www.springframework.org/schema/context"
  6. xsi:schemaLocation= "http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/mvc
  9. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  10. http://www.springframework.org/schema/context
  11. http://www.springframework.org/schema/context/spring-context.xsd">
  12. <context:component-scan base-package="com.myProject.controller"/>
  13. <context:component-scan base-package="com.myProject.service.implUserService"/>
  14. <mvc:annotation-driven/>
  15. <mvc:default-servlet-handler/>
  16. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  17. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  18. <property name="prefix" value="/WEB-INF/jsp/"/>
  19. <property name="suffix" value=".jsp"/>
  20. </bean>
  21. </beans>

(5)web.xml


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation= "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version= "4.0">
  6. <servlet>
  7. <servlet-name>dispatcherServlet </servlet-name>
  8. <servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class>
  9. <init-param>
  10. <param-name>contextConfigLocation </param-name>
  11. <param-value>classpath:applicationContext.xml </param-value>
  12. </init-param>
  13. <load-on-startup>1 </load-on-startup>
  14. </servlet>
  15. <servlet-mapping>
  16. <servlet-name>dispatcherServlet </servlet-name>
  17. <url-pattern>/ </url-pattern>
  18. </servlet-mapping>
  19. </web-app>

(6) applicationContext.xml


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context= "http://www.springframework.org/schema/context"
  5. xsi:schemaLocation= "http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context.xsd">
  9. <import resource="classpath:userServlet.xml"/>
  10. <import resource="classpath:springDao.xml"/>
  11. <import resource="classpath:userService.xml"/>
  12. </beans>

 3.6 配置web目录下相关资源与文件

1.index.jsp


  
  1. <%--
  2. Created by IntelliJ IDEA.
  3. User: 四原色
  4. Date: 2021/ 5/ 23
  5. Time: 10:36
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9. <html>
  10. <head>
  11. <meta charset="UTF-8">
  12. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  13. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  14. <title>登录 </title>
  15. <style>
  16. body {
  17. margin: 0;
  18. padding: 0;
  19. font-family: sans-serif;
  20. background-color: #68bcab;
  21. <%--background: url(${pageContext.request.contextPath}/img/bj.jpg) no-repeat;--%>
  22. background-size: 100% 100%;
  23. background-attachment: fixed;
  24. }
  25. .box {
  26. /*绝对定位 */
  27. position: absolute;
  28. /* 居中 */
  29. top: 50%;
  30. left: 80%;
  31. transform: translate(-50%, -50%);
  32. /* 整个登陆图层的宽度 */
  33. width: 450px;
  34. /* height: 650px; */
  35. /* 登陆图层内部元素跟图层边框的四周距离 */
  36. padding: 40px;
  37. /* 背景颜色 纯白 不透明度0.6 */
  38. background: rgba(46, 41, 82, 0.39);
  39. /* 设置box-sizing模式为border-box 这样内含图层的padding和border都会算在其大小中 */
  40. box-sizing: border-box;
  41. /* 添加阴影 x轴 y轴 blur 颜色*/
  42. box-shadow: 0 15px 20px rgba(0, 0, 0, .8);
  43. /* 设置圆角 */
  44. /* border-top-left-radius: 30px;
  45. border-bottom-right-radius: 30px; */
  46. }
  47. /* 设置box类中的h2标签属性 */
  48. .box h2 {
  49. margin: 0 0 50px;
  50. padding: 0;
  51. font-size: 48px;
  52. color: #fff;
  53. text-align: center;
  54. }
  55. /* 设置box类中的inputBox类为相对定位 */
  56. .box .inputBox {
  57. position: relative;
  58. width: 350px;
  59. height: 125px;
  60. }
  61. /* 设置box类中的inputBox类中的input标签属性 */
  62. .box .inputBox input {
  63. text-align: center;
  64. /* 宽度和父亲容器一致 */
  65. width: 100%;
  66. border-radius: 0px 0px 28px 28px;
  67. /* 上下内边距为10px 左右内边距为0px */
  68. padding: 10px 0 5px;
  69. /* 字体大小22px */
  70. font-size: 30px;
  71. letter-spacing: 1px;
  72. color: #fff;
  73. margin-bottom: 30px;
  74. border: none;
  75. border-bottom: 2px solid #fff;
  76. outline: none;
  77. background: transparent;
  78. transition: all 0.3s;
  79. }
  80. .box .inputBox input:hover {
  81. box-shadow: 0 10px 5px #a3c6c5;
  82. }
  83. /* 设置box类中inputBox类中的label标签 */
  84. .box .inputBox label {
  85. /* 绝对定位
  86. 注意到上面已经把inputBox设置成了position: relative
  87. 所以这里的label是相对于inputBox的绝对定位 而不是相对于body
  88. */
  89. font-size: 30px;
  90. position: absolute;
  91. top: 0;
  92. left: 0;
  93. padding: 10px 0;
  94. color: #fff;
  95. pointer-events: none;
  96. /* 设置label标签的过渡动画时间为0.8秒 */
  97. transition: .8s;
  98. }
  99. .box .inputBox input:focus~label {
  100. /* Username提示向上移动20px 并且缩小字体 修改颜色 */
  101. top: -25px;
  102. left: 0;
  103. font-size: 22px;
  104. /* color:rgb(225, 240, 137); */
  105. color: hsl(251, 62%, 34%);
  106. }
  107. /* 监听input内容有效 保持label元素的属性 */
  108. .box .inputBox input:valid~label {
  109. top: -25px;
  110. left: 0;
  111. font-size: 22px;
  112. /* color:rgb(225, 240, 137); */
  113. color: hsl(251, 62%, 34%);
  114. }
  115. /* 选择box类中type为submit的input标签 */
  116. .box input[type="submit"] {
  117. font-size: 30px;
  118. border: none;
  119. outline: none;
  120. color: #fff;
  121. background: #ee6d6d;
  122. padding: 10px 20px;
  123. cursor: pointer;
  124. border-radius: 48px;
  125. /* 相对定位 享对于其父亲box类*/
  126. position: relative;
  127. /* 实现按钮水平居中 */
  128. /* 从父亲的左边宽度50%处开始 */
  129. left: 50%;
  130. top: 70%;
  131. /* 把元素沿着横向(x轴)移动自身宽度的50% */
  132. transform: translate(-50%);
  133. transition: all 0.3s;
  134. }
  135. .box input[type="submit"]:hover {
  136. transform: scale(1.1) translate(-45%);
  137. box-shadow: 0 0 12px #ee6d6d;
  138. }
  139. .point {
  140. position: absolute;
  141. top: 10%;
  142. left: 90%;
  143. color: #fff;
  144. }
  145. .dotted {
  146. top: 227px;
  147. left: 193px;
  148. width: 8px;
  149. height: 8px;
  150. background-color: #5000e4;
  151. border-radius: 50%;
  152. }
  153. .point div[class^="pulse"] {
  154. border-radius: 50%;
  155. position: absolute;
  156. top: 50%;
  157. left: 50%;
  158. transform: translate(-50%, -50%);
  159. width: 8px;
  160. height: 8px;
  161. box-shadow: 0 0 12px #8a02fa;
  162. animation: purse 1.2s linear infinite;
  163. }
  164. @keyframes purse {
  165. 0% {}
  166. 70% {
  167. width: 40px;
  168. height: 40px;
  169. opacity: 1;
  170. }
  171. 100% {
  172. box-shadow: 0 0 12px hsl(286, 89%, 40%);
  173. width: 70px;
  174. height: 70px;
  175. opacity: 0;
  176. }
  177. }
  178. .point div.pulse2 {
  179. animation-delay: 0.4s;
  180. }
  181. .point div.pulse3 {
  182. animation-delay: 0.8s;
  183. }
  184. .box a {
  185. position: relative;
  186. display: block;
  187. left: 0;
  188. margin-top: 40px;
  189. text-align: right;
  190. color: #fff;
  191. font-size: 18px;
  192. transition: all 0.5s;
  193. text-decoration: none;
  194. }
  195. .box a:hover {
  196. transform: translateX(-2%) scale(1.1);
  197. }
  198. </style>
  199. </head>
  200. <body>
  201. <div class="box">
  202. <h2>Login </h2>
  203. <form action="${pageContext.request.contextPath}/submit/loginMainPage" method="post">
  204. <div class="point">
  205. <div class="dotted"> </div>
  206. <div class="pulse1"> </div>
  207. <div class="pulse2"> </div>
  208. <div class="pulse3"> </div>
  209. </div>
  210. <div class="inputBox">
  211. <input type="text" name="ACCOUNT" autocomplete="off" required="required">
  212. <label>填写账号 </label>
  213. </div>
  214. <div class="inputBox">
  215. <input type="password" name="PASSWORD" autocomplete="off" required="required">
  216. <label>填写密码 </label>
  217. </div>
  218. <input type="submit" name="" value="登 录">
  219. </form>
  220. <a href="${pageContext.request.contextPath}/submit/register">没有账号?去登录 </a>
  221. </div>
  222. </body>
  223. </html>

2.register.jsp


  
  1. <%--
  2. Created by IntelliJ IDEA.
  3. User: 四原色
  4. Date: 2021/ 5/ 23
  5. Time: 11:04
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9. <html>
  10. <head>
  11. <meta charset="UTF-8">
  12. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  13. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  14. <title>注册 </title>
  15. <style>
  16. *{
  17. margin: 0;
  18. padding: 0;
  19. }
  20. body{
  21. background-color: #191919;
  22. }
  23. .box{
  24. position: absolute;
  25. width: 25%;
  26. height: 60%;
  27. top: 50%;
  28. left: 50%;
  29. transform: translateY(- 50%) translateX(- 50%);
  30. background-color: #fff;
  31. box-shadow: 0 0 12px #333;
  32. border-radius: 8px;
  33. }
  34. .cbox{
  35. position: absolute;
  36. width: 25%;
  37. height: 60%;
  38. top: 50%;
  39. left: 50%;
  40. transform: translateY(- 50%) translateX(- 50%);
  41. background-image: linear-gradient( 315deg,# 03a9f4,#ff0058);
  42. filter: blur( 30px);
  43. }
  44. .box h2{
  45. margin: 40px;
  46. font-size: 36px;
  47. }
  48. .box input{
  49. position: relative;
  50. width: 80%;
  51. height: 35px;
  52. margin-top: 50px;
  53. top: 50%;
  54. left: 50%;
  55. letter-spacing: 1px;
  56. outline: none;
  57. border: none;
  58. border-bottom: 2px solid #666;
  59. transform: translateY(- 50%) translateX(- 50%);
  60. font-size: 24px;
  61. }
  62. .box input [type="submit"]{
  63. width: 60%;
  64. height: 50px;
  65. top: 80%;
  66. margin-bottom: 15px;
  67. border-radius: 8px;
  68. transition: 0.3s;
  69. color: #fff;
  70. background-color: #036ba7;
  71. border-bottom: 0;
  72. }
  73. .box input [type="submit"] :hover{
  74. box-shadow: 0 0 12px #910037;
  75. }
  76. </style>
  77. </head>
  78. <body>
  79. <div class="cbox"> </div>
  80. <div class="box">
  81. <h2>Register </h2>
  82. <form action="${pageContext.request.contextPath}/submit/registerMainPage" method="post">
  83. <input type="text" name="ACCOUNT" autocomplete="off" required="required" placeholder="填写账号">
  84. <input type="password" name="PASSWORD" autocomplete="off" required="required" placeholder="填写密码">
  85. <input type="password" name="ackPASSWORD" autocomplete="off" required="required" placeholder="确认密码">
  86. <input type="submit" name="" value="注 册">
  87. </form>
  88. </div>
  89. </body>
  90. </html>

3.7 类路径和资源路径的匹配

相关资料查看文章:https://blog.csdn.net/qq_44140450/article/details/116952582

 

 

 

3.8 最终结构

 3.9 运行结果

运行结果如下,界面比较简单:

 4 最后总结

 建一个SSM项目事实上并非难事,最难得问题其实是在建项目过程中去解决遇到的问题,如果比较粗心的话,经常会犯一些500或者404错误,随着项目的逐渐壮大,也许更多的问题将接踵而至,但是这一切你均可不必惊慌,这条代码之路一路有我陪伴!只要思想不滑坡,方法总比困难多!

喜欢这篇文章吗?喜欢的话不要忘记点赞加收藏哦!

有问题?评论区见,我在这里等你,不见不散!


转载:https://blog.csdn.net/qq_44140450/article/details/117134958
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场