spring mysql 注解_【Spring】SpringMVC之基于注解的实现SpringMVC+MySQL
目錄結(jié)構(gòu):
contents structure [-]
SpringMVC是什么
MVC的全稱是Model View Controller,通過實(shí)現(xiàn)MVC框架可以很好的數(shù)據(jù)、視圖、業(yè)務(wù)邏輯進(jìn)行分離。Spring MVC也是一種MVC框架,它是SpringFrameWork的后續(xù)產(chǎn)品,同樣需要Spring的Jar包才能運(yùn)行起來。
SpringMVC工作原理
SpringMVC是一個(gè)基于DispatcherServlet的MVC框架,每一個(gè)請(qǐng)求最先訪問的就是DispatcherServlet,DispathcerServlet負(fù)責(zé)將每一個(gè)request轉(zhuǎn)發(fā)到相應(yīng)的Controller,Controller處理后再返回模型(Model)和視圖(View)。在使用注解的SpringMVC中,處理器Controller是基于@Controller和@RequestMapping進(jìn)行注解的。
@Controller和@RequestMapping注解
@Controller注解類型
聲明一個(gè)控制器類,DispatcherServlet會(huì)通過掃描機(jī)制找到該類,如下是一個(gè)@Controller的例子。
packagecom.example.controller;importorg.springframework.stereotype.Controller;
@Controllerpublic classProductController {
}
為了保證DispatcherServlet能夠掃描到該Controller,需要在DispatcherServlet中配置注解驅(qū)動(dòng)和上下文掃描包。
上下文掃描包:
……
xmlns:context=http://www.springframework.org/schema/context
……
注解驅(qū)動(dòng)包:
……
xmlns:mvc=http://www.springframework.org/schema/mvc
……
然后應(yīng)用和元素:
......
......
@RequestMapping注解類型
該注解類型在控制器類的內(nèi)部定義每一個(gè)動(dòng)作相應(yīng)的處理方法,一個(gè)采用@RequestMapping注釋的方法將成為一個(gè)請(qǐng)求處理方法,并由調(diào)度程序在接收到對(duì)應(yīng)的URL請(qǐng)求時(shí)調(diào)用,下面是一個(gè)RequestMapping注解方法的控制器類。
@Controllerpublic classProductController {
@RequestMapping(value="/productInput")publicString inputProduct(){//do something here
return "ProductForm";
}
}
使用requestMapping注解的value屬性將URL映射到方法,在上面的例子中通過 http://localhost:8080/SpringMVC/productInput訪問inputProduct方法。RquestMapping除了有value屬性外,還有許多屬性,比如method、consumes、header、path等等。例如當(dāng)HTPP POST或PUT方法時(shí)才調(diào)用test()方法。
@RequestMapping(value="/order_process", method={RequestMethod.POST, RequestMethod.PUT})publicString test(){//do something here
return "viewpage";
}
如果method屬性只有一個(gè)HTTP方法值,則無需{},直接為method=RequestMethod.POST,如果未指定method屬性,則請(qǐng)求處理方法可以處理任意HTTP方法。此外RequestMapping注釋類型也可以用來注釋一個(gè)控制器類。
importorg.springframework.stereotype.Controller;
...
@Controller
@RequestMapping(value="/customer")public classCustomerController{
@RequestMapping(value="/delete", method={RequestMethod.POST, RequestMethod.PUT})publicString deleteCustomer(){//do something here
return“viewpage”;
}
}
在這種情況下,所有的方法都將映射為相對(duì)于類級(jí)別的請(qǐng)求,如例子中的deleteCustomer方法,由于控制器類映射使用"/customer",而deleteCustomer方法映射為"/delete",則需要通過 http://localhost:8081/SpringMVC/customer/delete 訪問。
基于注解的SpringMVC+MySQL
項(xiàng)目目錄結(jié)構(gòu):
login.jsp類
1
2 pageEncoding="utf-8"%>
3
4
5
6
7
login8
9
10
11
12
13
14
login.jsp
第二步:
web.xml類
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 mydb2
4
5 welcome.html
6
7
8
9
10 spring
11 org.springframework.web.servlet.DispatcherServlet
12
13
14 spring
15 *.do
16
17
18
19
20 EncodingName
21 org.springframework.web.filter.CharacterEncodingFilter
22
23 encoding
24 utf-8
25
26
27
28 EncodingName
29 /*30 31
32
web.xml
spring-servlet.xml類
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:mvc="http://www.springframework.org/schema/mvc"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
7 http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd
8 http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.3.xsd">
9
10
11
12
13
14
15
16
17
18
19 classpath:db-config.properties
20
21
22
23
24
25
26
27 ${db.dirverClass}
28
29
30 ${db.url}
31
32
33 ${db.username}
34
35
36 ${db.password}
37
38
39
40
44
45
46
47
48
52
53
54
55
56
57
58
59 org.springframework.web.servlet.view.InternalResourceView
60
61
62
63 /view/
64
65
66
67 .jsp
68
69
70
spring-servlet.xml
db-config.properties類
db.url=jdbc:mysql:///test?characterEncoding=utf8&useSSL=true&serverTimezone=GMT
db.username=root
db.password=root
db.dirverClass=com.mysql.cj.jdbc.Driver
db-config.properties
這里的Driver和版本有關(guān)系,筆者的Connection/j 是6.0.5的。
UserVO.java類
1 packagecom.spring.model;2
3 public classUserVO {4 private intid;5 privateString name;6 privateString pwd;7
8 public intgetId() {9 returnid;10 }11 public void setId(intid) {12 this.id =id;13 }14 publicString getName() {15 returnname;16 }17 public voidsetName(String name) {18 this.name =name;19 }20 publicString getPwd() {21 returnpwd;22 }23 public voidsetPwd(String pwd) {24 this.pwd =pwd;25 }26 }
UserVO.java
UserDao.java類
1 packagecom.spring.db;2
3 importjava.sql.ResultSet;4 importjava.sql.SQLException;5 importjava.util.List;6
7 importorg.springframework.jdbc.core.JdbcTemplate;8 importorg.springframework.jdbc.core.RowMapper;9
10 importcom.spring.model.UserVO;11
12 public classUserDao {13 privateJdbcTemplate jdbcTemplate;14
15 publicJdbcTemplate getJdbcTemplate() {16 returnjdbcTemplate;17 }18
19 public voidsetJdbcTemplate(JdbcTemplate jdbcTemplate) {20 this.jdbcTemplate =jdbcTemplate;21 }22 @SuppressWarnings({ "unchecked", "rawtypes"})23 public Listfind(){24 String sql="select * from userbo";//這里也可以添加查詢限制條件
25 return jdbcTemplate.query(sql, newRowMapper(){26
27 public Object mapRow(ResultSet rs, int num) throwsSQLException {28 UserVO uservo=newUserVO();29 uservo.setId(rs.getInt("USERID"));30 uservo.setName(rs.getString("USERNAME"));31 uservo.setPwd(rs.getString("USERPSW"));32 returnuservo;33 }34 });35 }36 }
UserDao.java
這兒的jdbcTemplate不能用注解@Autowired來指定,因?yàn)樵趕pring-servlet.xml文件中已經(jīng)指定了掃描包為"com.spring",而jdbcTemplate的包為“org.springframework.jdbc.core.JdbcTemplate”,所以會(huì)掃描不到JdbcTemplate的。在spring-servlet.xml已經(jīng)通過bean的方式,將數(shù)據(jù)源注入JDBC模板。
LoginController.java類
1 packagecom.spring.controller;2
3 importjava.util.HashMap;4 importjava.util.List;5 importjava.util.Map;6
7 importorg.springframework.beans.factory.annotation.Autowired;8 importorg.springframework.stereotype.Controller;9 importorg.springframework.web.bind.annotation.RequestMapping;10 importorg.springframework.web.servlet.ModelAndView;11 importcom.spring.db.UserDao;12 importcom.spring.model.UserVO;13
14 @Controller15 public classLoginController {16
17 @Autowired18 privateUserDao userDao;19 @SuppressWarnings("unchecked")20
21 @RequestMapping(value="/select.do")22 publicModelAndView selectAll(){23
24 @SuppressWarnings("rawtypes")25 Map model=newHashMap();26
27 List userVO=userDao.find();28
29 model.put("uservo", userVO);30
31 return new ModelAndView("userInfo",model);32 }33 }
LoginController.java
@Autowired根據(jù)字面意思可以很快理解,就是自動(dòng)配置。有@Autowired注解的變量,會(huì)按照掃描路徑進(jìn)行查找文件并且自動(dòng)配置信息。如果把userDao的注解@Autowired注解注釋掉,也可以通過bean來實(shí)現(xiàn)相同的效果,首先在LoginController類里把userDao進(jìn)行setter,如:
public voidsetUserDao(UserDao userDao) {this.userDao =userDao;
}
然后再在spring-servlet.xml里面添加如下bean信息:
userInfo.jsp類
1
2
3
4 @SuppressWarnings("unchecked")5 /*
6 *這兒是合法的,根據(jù)com.spring.db.controller.LoginController中handleRequest的返回?cái)?shù)據(jù)類型進(jìn)行設(shè)置的。7 */
8 List str= (List)request.getAttribute("uservo");9 %>
10
11
12
13
result14
15
16
17
18
19
編號(hào)20
姓名21
年齡22
23
24 for(UserVO user:str){25 %>
26
27
28
29
30
31
32 }33 %>
34
35
36
userInfo.jsp
參考文章
總結(jié)
以上是生活随笔為你收集整理的spring mysql 注解_【Spring】SpringMVC之基于注解的实现SpringMVC+MySQL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dz如何安装mysql_windows下
- 下一篇: mysql readline_readL