SpringMVC和Spring的結合方式一
阿新 • • 發佈:2019-01-04
- 案例:一個簡單註冊頁,提交後到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;
}
}
結果: