接上篇—用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中填项目需要的依赖

  1. <modelVersion>标签填4.0
  2. <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文件,就能使用了

原文地址:https://www.cnblogs.com/gengqzh/p/10668626.html