接上篇—用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文件,就能使用了