欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring3.0读书笔记----(二)快速入门

程序员文章站 2024-03-23 08:27:34
...

1 实例功能简介

Spring3.0读书笔记----(二)快速入门Spring3.0读书笔记----(二)快速入门

 

 简单的登录模块。登录页面提供一个带用户名/密码的输入表单,用户填写并提交表单后,服务器程序检查是否有匹配的用户名/密码。如果用户名/密码不匹配,返回到登录页面,并给出提示。如果用户名/匹配,记录用户的成功登录日志,更新用户的最后登录时间和IP并给用户增加5个积分,然后重定向到欢迎页面。


2 环境准备

 

 环境准备包括数据库表的创建(MySQL数据库)、项目工程的创建、规划Spring配置文件。

2.1 创建库表

DROP DATABASE IF EXISTS sampledb;
CREATE DATABASE sampledb DEFAULT CHARACTER SET utf8;
USE sampledb;
-- 创建用户表
CREATE TABLE	t_user(
	user_id INT AUTO_INCREMENT PRIMARY KEY,
	user_name VARCHAR(30),
	credits INT,
	user_password VARCHAR(32),
	last_visit DATETIME,
	last_ip VARCHAR(23)
);
-- 创建用户登录日志表
CREATE TABLE login_log(
	login_log_id INT AUTO_INCREMENT PRIMARY KEY,
	user_id INT,
	ip VARCHAR(23),
	login_datetime DATETIME
);
-- 插入初始化数据
INSERT INTO t_user(user_name,user_password) VALUES('admin','123456');
COMMIT;

2.2 建立工程

 

 以前一直用的MyEclipse,后来据说大牛都是使用Eclipse,可以锻炼动手能力,那么就以Eclipse创建一个maven构建web项目为例。


2.2.1 new一个Maven Project


Spring3.0读书笔记----(二)快速入门
















  进入maven project页面之后,选择第二栏,点击next


Spring3.0读书笔记----(二)快速入门


 在Filter中输入maven-archetype-webapp(建立web项目的模型)或者输入maven-archetype-quickstart(非web项目),这两种是比较常用的模型。现在以webapp(web项目为例)。


Spring3.0读书笔记----(二)快速入门


输入maven项目的基本信息

 Group Id:一般来说groupId是由三个部分组成,每个部分之间以"."分隔,第一部分是项目用途,比如用于商业的就是"com",用于非营利性组织的就是"org";第二部分是公司名,比"tengxun"、"baidu"、"alibaba";第三部分是你的项目名。

 Artifact Id:Maven构建的项目名称或者根目录的名称,比如你的项目中有子项目,就可以使用"项目名-子项目名"的命名方式。

 Version:当前版本

 Package:默认包结构,也可以不填


Spring3.0读书笔记----(二)快速入门


2.2.2 修改JDK

 eclipse建立maven项目时,新建的项目往往是JDK1.5,项目会报红叉,所以要更改JDK在pom.xml中配置

<build>
    <finalName>springtest</finalName>
    <plugins>
    	<!-- 指定JDK1.7 -->
        <plugin>
        	<groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
            	<source>1.7</source>
            	<target>1.7</target>
            </configuration>
         </plugin>
  	</plugins>
  </build>

 配置完了之后点击项目名,右击选择“Build Path”——》“Configrue BuildPath”出现如图:

Spring3.0读书笔记----(二)快速入门

 点击”JRE System Library[JavaSE-1-7]”(不能eclipse可能出现的版本不一样),再点击“edit”

Spring3.0读书笔记----(二)快速入门

 选择“Workspace defaultJRE(jdk1.7.0_79)”然后选择 Finish


Spring3.0读书笔记----(二)快速入门

2.2.3 把maven项目转换为web项目

 点击项目,右击-》选择Properties-》选择maven下的Project Facets

Spring3.0读书笔记----(二)快速入门

  如果先前Dynamic web Module有打勾,先把勾去掉,Apply-》OK

Spring3.0读书笔记----(二)快速入门

 重复上一步可以看到Dynamic web Module上没有打上勾,打勾,后出现 Furtherconfiguration available

Spring3.0读书笔记----(二)快速入门

 点击Further configuration available,出现Modify web modulssettings,在Content directory上填入src/main/webapp ,并在Generate web.xml deploymentdescriptor上打勾-》OK-》Apply-》OK

Spring3.0读书笔记----(二)快速入门

 最后的结果

