一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - SpringMVC+Mysql實例詳解(附demo)

SpringMVC+Mysql實例詳解(附demo)

2020-07-11 12:13浮云中的毛驢 JAVA教程

本篇文章主要介紹了SpringMVC+Mysql實例詳解(附demo),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。

一直用的是ssh,因為公司要用到SpringMVC,以前也沒接觸過,所以今天來和大家一起學習一下這個框架,以便工作需要。

首先我們先來了解一下什么是模式,模式就是解決某一類問題的方法論,把解決這類問題的解決方法歸總到理論的高度,這就是模式。模式是一種指導,在一個良好的指導下,有助于開發(fā)人員完成任務。做出一個優(yōu)秀的設計方案,能達到事半功倍的效果。而且會得到解決問題的最佳辦法。

mvc模式起源于Smalltalk語言,mvc是Model-View-Controller的簡寫。mvc減弱了業(yè)務邏輯接口和數(shù)據(jù)接口之間的耦合。使用MVC模式的好處有很多,可靠性強,高重用和可適應性,較低的生命周期成本,快速的部署,可維護性強等。里面的細節(jié)在這兒就不作過多的講解。

SpringMVC的特點:

1、清晰的角色劃分,spring在Model、View和Controller方面提供了一個非常清晰的劃分,這3個方面真正是各司其職,各負其責。

2、靈活的配置功能,因為Spring的核心是IOC,同樣在實現(xiàn)MVC上,也可以把各種類當做Bean來通過XML進行配置。

3、提供了大量的控制器接口和實現(xiàn)類,這樣開發(fā)人員可以使用Spring提供的控制器實現(xiàn)類,也可以自己實現(xiàn)控制器接口。

4、SpringMVC是真正的View層實現(xiàn)無關的,它不會強制開發(fā)員使用JSP,我們可以使用其他View技術,比如Velocity,Xskt等。

5、國際化支持,Spring的ApplicationContext提供了對國際化的支持,在這里可以很方便的使用。

6、面向接口編程,其實這不僅是springMVC的特點,整個Spring來看,這個特點都是很明顯的,因為它使開發(fā)人員對程序易于進行測試,并且很方便的進行管理。

7、Spring提供了Web應用開發(fā)的一整套流程,而不僅僅是MVC,他們之間可以很方便的結合在一起。下面有一個自己做得例子,做完這個例子后真的體會到了SpringMVC的強大。

下面開始配置我們的Springmvc工程:

首先我們配置WEB-INF目錄下的web.xml:

SpringMVC+Mysql實例詳解(附demo)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 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_2_5.xsd">
 <servlet>
  <!--springmvc的核心是DispatcherServlet,它負責控制整個頁面的請求路徑-->
  <servlet-name>dispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化參數(shù)>/WEB-INF/classes/相當于src目錄-->
  <init-param>
  <!-- 這個param-name必須是contextConfigLocation-->
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
  </init-param>
  <load-on-startup>2</load-on-startup>
 </servlet>
 <!--攔截所有以do結尾的請求-->
 <servlet-mapping>
  <servlet-name>dispatcherServlet</servlet-name>
  <url-pattern>*.do</url-pattern>
 </servlet-mapping>
<!--處理從頁面?zhèn)鬟f中文到后臺而出現(xiàn)的中文亂碼問題-->
 <filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping
 <welcome-file-list>
 <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

每次配置好一個文件后建議先啟動服務器看看是否產(chǎn)生異常,不然到后期會很難調(diào)試和找到異常所在。

WEB.XML配置好以后我們還需要在SRC目錄下創(chuàng)建一個db-config.properties文件來存放我們的數(shù)據(jù)源配置信息:

內(nèi)容如下:

?
1
2
3
4
5
6
7
db.url= jdbc:MySQL:///springmvcdb?useUnicode=true&characterEncoding=utf8
 
db.username=root
 
db.password=root
 
db.dirverClass= com.mysql.jdbc.Driver

db-config.properties配置好以后就開始配置applicationContext.xml文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?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/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
 <!-- 定義個缺省的控制適配器 -->
 <bean
  class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
 <!-- 獲取配置文件 -->
 <bean id="config"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>classpath:db-config.properties</value>
   </list>
  </property>
 </bean>
 <!-- 獲取數(shù)據(jù)源 -->
 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName">
   <value>${db.dirverClass}</value>
  </property>
  <property name="url">
   <value>${db.url}</value>
  </property>
  <property name="username">
   <value>${db.username}</value>
  </property>
  <property name="password">
   <value>${db.password}</value>
  </property>
 </bean>
 <!--
  URL到處理器的映射列表可以配置多個
  mappings屬性健值為URL程序文件地址,而值為處理器的Bean名字,URL程序文件地址可采用路徑匹配的模式,如:
  com/mvc/t?st.jsp:匹配com/mvc/test.jsp、com/mvc/tast.jsp等 com/mvc /*.jsp
  :匹配所有com/mvc/下帶jsp后綴的URL com/mvc
  /**/test.jsp:匹配所有在com/mvc路徑下或子孫路徑下的test.jsp com/mvc
  /**/*.jsp:匹配所有com/mvc路徑下或子孫路徑下帶.jsp后綴的URL cn/**/web/bla.jsp:匹配
  cn/option/web/dog.jsp cn/option/test/web/dog.jsp cn/web/dog.jsp的請求
 -->
 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
   <value>
    user.do=userAction
</value>
  </property>
 </bean>
 
 <!--定義視圖通過internalResourceView來表示使用的是Servlet/jsp技術-->
 <bean id="viewResolver"
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass">
   <value>org.springframework.web.servlet.view.InternalResourceView
   </value>
  </property>
  <!--jsp存放的目錄-->
  <property name="prefix">
   <value>/jsp/</value>
  </property>
  <!--jsp文件的后綴-->
  <property name="suffix">
   <value>.jsp</value>
  </property>
 </bean>
 <bean id="userDao" class="com.yjde.springmvc.UserDao">
  <property name="dataSource"ref="dataSource"></property>
 </bean>
 <!--定義控制器-->
 <bean id="userAction" class="com.yjde.springmvc.UserController">
  <property name="dao">
   <ref bean="userDao"/>
  </property>
  <property name="commandClass">
   <value>com.yjde.springmvc.UserDao</value>
  </property>
  <property name="viewpage">
   <value>userInfo</value>
  </property>
 </bean>
</beans>

ApplicationContext.xml文件配置好以后我們開始編寫具體的Java類,我們需要一個Dao類,一個controller類和一個PO

我們在MySql中創(chuàng)建了一張USERMBO表,里面有三個字段 USERID,USERNAME,USERAGE

UserDao類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.yjde.springmvc;
 
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
 
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
 
@SuppressWarnings("all")
public class UserDao extends JdbcDaoSupport {
 private String msg;
 
 public String getMsg() {
  return msg;
 }
 
 public void setMsg(String msg) {
  this.msg = msg;
 }
 
 // 此方法把USEMBO表對應的字段查詢出來依次放入userPO中
 public Collection<UserPO> doquery() {
  String sql = "SELECT T.USERID,T.USERNAME,T.USERAGE FROM USERMBO T";
  return super.getJdbcTemplate().query(sql, new RowMapper() {
 
   public Object mapRow(ResultSet rs, int num) throws SQLException {
    UserPO user = new UserPO();
    user.setUserId(rs.getInt("USERID"));
    user.setUserName(rs.getString("USERNAME"));
    user.setUserAge(rs.getInt("USERAGE"));
    return user;
   }
  });
 }
}

JdbcTemplate是core包的核心類。它替我們完成了資源的創(chuàng)建以及釋放工作,從而簡化了我們對JDBC的使用。它還可以幫助我們避免一些常見的錯誤,比如忘記關閉數(shù)據(jù)庫連接。具體請參閱API

Controller類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package com.yjde.springmvc;
 
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
 
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
 
@SuppressWarnings("all")
// SimpleFormController是spring提供的表單控制器,把頁面中Form中的元素名稱設定為和bean中的一樣,當傳入的時候Spring會自動抓取form中和Bean名稱一樣的元素值,把它轉換成一個bean,使得開發(fā)人員可以很方便的使用。
public class UserController extends SimpleFormController {
 private String viewpage;
 private UserDao dao;
 
 public String getViewpage() {
  return viewpage;
 }
 
 public void setViewpage(String viewpage) {
  this.viewpage = viewpage;
 }
 
 @Override
 protected ModelAndView onSubmit(HttpServletRequest request,
   HttpServletResponse response, Object command, BindException errors)
   throws Exception {
  UserDao tmp = (UserDao) command;
  Collection<UserPO> list = dao.doquery();
  List<UserPO> users = new ArrayList<UserPO>();
  UserPO user;
  for (UserPO userPO : list) {
   user = new UserPO();
   user.setUserId(userPO.getUserId());
   user.setUserName(userPO.getUserName());
   user.setUserAge(userPO.getUserAge());
   users.add(user);
  }
  Map mp = new HashMap();
  mp.put("list", users);
  return new ModelAndView(getViewpage(), mp);
 }
 
 public void setDao(UserDao dao) {
  this.dao = dao;
 }
 
}
package com.yjde.springmvc;
 
public class UserPO {
 private Integer userId;
 private String userName;
 private Integer userAge;
 
 public Integer getUserId() {
  return userId;
 }
 
 public void setUserId(Integer userId) {
  this.userId = userId;
 }
 
 public String getUserName() {
  return userName;
 }
 
 public void setUserName(String userName) {
  this.userName = userName;
 }
 
 public Integer getUserAge() {
  return userAge;
 }
 
 public void setUserAge(Integer userAge) {
  this.userAge = userAge;
 }
}
</pre><br>
<p align="left"><span style="color:teal">類創(chuàng)建完成以后我們編寫兩個</span><span style="color:teal">JSP</span><span style="color:teal">進行測試:</span></p>
<p align="left"><span style="color:teal">Index.jsp:</span></p>
<p align="left"><span style="color:#bf5f3f"></span></p>
<pre name="code" class="html"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <base href="<%=basePath%>">
  
 <title>My JSP 'index.jsp' starting page</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0"
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
 </head>
 
 <body>
 <form action="user.do" method="post">
 請輸入<input name="msg" type="text" />
 <input type="submit" value="提交">
 </form>
 </body>
</html>
</pre><p align="left"><span style="color:teal"> </span></p>
<p align="left"><span style="color:teal">最終運行結果:</span></p>
<p align="left"><span style="color:teal"> <img src="http://my.csdn.net/uploads/201204/24/1335237733_4732.png" alt=""></span></p>
<p align="left"><span style="color:teal">數(shù)據(jù)庫建表語句:</span></p>
<p align="left"><span style="color:#008080"></span></p>
<pre name="code" class="sql">/*
Navicat MySQL Data Transfer
 
Source Server   : mysql
Source Server Version : 50145
Source Host   : localhost:3306
Source Database  : springmvcdb
 
Target Server Type : MYSQL
Target Server Version : 50145
File Encoding   : 65001
 
Date: 2012-04-24 10:34:25
*/
 
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `usermbo`
-- ----------------------------
DROP TABLE IF EXISTS `usermbo`;
CREATE TABLE `usermbo` (
 `USERID` int(11) NOT NULL DEFAULT '0',
 `USERNAME` varchar(50) DEFAULT NULL,
 `USERAGE` int(11) DEFAULT NULL,
 PRIMARY KEY (`USERID`)
) ENGINE=InnoDB DEFAULTCHARSET=utf8;
 
-- ----------------------------
-- Records of usermbo
-- ----------------------------
INSERT INTO `usermbo` VALUES('1', '李曉紅', '25');
INSERT INTO `usermbo` VALUES('2', '柳夢璃', '27');
INSERT INTO `usermbo` VALUES('3', '韓菱紗', '26');</pre>

實例下載:demo

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/tjcyjd/article/details/7492805

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国内精品露脸在线视频播放 | 美国女网址www呦女 美国复古性经典xxxxx | 四虎黄色影视库 | 校园纯肉H教室第一次 | 欧美日韩国产精品综合 | 国产欧美久久久精品影院 | 成人精品亚洲人成在线 | 肉浦团在线观看 | 亚久久伊人精品青青草原2020 | 免费十几分视频 | 奇米视频7777| 久久久久久免费高清电影 | 疯狂刺激的3p国产在线 | 午夜小视频免费观看 | 欧美成人tv在线观看免费 | 隔壁的漂亮邻居hd中文 | 久久成人精品免费播放 | 青苹果乐园影院在线播放 | 丝袜性爱 | 俺去啦最新地址 | 欧美高清乌克兰精品另类 | 国产精品亚洲精品日韩已方 | 操大爷影院 | 特黄特色大片免费视频播放 | 久久受www免费人成_看片中文 | 俄罗斯年轻男同gay69 | 欧美日韩高清完整版在线观看免费 | 日韩影院在线观看 | 亚洲国产精品嫩草影院永久 | 午夜视频一区二区三区 | 国产精品区一区二区免费 | 继的朋友无遮漫画免费观看73 | 校园春色偷拍自拍 | 四虎精品成人免费视频 | 国产3p在线| 91天堂在线| 99精品热视频| 99精品在线视频 | 亚洲国产成人久久综合一区 | www伊人| 大香线一本 |