spring mysql 注解_【Spring】SpringMVC之基于注解的实现SpringMVC+MySQL
目錄結構:
contents structure [-]
SpringMVC是什么
MVC的全稱是Model View Controller,通過實現MVC框架可以很好的數據、視圖、業務邏輯進行分離。Spring MVC也是一種MVC框架,它是SpringFrameWork的后續產品,同樣需要Spring的Jar包才能運行起來。
SpringMVC工作原理
SpringMVC是一個基于DispatcherServlet的MVC框架,每一個請求最先訪問的就是DispatcherServlet,DispathcerServlet負責將每一個request轉發到相應的Controller,Controller處理后再返回模型(Model)和視圖(View)。在使用注解的SpringMVC中,處理器Controller是基于@Controller和@RequestMapping進行注解的。
@Controller和@RequestMapping注解
@Controller注解類型
聲明一個控制器類,DispatcherServlet會通過掃描機制找到該類,如下是一個@Controller的例子。
packagecom.example.controller;importorg.springframework.stereotype.Controller;
@Controllerpublic classProductController {
}
為了保證DispatcherServlet能夠掃描到該Controller,需要在DispatcherServlet中配置注解驅動和上下文掃描包。
上下文掃描包:
……
xmlns:context=http://www.springframework.org/schema/context
……
注解驅動包:
……
xmlns:mvc=http://www.springframework.org/schema/mvc
……
然后應用和元素:
......
......
@RequestMapping注解類型
該注解類型在控制器類的內部定義每一個動作相應的處理方法,一個采用@RequestMapping注釋的方法將成為一個請求處理方法,并由調度程序在接收到對應的URL請求時調用,下面是一個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等等。例如當HTPP POST或PUT方法時才調用test()方法。
@RequestMapping(value="/order_process", method={RequestMethod.POST, RequestMethod.PUT})publicString test(){//do something here
return "viewpage";
}
如果method屬性只有一個HTTP方法值,則無需{},直接為method=RequestMethod.POST,如果未指定method屬性,則請求處理方法可以處理任意HTTP方法。此外RequestMapping注釋類型也可以用來注釋一個控制器類。
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”;
}
}
在這種情況下,所有的方法都將映射為相對于類級別的請求,如例子中的deleteCustomer方法,由于控制器類映射使用"/customer",而deleteCustomer方法映射為"/delete",則需要通過 http://localhost:8081/SpringMVC/customer/delete 訪問。
基于注解的SpringMVC+MySQL
項目目錄結構:
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和版本有關系,筆者的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來指定,因為在spring-servlet.xml文件中已經指定了掃描包為"com.spring",而jdbcTemplate的包為“org.springframework.jdbc.core.JdbcTemplate”,所以會掃描不到JdbcTemplate的。在spring-servlet.xml已經通過bean的方式,將數據源注入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根據字面意思可以很快理解,就是自動配置。有@Autowired注解的變量,會按照掃描路徑進行查找文件并且自動配置信息。如果把userDao的注解@Autowired注解注釋掉,也可以通過bean來實現相同的效果,首先在LoginController類里把userDao進行setter,如:
public voidsetUserDao(UserDao userDao) {this.userDao =userDao;
}
然后再在spring-servlet.xml里面添加如下bean信息:
userInfo.jsp類
1
2
3
4 @SuppressWarnings("unchecked")5 /*
6 *這兒是合法的,根據com.spring.db.controller.LoginController中handleRequest的返回數據類型進行設置的。7 */
8 List str= (List)request.getAttribute("uservo");9 %>
10
11
12
13
result14
15
16
17
18
19
編號20
姓名21
年齡22
23
24 for(UserVO user:str){25 %>
26
27
28
29
30
31
32 }33 %>
34
35
36
userInfo.jsp
參考文章
總結
以上是生活随笔為你收集整理的spring mysql 注解_【Spring】SpringMVC之基于注解的实现SpringMVC+MySQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dz如何安装mysql_windows下
- 下一篇: mysql readline_readL