Spring3.0读书笔记----(二)快速入门

2.2.3 规划Spring文件及配置

在pom.xml中引入依赖项,包括spring核心类库和测试框架,使用Spring-jdbc连接数据库

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
  		<groupId>mysql</groupId>
  		<artifactId>mysql-connector-java</artifactId>
  		<version>5.1.38</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-aop</artifactId>
  		<version>3.2.7.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-context</artifactId>
  		<version>3.2.7.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>3.2.7.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-jdbc</artifactId>
  		<version>3.2.7.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-tx</artifactId>
  		<version>3.2.7.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-webmvc</artifactId>
  		<version>3.2.7.RELEASE</version>
  	</dependency>
  	<dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-test</artifactId>
    	<version>3.0.5.RELEASE</version>
    	<scope>test</scope>
	</dependency>
	<dependency>
  		<groupId>jstl</groupId>
  		<artifactId>jstl</artifactId>
  		<version>1.2</version>
  	</dependency>
  </dependencies>

 在Maven项目src/main/resources目录下创建applicationContext.xml的Spring配置文件,配置结果如下:

<!-- 1.扫描类包,将标注Spring注解的类自动转为Bean,同时完成Bean的注入 -->
	<context:component-scan base-package="com.baobao.springtest.dao"/>
	<!-- 2.定义一个使用DBCP实现的数据源 -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://localhost:3306/sampledb"/>
		<property name="username" value="root"/>
		<property name="password" value="123456"/>
	</bean>
	<!-- 3.定义jdbc模板Bean -->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	<!-- 4.扫描service类包,应用Spring的注解配置 -->
	<context:component-scan base-package="com.baobao.springtest.service"/>
	<!-- 5.配置事务管理器 --> 
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	
	<!-- 6.通过AOP配置提供事务增强,让service包下所有Bean的所有方法拥有事务 -->
	  <!--  
	<aop:config proxy-target-class="true">
		<aop:pointcut expression="execution(*com.baobao.springtest.service..*(..))" id="serviceMethod"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod"/>
	</aop:config>
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="*"/>
		</tx:attributes>
	</tx:advice>
	-->
 然后对web,xml文件进行配置,使得web容器能够自动启动Spring容器:

<!-- 1.从类路径下加载Spring配置文件,-->
  	<context-param>
  		<param-name>contextConfigLocation</param-name>
  		<!-- classpath关键字特指类路径下加载 ,多个文件可以用逗号和空格分割,建议使用逗号 -->
  		<param-value>classpath:applicationContext.xml</param-value>
  	</context-param>
  	<!-- 2.负责启动Spring容器的监听器,它将引用1处上下文参数获得Spring配置文件地址 -->
  	<listener>
  		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  	</listener>
  	<!-- 3.SpringMVC的主控Servlet -->
  	<servlet>
  		<servlet-name>baobao</servlet-name>
  		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  		<load-on-startup>1</load-on-startup>
  	</servlet>
  	<!-- 4.SpringMVC处理的URL -->
  	<servlet-mapping>
  		<servlet-name>baobao</servlet-name>
  		<url-pattern>/</url-pattern>
  	</servlet-mapping>
 接下来配置SpringMVC的文件相关信息,该文件名与定义的servlet名有一个契约:

即采用<servlet 名>-servlet.xml的形式,并将文件放在WEB-INF下,这样可以无需再

 通过web.xml的contextConfigLocation上下文参数进行声明。因为SpringMVC的servlet

会自动将该文件或者Spring其他的配置文件(-dao.xml、-service.xml等)进行拼装。

 配置后效果使所有请求被SpringMVC截获后,首先根据请求的URL查找目标的处理控

制器,并将请求参数封装“命令”对象一起传给控制器处理,控制器调用Spring容器中的业

务Bean完成业务处理工作并返回结果视图。以下是配置信息:

<!-- 扫描web包,应用Spring的注解 -->
	<context:component-scan base-package="com.baobao.springtest.web"/>
	<!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- prefix指定在视图名前所添加的前缀 -->
		<property name="prefix" value="/WEB-INF/"/>
		<!-- suffix指定在视图名后所添加的后缀 -->
		<property name="suffix" value=".jsp"></property>
	</bean>
 3 总结

通过一个简单的实例运用SpringMVC、SpringJDBC以及Spring的声明式事务技术熟悉

Maven项目下搭建Spring的容器