0


【spring】集成Web、druid、jdbcTemple实现免登录时长两天半

CSDN话题挑战赛第2期
参赛话题:学习笔记

*学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?

文章目录

🌕博客x主页:己不由心王道长🌕!
🌎文章说明:spring🌎
✅系列专栏:spring
🌴本篇内容:使用spring、web监听器、过滤器+servlet+druid+mybatis实现免登录时长两天半(对所需知识点进行选择阅读呀~)🌴
☕️每日一语:人生寂寞是一种力量。人经得起寂寞,就能获得自由;耐不住寂寞,就会受人牵制。☕️
🕤作者详情:作者是一名双非大三在校生,喜欢Java,欢迎大家探讨学习,喜欢的话请给博主一个三连鼓励。🕤

🚩前言

  • 凡事自己多动手动脑、听取他人优秀的观点,做一个会学习的人。

🚩一、创建项目框架

在这里创建一个maven工程,选择web模板,JDK选择1.8:

在这里插入图片描述

创建maver工程以后,可能目录结构并不完整,接下来我们要构建一个完整的目录结构,只有完整的目录结构,在后面部署在tomcat服务器上时才能正常使用。

补全maven目录结构:打开项目—>找到src目录—>选中右键—>选择新建(new)—>选择目录—>重复四次,直到把目录补全。

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

至此我们就完全了一个工程的创建。

🚩二、导入前端页面资源

要实现免登录时长两天半,我们得找到前端资源,并导入我们的项目中。

前端资源怎么找?我这里提供了本次项目的前端资源,需要的可以私信我。或者直接搜索jQuery之家也可以获取相应资源

导入到哪里? 导入到项目下的Webapp目录下
在这里插入图片描述

前端效果展示

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

前端页面分析:可以看到两个页面是相互跳转的,当在登录页面填好密码和账号以后,点击登录就会向下经过Web层调控,然后调用Sevice。。。往下查询数据库并返回查询结构,有用户存在则跳转到欢迎页,没有则跳转登录页。相应的注册成功之后也跳转到登录页面。在这个过程中使用过滤器过滤,没有登录则不能访问欢迎页,访问则直接跳转到登录页。
在这里插入图片描述
通过分析,前端页面要执行的主要操作有两个个。一个是登录(login)、一个是注册(register)。

在这里插入图片描述

🚩三、pom.xml依赖坐标导入

在原先免登录时长两天半的依赖上,本次结合了spring方法,使用的是xml格式开发项目。需要导入spring依赖、测试依赖和spring集成web依赖。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" 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><groupId>org.example</groupId><artifactId>spring-web</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><!--    添加测试依赖--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--    添加mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version></dependency><!--   添加servlet依赖--><!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><!--    添加MySQL依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!--    添加jsp依赖--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.2.1</version><scope>provided</scope></dependency><!--   添加el表达式依赖--><dependency><groupId>javax.el</groupId><artifactId>javax.el-api</artifactId><version>3.0.0</version></dependency><!--      添加jstl标签库依赖--><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency><!--添加druid依赖--><!-- https://mvnrepository.com/artifact/com.alibaba/druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><!--添加spring依赖、添加core就行了。core包含了依赖注入和控制反转--><!-- https://mvnrepository.com/artifact/org.springframework/spring-core --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.22</version></dependency><!--添加spring-web集成--><!-- https://mvnrepository.com/artifact/org.springframework/spring-web --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.3.22</version></dependency></dependencies></project>

🚩四、Web层(controller)层搭建

通过上面的分析,我们先创建两个servlet,即LoginServlet、RegisterServlet。实现对应接口,重写doGet、doPost方法,并在doPost方法中调用doGet方法。
在这里插入图片描述

🚩五、Spring、Spring集成Web

要使用Spring、大致分为以下几步:

导入Spring依赖坐标:pom.xml文件已经导入完毕。

② **编写核心配置文件applicationContext.xml:**不一定叫这个名儿。只是约定俗成而已,但是这个见名知意,推荐使用

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"></beans>

Spring集成Web也分为下面几步:
导入Spring-web依赖坐标:pom.xml文件已经导入完毕。
在这里插入图片描述

配置ContextLoaderListener监听器
首先思考一个问题一个问题,我们要用到Spring,那么Spring总得创建吧?怎么创建呢?是调用一次就new一次吗?显然不是,那到底什么时候创建,放在什么地方才能保存持久!!!?
答:使用监听器在加载项目的时候创建,存储在应用域,应用域范围广
在这里插入图片描述

在web层调用Spring

怎么获取Spring的上下文对象,Spring-Web提供了一个工具WebApplicationContextUtils供使用者获得应用上下文对象,想使用,直接调用,一遍获取前面都要加一个get,所以方法是getApplicationContext

