前言:开发了几个月的AS3项目,感觉JAVA都用不太熟练了。刚好这几个抽的空,就把自己以前用过的Spring框架再搭一边,
并完整的记录下来
开发环境:tomcat + mysql+ java
1.所需要的jai包:spring3.0的基础包 + 连接mysql数据库的驱动包
2.创建项目InSqlTest:在web.xml下面配置
web.xml
<?xml version="1.0" encoding= "UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" >
<display-name ></display-name>
<!--配置spring的拦截器-->
<servlet >
<servlet-name >dispatcher</ servlet-name>
< servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!--项目启动后,直接加载配置文件,如果没有该配置,项目会自动加载WEB-INF下的dispatcher-servlet.xml文件-->
<init-param >
<param-name> contextConfigLocation</param-name >
<param-value> /WEB-INF/servletMvc.xml</param-value >
</init-param >
<load-on-startup >1</ load-on-startup>
</servlet >
<!--拦截器拦截的URL,此处拦截所有后缀带.sql的请求-->
<servlet-mapping >
<servlet-name >dispatcher</ servlet-name>
<url-pattern >*.sql</url-pattern >
</servlet-mapping >
<!--一般来说,spring的项目需要两个配置文件,一个是server.xml,配置Controller,及对URL返回的一些处理
另一个是applicationContext.xml,配置一些DAO的信息 此处暂简化,只用一个servletMvc.xml
-->
<!-- <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener >
<listener-class> org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener >-->
<welcome-file-list >
<welcome-file >index.jsp</ welcome-file>
</welcome-file-list >
</web-app>
3.项目下的servletMvc.xml文件配置
此文件位于/WEB-INF/下
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- ①:自动搜索@Controller、@Service以及@Repository和@Component 标注的类,对com包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
<context:component-scan base-package="com" />
<!-- ②:启动Spring MVC的注解功能,完成请求和注解映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!-- ③:对模型视图名称的解析,即在模型视图名称添加前后缀 如
项目中返回了一个my的字符串,实际路径为“/WEB-INF/jsp/my.jsp”-->
<bean id= "viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolv">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" ></property>
</bean>
<!-- JDBC模板,往里面注入了数据源dataSource-->
<bean id= "jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
<property name="dataSource" >
<ref bean="dataSource" />
</property>
</bean>
<!-- 数据源配置,此处连接mysql数据库-->
<bean id= "dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" >
<value> com.mysql.jdbc.Driver</value >
</property>
<property name="url" >
<value> jdbc:mysql://127.0.0.1:3306/nero </value>
</property>
<property name="username" >
<value> root</value >
</property>
<property name="password" >
<value> 123456</value >
</property>
</bean>
</beans>
4.下面是简单的java代码
SqlTest.java
package com;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
/**
* 关于@RequestMapping拦截请求,和取参的方法有很多中
* 下面只简单介绍其中比较通用的两种
* 想要了解更多的信息,可以参考该博客 http://my.oschina.net/guhai2004/blog/170133
*
* PS:方法中的 sql写法是不安全的,我是为了测试 注入式SQL才故意这样写的
*/
//自动加载这个Controller
@Controller
public class SqlTest {
@Autowired //参数的自动装载
public JdbcTemplate jdbc;
/**从post请求中解析参数,该方法拦截test.sql请求,
以RequestParam从请求中获取参数*/
@RequestMapping(value= "/test.sql",method = RequestMethod.POST )
public String TestPost(@RequestParam("username" ) String username,@RequestParam("password" ) String password){
String sql = "SELECT COUNT(1) FROM MYUSER WHERE USER = '"+username+"' AND PWD = '"+password+"'" ;
//Spring的JDBC中包含了很多针对数据库的操作
int i = jdbc .queryForInt(sql);
if(i>0){
System. out.println("success" );
return "MyJsp" ;
}
return "error" ;
}
/**下面介绍一种直接从请求URL中解析参数的方法,
* 可以让自己的请求URL变的很友好,当然这个比较适合页面间的跳转
*/
@RequestMapping(value="/{username}/{password}/test.sql" ,method = RequestMethod.GET)
public String testRest( @PathVariable String username,@PathVariable String password){
String sql = "SELECT COUNT(1) FROM MYUSER WHERE USER = '"+username+"' AND PWD = '"+password+ "'" ;
//Spring的JDBC中包含了很多针对数据库的操作
int i = jdbc.queryForInt(sql);
if(i>0){
System. out.println("success" );
return "MyJsp" ;
}
return "error" ;
}
}