接上篇—用spring注入DBbean,并使用maven管理
接着上篇的登陆功能,用spring的依赖注入和maven的管理,又实现了一遍。新增了注册功能。
有两个目标:使用spring和使用maven
目录结构
首先是目标1:使用spring的依赖注入,注入bean,LoginServlet不再自己创建DBdao对象。
LoginServlet.java
import java.io.IOException;
import java.io.PrintStream;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import dao.DBdao;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
{
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintStream out = new PrintStream(response.getOutputStream());
String name = request.getParameter("userName");
String password = request.getParameter("password");
Connection conn = null;
Statement statement = null;
String sql = "select * from user where username="+"'"+name+"'";
/*********************************/
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"spring-config.xml"});
DBdao db = (DBdao)context.getBean("DBdao",DBdao.class);
/*********************************/
try{
//获得数据库连接
conn = db.getConnection();
statement = conn.createStatement();
//执行sql查询,并返回结果集对象
ResultSet rs = statement.executeQuery(sql);
if(rs.next()){
if(rs.getString("password").equals(password)){
out.print("<h1>success</h1>");
}
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
要点在这两句:
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"spring-config.xml"});
DBdao db = (DBdao)context.getBean("DBdao",DBdao.class);
- ApplicationContext是一个接口,ClassPathXmlApplicationContext实现了该接口,然后从类加载路径加载配置文件
- 调用ApplicationContext控制反转容器的getBean方法,由容器通过xml配置文件创建对象传给LoginServlet(需要强制类型转换)。
spring-config.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="DBdao" class="dao.DBdao"/>
</beans>
然后只需要这样,就能使用Spring的依赖注入了。
然后是目标2:使用maven。
很好用。第一次用 [照着这](http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html) ,5分钟完成。
在这,我的理解是maven联网从自己的资源中心下载所有需要的jar包,包括maven需要的和项目需要的,自己无需再去官网下载spring,struts啥的jar了。
然后是pom.xml文件,是maven的本项目配置文件,放在根目录下
pom.xml
<?xm version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2002/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>geng.test</groupId>
<artifactId>geng.test</artifactId>
<version>0.1.0</version>
<build>
<finalName>wang</finalName>
<plugins>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
</project>
在dependecy中填项目需要的依赖
- <modelVersion>标签填4.0
- <finalName>标签填项目的名字
- 最后在根目录下使用mvn package war:war命令就会自动生成war打包文件
- 把war放到tomcat的webapp下就可以访问项目了
maven下载的jar都会存在用户目录下的.m2文件夹中,因此这个文件夹可能会很大
项目的文件树必须是固定的,只能在src下的project或com下写源文件,resources下写配置文件,资源文件,webapp下写web.xml和jsp
maven在windows下的安装 (https://www.cnblogs.com/happyday56/p/8968328.html)
manen在linux下的安装,下载二进制包,解压,配置path环境变量,引入maven中的bin文件,就能使用了
接上篇—用spring注入DBbean,并使用maven管理的更多相关文章
- Spring入门(四):使用Maven管理Spring项目
让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...
- Mybatis与Spring整合,使用了maven管理项目,作为初学者觉得不错,转载下来
转载自:http://www.cnblogs.com/xdp-gacl/p/4271627.html 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype ...
- spring注入bean的几种策略模式
上篇文章Spring IOC的核心机制:实例化与注入我们提到在有多个实现类的情况下,spring是如何选择特定的bean将其注入到代码片段中,我们讨论了按照名称注入和使用@Qualifier 注解输入 ...
- Spring注入JPA+JPA事务管理
本例实现的是Spring注入JPA 和 使用JPA事务管理.JPA是sun公司开发的一项新的规范标准.在本质上来说,JPA可以看作是Hibernate的一个子集:然而从功能上来说,Hibernate是 ...
- Spring注入中byType和byName的总结
1.首先,区分清楚什么是byType,什么是byName. <bean id="userServiceImpl" class="cn.com.bochy.servi ...
- spring注入参数详解
spring注入参数详解 在Spring配置文件中, 用户不但可以将String, int等字面值注入到Bean中, 还可以将集合, Map等类型的数据注入到Bean中, 此外还可以注入配置文件中定义 ...
- 线程中无法实例化spring注入的服务的解决办法
问题描述 在Java Web应用中采用多线程处理数据,发现Spring注入的服务一直报NullPointerException.使用注解式的声明@Resource和XML配置的bean声明,都报空指针 ...
- FlushMode属性与transaction(spring注入的事务)
一.参见hibernate的api http://tool.oschina.net/apidocs/apidoc?api=hibernate-3.6.10 http://tool.oschina.ne ...
- 项目中Spring注入报错小结
之前在做单元测试时采用注解方式进行service对象的注入,但运行测试用例时对象要注入的service对象总是空的,检查下spring配置文件,我要配置的bean类xml文件已经包含到spring要加 ...
随机推荐
- sql查询层级分类
先上个效果图吧 CTE递归查询里面用了一些小的技巧,查询出结果以后在前端用表格展示出来,层级视觉效果还是很明显的 with tree as(select [ID],[Name],[Address],[ ...
- 改善C#公共程序类库质量的10种方法(转)
出处:http://www.cnblogs.com/JamesLi2015/p/3140897.html 最近重构一套代码,运用以下几种方法,供参考. 1 公共方法尽可能的使用缓存 public s ...
- springboot+mongonDB
一.mongonDB基本介绍 什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. Mon ...
- SQLServer学习-- SQLServer
SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行M ...
- 使用word文档直接发表博客 8 )
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- (转)jQuery插件编写学习+实例——无限滚动
原文地址:http://www.cnblogs.com/nuller/p/3411627.html 最近自己在搞一个网站,需要用到无限滚动分页,想想工作两年有余了,竟然都没有写过插件,实在惭愧,于是简 ...
- Android-Observer(内容观察者)
内容提供者应用暴露的数据,是被多个其他应用访问(insert,update,delete,query),但如果L应用要查询(内容提供者应用暴露的数据),难道要开启子线程一直循环去查询 ? 答:开启子线 ...
- Java50道经典习题-程序4 分解质因数
题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5.分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经 ...
- [Asp.net Mvc]为js,css静态文件添加版本号
方式一: 思路 string version = ViewBag.Version; @Scripts.RenderFormat("<script type=\"text/ja ...
- Autofac的简单使用
今天记录一下学习Autofac的过程. 之前对IoC与DI一直很迷糊,今天研究了前辈们的文章后,才对IoC和DI有了一个初步的了解.感谢前辈们的无私奉献! 文章地址: 依赖注入和控制反转的理解,写的太 ...