packagecom.bipt.controller;importcom.bipt.service.UserService;importorg.springframework.context.ApplicationContext;importorg.springframework.web.context.support.WebApplicationContextUtils;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;/**
* @author 不止于梦想
* @date 2022/10/7 22:55
*/publicclassLoginServletextendsHttpServlet{@OverrideprotectedvoiddoGet(HttpServletRequest req,HttpServletResponse resp)throwsServletException,IOException{//获取servletContext上下文对象、Spring容器创建保留在这里。ServletContext servletContext =this.getServletContext();//获取spring容器、传入servletContext上下文对象ApplicationContext app =WebApplicationContextUtils.getWebApplicationContext(servletContext);//调用容器内的方法、获取容器内的对象UserService userService = app.getBean(UserService.class);}@OverrideprotectedvoiddoPost(HttpServletRequest req,HttpServletResponse resp)throwsServletException,IOException{this.doGet(req, resp);}}

至此,完成了Spring和Web的集成。

🚩六、Spring控制反转和依赖注入

控制反转IOC

控制反转是Spring的一个特性,以前的对象是我们自己创建的,想要的时候就new一个。现在用到Spring、Spring是一个大容器,我们把对象的创建交给Spring,当加载Spring配置文件时,就会创建相应的bean对象,并且保存在Spring容器中。
在这里插入图片描述

值得注意的是,id在Spring当中作为唯一标识、用来识别不同的bean,id不能相同!!
同一个类型可以创建多个,但要调整scope(范围),scope里常用的singleton(单例)prototype(多例)。创建多个相同类型时,scope设置为prototype。默认情况下是singleton(单例)。

依赖注入DI

用到spring,可以对程序进行解耦合,但不代表没有联系。在Service层中想要调用Mapper层的方法,在过去要在Service层中添加Mapper层对象作为属性,这属于代码层面的绑定死。

上面的绑定死肯定不是我们要的,那么怎么办?通过Spring 依赖注入(DI)把相应的需求在配置文件中进行设置,把耦合关系从代码中抽离出来。在配置文件中,我们需求改变的时候可以直接修改配置文件,而不用修改源代码,这符合软件设计的原则
在这里插入图片描述

🚩七、Spring整合druid数据库连接池和加载jdbcTemple

druid(德鲁伊)数据库连接池是一个优秀的工具,在这里我们整合其作为我们的一部分。同样的,第一部分也是导入相应的位置坐标。
在这里插入图片描述
然后在spring核心配置文件进入bean导入,这样就可以在启用时创建在ioc容器当中。
在这里插入图片描述
这里我配置了一个jdbc.properties配置文件做为存储jdbc代码的地方。当然,这里不配置也没事。没有配置则直接在value处添加相应数据。例如在name=driver的property中的value也可以为:com.mysql.jdbc.driver
如果配置了配置文件,就把它引进来即可,然后像上面一样依次取值。

加载jdbcTemple

同样的,需要导入相应坐标,这个是spring关于jdbc的一个模板工具。

在这里插入图片描述
然后配置:
在这里插入图片描述
值得注意的是这个bean的参数name也叫dataSource,而ref后的dataSource是上面druid配置数据源的信息。
至此,已经把druid、jdbcTemple与spring整合好了。

🚩八、集成Web、druid、jdbcTemple实现免登录时长两天半

至此,进入我们最后一步,具体的实现各个层面的应用。

pom.xml文件
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" 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><groupId>org.example</groupId><artifactId>spring-web</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><!--    添加测试依赖--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--    添加mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version></dependency><!--   添加servlet依赖--><!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><!--    添加MySQL依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!--    添加jsp依赖--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.2.1</version><scope>provided</scope></dependency><!--   添加el表达式依赖--><dependency><groupId>javax.el</groupId><artifactId>javax.el-api</artifactId><version>3.0.0</version></dependency><!--      添加jstl标签库依赖--><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency><!--添加druid依赖--><!-- https://mvnrepository.com/artifact/com.alibaba/druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><!--添加spring依赖、添加core就行了。core包含了依赖注入和控制反转--><!-- https://mvnrepository.com/artifact/org.springframework/spring-core --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId></dependency><!--添加spring-web集成--><!-- https://mvnrepository.com/artifact/org.springframework/spring-web --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.5.RELEASE</version><scope>compile</scope></dependency><!-- spring事务依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.5.RELEASE</version></dependency></dependencies></project>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--控制反转+依赖注入--><bean id="UserMapper"class="com.bipt.mapper.impl.implUserMapper"><property name="jdbcTemplate" ref="jdbcTemplate"></property></bean><bean id="UserService"class="com.bipt.service.implService.ImplUserService"><property name="userMapper" ref="UserMapper"></property></bean><!--加载导入配置文件--><context:property-placeholder location="classpath:/dbConfig.properties"/><!--配置数据源--><bean id="dataSource"class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}"></property><property name="url" value="${jdbc.url}"></property><property name="username" value="${jdbc.username}"></property><property name="password" value="${jdbc.password}"></property></bean><!--配置jdbcTemplate--><bean id="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean></beans>

🚩总结

在这次的实践中,发现了很多问题,有的问题还有待修复,但是总体完成了。需要源原件的可以联系博主。**

标签: spring 前端 java

本文转载自: https://blog.csdn.net/qq_63992577/article/details/127195846
版权归原作者 己不由心王道长 所有, 如有侵权,请联系我们删除。

“【spring】集成Web、druid、jdbcTemple实现免登录时长两天半”的评论:

还没有评论