- 案例:一个简单注册页,提交后到SpringMVC的Controller,它里面调用业务层注册方法(结合Spring),service层仅用spring的JdbcTemplate往person表插入一条数据,从而实现简单注册。(这里直接忽略了DAO层)
结合方式1:配置文件(无注解的方式)
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 中央控制器 -->
<!-- 配控制器时,一定要导入commons-logging包,否则tomcat启动时出现Failed to start component -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern><!-- /*拦截所有 /除了jsp都拦截 -->
</servlet-mapping>
<!-- 过滤静态资源,方式一:不拦截html文件 --><!--
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>-->
</web-app>
springMVC-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
">
<!-- 配数据源BasicDataSource 要两个jar包,dbcp,pool-->
<!-- commons-dbcp-1.4.jar-->
<!-- commons-pool-1.6.jar-->
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root1205"/>
<property name="defaultAutoCommit" value="true"/><!--默认自动提交-->
</bean>
<!-- 注入jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 这里面要配数据源 -->
<property name="dataSource" ref="myDataSource"></property>
</bean>
<!-- 方式1:SpringMVC和Spring通过配置文件的方式结合 -->
<!-- SpringMVC 地址映射,到多动作控制器(练习一下) -->
<bean name="/reg/*" class="com.controller.RegController">
<property name="personService" ref="personService"></property>
</bean>
<!-- 调用service层服务时通过Spring注入personService,代替new -->
<bean id="personService" class="com.service.PersonService">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
<!-- 这样配,我就没写DAO层了 -->
</bean>
</beans>
reg.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>简单注册页</title>
<style type="text/css">
*{margin:0;padding:0;list-style:none}
body{
background:#484D61;
font-family:微软雅黑;
font-size: 13px;
}
#out{
width: 250px;
height: 170px;
margin: 150px auto;
border-radius: 5px;
background: white;
padding-top: 30px;
}
#out ul li{
height: 40px;
line-height: 50px;
width: 250px;
text-align: center;
}
#out ul li.sex{
text-align: left;
padding-left: 15px;
}
input[type='text'],input[type='password']{
width: 220px;
height: 25px;
border: none;
border-bottom: 1px solid gray;
}
input[type='radio']{
margin: 5px;
}
input[type='submit']{
width: 220px;
height: 25px;
border: none;
border-radius: 5px;
background: #43495F;
color: white;
font-size: 12px;
}
</style>
</head>
<body>
<div id="out">
<form action="reg/save" method="post">
<ul>
<li><input type="text" placeholder="请输入用户名" name="name"/></li>
<li><input type="password" placeholder="请输入密码" name="pwd"/></li>
<li class="sex"><span>性别:</span>
<input type="radio" name="sex" value="男" checked/>男
<input type="radio" name="sex" value="女"/>女
</li>
<li><input type="submit" value="注册"/></li>
</ul>
</form>
</div>
</body>
</html>
RegController.java
package com.controller;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import com.entity.Person;
import com.service.PersonService;
public class RegController extends MultiActionController {
//与spring结合,这里我就不用new PersonService,而是通过配置文件注入
private PersonService personService;
/* @Override
protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
System.out.println("请求了吗?");
return null;
}*/
public PersonService getPersonService() {
return personService;
}
public void setPersonService(PersonService personService) {
this.personService = personService;
}
public void save(HttpServletRequest request,HttpServletResponse response){
try {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
String sex = request.getParameter("sex");
Person p = new Person();
p.setName(name);
p.setPwd(pwd);
p.setSex(sex);
//System.out.println(personService);//测试一下有没有拿到
if(personService.register(p)){
try {
response.getWriter().print("注册成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
IPersonService.java
package com.service;
import com.entity.Person;
public interface IPersonService {
public boolean register(Person person);
}
PersonService.java
package com.service;
import org.springframework.jdbc.core.JdbcTemplate;
import com.entity.Person;
public class PersonService implements IPersonService {
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public boolean register(Person person) {
try{
jdbcTemplate.execute("INSERT INTO person(name,age,sex)VALUES('"+person.getName()+"','"+person.getAge()+"','"+person.getSex()+"')");
} catch(Exception e){
return false;
}
return true;
}
}
结果: