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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 暖暖视频免费观看视频中国.韩剧 | 草莓秋葵菠萝蜜绿巨人污 | 免费一级特黄特色大片在线 | 99爱在线精品视频免费观看9 | 男人天堂网站在线 | 欧美z0z0人禽交 | 免费成年视频 | 韩国漂亮美女三级在线观看 | 热门小说同人h改编h | 日b在线观看 | 天堂网www在线观看 天堂欧美 | 日本大学生xxxxx69泡妞 | 奇米888在线看奇米999 | 国产精品免费一级在线观看 | 色图片小说| 魔法满屋免费观看完整版中文 | 日出水了特别黄的视频 | 亚洲天堂中文 | 久久中文字幕无线观看 | 男男gaygays黑人 | 公园暴露娇妻小说 | 极品ts赵恩静和直男激战啪啪 | 日本三级做a全过程在线观看 | 性派对videofreeparty | 天天夜夜草草久久伊人天堂 | 欧美va免费精品高清在线 | 男人视频网 | 2021小妲己永久回家地址 | 色综合天天综合网看在线影院 | 日本嫩小xxxxhd | 91久久偷偷做嫩草影院电 | 精品国产自在在线在线观看 | 精品国产一二三区在线影院 | 国色天香社区视频在线观看免费完整版 | 久久亚洲午夜牛牛影视 | 95在线观看精品视频 | 2021国产精品露脸在线 | 国产成人高清视频 | 美女脱了内裤打开腿让男人图片 | 视频一区精品 | 精品亚洲456在线播放 |