日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringMVC+redis整合

發(fā)布時間:2025/6/15 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC+redis整合 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

SpringMVC+redis整合

?

?

?

在網(wǎng)絡(luò)上有一個很多人轉(zhuǎn)載的springmvc+redis整合的案例,不過一直不完整,也是被各種人裝來轉(zhuǎn)去,現(xiàn)在基本將該框架搭建起來。

1

2

3

4

5

6

7

package com.pudp.bae.base;

?

import java.io.Serializable;

?

public abstract class BaseModel implements Serializable{

?

}

  

1

2

3

4

5

6

7

8

9

10

11

12

13

package com.pudp.bae.base;

?

import java.util.Map;

?

import org.springframework.web.servlet.ModelAndView;

?

public class BaseMultiController {

????protected ModelAndView toView(final String url,final Map<String,Object> map)

????{??

????????ModelAndView? view = new ModelAndView(url);

????????return view;

????}

}

?

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

package com.pudp.bae.base;

?

import java.io.Serializable;

?

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.data.redis.serializer.RedisSerializer;

?

public abstract class RedisGeneratorDao<K extends Serializable, V extends Serializable>? {

???

??@Autowired

??protected RedisTemplate<K,V> redisTemplate ;

?

??/**

???* 設(shè)置redisTemplate

???* @param redisTemplate the redisTemplate to set

???*/?

??public void setRedisTemplate(RedisTemplate<K, V> redisTemplate) {?

????this.redisTemplate = redisTemplate;?

??}?

?????

??/**

???* 獲取 RedisSerializer

???* <br>------------------------------<br>

???*/?

??protected RedisSerializer<String> getRedisSerializer() {?

????return redisTemplate.getStringSerializer();?

??}

?

}

?

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

package com.pudp.bae.controller;

?

import java.util.HashMap;

import java.util.Map;

?

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

?

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.ModelAttribute;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.servlet.ModelAndView;

?

import com.pudp.bae.base.BaseMultiController;

import com.pudp.bae.model.Member;

import com.pudp.bae.service.MemberService;

?

@Controller

@RequestMapping(value = "/member")

public class MemberController extends BaseMultiController {

?

????@Autowired

????private MemberService memberService;

?

????public void setMemberService(MemberService memberService) {

????????this.memberService = memberService;

????}

?

????@RequestMapping(value = { "/add", "/add.html" }, method = { RequestMethod.GET })

????public ModelAndView add(HttpServletRequest request,

????????????HttpServletResponse response) {

????????Map<String, Object> map = new HashMap<String, Object>();

????????Member member = new Member();

????????member.setId("1");

????????member.setNickname("guoxiaoming");

????????this.memberService.add(member);

?????????

????????return toView("add", map);

????}

?

????@RequestMapping(value = { "/add", "/add.html" }, method = { RequestMethod.POST })

????public ModelAndView addMember(HttpServletRequest request,

????????????HttpServletResponse response,

????????????@ModelAttribute("member") Member member) {

????????Map<String, Object> map = new HashMap<String, Object>();

????????System.out.println(member);

????????map.put("message", "成功添加數(shù)據(jù)到庫," + member);

????????this.memberService.add(member);

????????return toView("message", map);

????}

?

????@RequestMapping(value = { "/{id:\\d+}/query", "/{id:\\d+}/query.html" }, method = {

????????????RequestMethod.GET, RequestMethod.POST })

????public ModelAndView queryMember(HttpServletRequest request,

????????????HttpServletResponse response, @PathVariable("id") String id) {

????????Map<String, Object> map = new HashMap<String, Object>();

????????System.out.println(id);

????????Member member = this.memberService.get(id);

????????if (null != member) {

????????????map.put("message", "查詢Id=" + id + "的用戶名為:" + member.getNickname());

????????} else {

????????????map.put("message", "沒有查詢到與Id=" + id + "相關(guān)的數(shù)據(jù)");

????????}

????????return toView("message", map);

????}

?

????@RequestMapping(value = { "/{id:\\d+}/delete", "/{id:\\d+}/delete.html" }, method = {

????????????RequestMethod.GET, RequestMethod.POST })

????public ModelAndView deleteMember(HttpServletRequest request,

????????????HttpServletResponse response, @PathVariable("id") String id) {

????????Map<String, Object> map = new HashMap<String, Object>();

????????try {

????????????this.memberService.delete(id);

????????????map.put("message", "刪除Id為" + id + "的用戶成功.");

????????} catch (Exception e) {

????????????e.printStackTrace();

????????????map.put("message", "刪除Id為" + id + "的用戶失敗, " + e.getMessage());

????????}

????????return toView("message", map);

????}

?

}

  

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

package com.pudp.bae.dao.redis;

?

import java.util.List;

?

import com.pudp.bae.model.Member;

?

public interface MemberDao {

????boolean add(Member member);

?

????abstract boolean add(List<Member> list);

?

????void delete(String key);

?

????Member get(String keyId);

?????

}

 

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

package com.pudp.bae.dao.redis;

?

import java.util.ArrayList;

import java.util.List;

?

import org.springframework.dao.DataAccessException;

import org.springframework.data.redis.connection.RedisConnection;

import org.springframework.data.redis.core.RedisCallback;

import org.springframework.data.redis.serializer.RedisSerializer;

import org.springframework.stereotype.Repository;

import org.springframework.util.Assert;

?

import com.pudp.bae.base.RedisGeneratorDao;

import com.pudp.bae.model.Member;

?

?

@Repository(value="memberDao")

public class MemberDaoImpl extends RedisGeneratorDao<String,Member> implements MemberDao{

???

??/**

???* 添加對象

???*/

??@Override

??public boolean add(final Member member) {?

????boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {?

??????public Boolean doInRedis(RedisConnection connection)?

??????????throws DataAccessException {?

????????RedisSerializer<String> serializer = getRedisSerializer();?

????????byte[] key? = serializer.serialize(member.getId());?

????????byte[] name = serializer.serialize(member.getNickname());?

????????return connection.setNX(key, name);?

??????}?

????});?

????return result;?

??}?

?

??/**

???* 添加集合

???*/

??@Override

??public boolean add(final List<Member> list) {

????Assert.notEmpty(list);?

????boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {?

??????public Boolean doInRedis(RedisConnection connection)?

??????????throws DataAccessException {?

????????RedisSerializer<String> serializer = getRedisSerializer();?

????????for (Member member : list) {?

??????????byte[] key? = serializer.serialize(member.getId());?

??????????byte[] name = serializer.serialize(member.getNickname());?

??????????connection.setNX(key, name);?

????????}?

????????return true;?

??????}?

????}, false, true);?

????return result;

??}?

???

??/**

???* 刪除對象 ,依賴key

???*/

??@Override

??public void delete(String key) {?

????List<String> list = new ArrayList<String>();?

????list.add(key);?

????delete(list);?

??}?

???

??/**

???* 刪除集合 ,依賴key集合

???*/

??public void delete(List<String> keys) {?

????redisTemplate.delete(keys);?

??}?

???

??/**

???* 修改對象

???*/

??public boolean update(final Member member) {?

????String key = member.getId();?

????if (get(key) == null) {?

??????throw new NullPointerException("數(shù)據(jù)行不存在, key = " + key);?

????}?

????boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {?

??????public Boolean doInRedis(RedisConnection connection)?

??????????throws DataAccessException {?

????????RedisSerializer<String> serializer = getRedisSerializer();?

????????byte[] key? = serializer.serialize(member.getId());?

????????byte[] name = serializer.serialize(member.getNickname());?

????????connection.set(key, name);?

????????return true;?

??????}?

????});?

????return result;?

??}?

???

??/**

???* 根據(jù)key獲取對象

???*/

??@Override

??public Member get(final String keyId) {?

????Member result = redisTemplate.execute(new RedisCallback<Member>() {?

??????public Member doInRedis(RedisConnection connection)?

??????????throws DataAccessException {?

????????RedisSerializer<String> serializer = getRedisSerializer();?

????????byte[] key = serializer.serialize(keyId);?

????????byte[] value = connection.get(key);?

????????if (value == null) {?

??????????return null;?

????????}?

????????String nickname = serializer.deserialize(value);?

????????return new Member(keyId, nickname);?

??????}?

????});?

????return result;?

??}?

?

}

?

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

package com.pudp.bae.model;

?

import com.pudp.bae.base.BaseModel;

?

public class Member extends BaseModel{

??

??private static final long serialVersionUID = -1959528436584592183L;

??private String id;

??private String nickname;

???

??public Member(){}

???

??public Member(String id, String nickname){

????this.setId(id);

????this.setNickname(nickname);

??}

???

??public String getId() {

????return id;

??}

???

??public void setId(String id) {

????this.id = id;

??}

???

??public String getNickname() {

????return nickname;

??}

???

??public void setNickname(String nickname) {

????this.nickname = nickname;

??}

???

}

?

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

package com.pudp.bae.service;

?

import javax.annotation.Resource;

?

import com.pudp.bae.dao.redis.MemberDao;

import com.pudp.bae.model.Member;

?

public class MemberService {

??????

?????@Resource(name="memberDao")

?????private MemberDao memberDao;

??????

?????public void setMemberDao(MemberDao memberDao)

?????{

????????this.memberDao = memberDao;

?????}

???????

?????public void add(Member member){

?????????memberDao.add(member);

?????}

??????

?????public void delete(String id){

?????????memberDao.delete(id);

?????}

??????

?????public Member get(String id)

?????{

?????????return memberDao.get(id);

?????}

}

redis-context.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

<beans??? xmlns="http://www.springframework.org/schema/beans"

???????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

???????xmlns:p="http://www.springframework.org/schema/p"

???????xmlns:tx="http://www.springframework.org/schema/tx"

???????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.0.xsd

??????http://www.springframework.org/schema/tx

??????http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

??????http://www.springframework.org/schema/context

??????http://www.springframework.org/schema/context/spring-context-3.0.xsd

?????????">

???

??<!-- scanner redis properties? -->

??<context:property-placeholder location="/WEB-INF/property/redis.properties" />

???

??<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">?

????<property name="maxIdle" value="${redis.maxIdle}" />?

????<property name="maxActive" value="${redis.maxActive}" />?

????<property name="maxWait" value="${redis.maxWait}" />?

????<property name="testOnBorrow" value="${redis.testOnBorrow}" />?

??</bean>?

?????

??<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"?

????p:host-name="${redis.host}"

????p:port="${redis.port}"

????p:password="${redis.pass}"?

????p:pool-config-ref="poolConfig"/>?

?????

??<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">?

????<property name="connectionFactory"?? ref="connectionFactory" />?

??</bean>??

????

</beans>?

?

spring-context.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

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

????xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"

????xmlns:util="http://www.springframework.org/schema/util"

????xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd?

??????http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd?

??????http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd?????????

??????http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">

?????

?????

????<!-- 激活@Controller模式 -->

????<mvc:annotation-driven />

?

?????

????<!-- 對包中的所有類進行掃描,以完成Bean創(chuàng)建和自動依賴注入的功能 需要更改 -->

????<context:component-scan base-package="com.pudp.bae.*" />

??

????<bean id="memberService" class="com.pudp.bae.service.MemberService"/>

?????

?????

????<!-- 引入同文件夾下的redis屬性配置文件 -->

????<import resource="redis-context.xml"/>

?

</beans>

spring-mvc.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

?????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

?????xmlns:context="http://www.springframework.org/schema/context"

?????xmlns:mvc="http://www.springframework.org/schema/mvc"

?????xsi:schemaLocation="http://www.springframework.org/schema/beans

?????????http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

?????????http://www.springframework.org/schema/context

?????????http://www.springframework.org/schema/context/spring-context-3.0.xsd

?????????http://www.springframework.org/schema/mvc

?????????http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

??????????

??

<!-- 配置視圖解析器,把控制器的邏輯視頻映射為真正的視圖 -->

<!-- /WEB-INF/jsp/start.jsp -->

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">

????<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

????<property name="prefix" value="/WEB-INF/jsp/" />

????<property name="suffix" value=".jsp" />

</bean>

?

</beans>

redis.properties

1

2

3

4

5

6

7

8

9

10

11

# Redis settings

#redis.host=192.168.20.101

#redis.port=6380

#redis.pass=foobared

redis.host=127.0.0.1

redis.port=6379

redis.pass=xx

redis.maxIdle=300

redis.maxActive=600

redis.maxWait=1000

redis.testOnBorrow=true

?

web.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

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4" aaxmlns="http://java.sun.com/xml/ns/j2ee"

????aaxmlns:xsi="w3.org/2001/XMLSchema-instance"

????aaxsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

????<display-name>SpringMVCRedis</display-name>

????<listener>

????????<listener-class>org.springframework.web.context.ContextLoaderListener

????????</listener-class>

????</listener>

?

????<context-param>

????????<param-name>contextConfigLocation</param-name>

????????<param-value>/WEB-INF/context/spring-context.xml</param-value>

????</context-param>

?

????<filter>

????????<filter-name>SpringEncodingFilter</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>

?

????????<init-param>

????????????<param-name>forceEncoding</param-name>

????????????<param-value>true</param-value>

????????</init-param>

????</filter>

?

????<filter-mapping>

????????<filter-name>SpringEncodingFilter</filter-name>

????????<url-pattern>/*</url-pattern>

????</filter-mapping>

?

????<servlet>

????????<servlet-name>mvc</servlet-name>

????????<servlet-class>org.springframework.web.servlet.DispatcherServlet

????????</servlet-class>

????????<init-param>

????????????<param-name>contextConfigLocation</param-name>

????????????<param-value>/WEB-INF/context/spring-mvc.xml</param-value>

????????</init-param>

????????<load-on-startup>2</load-on-startup>

????</servlet>

?

????<servlet-mapping>

????????<servlet-name>mvc</servlet-name>

????????<url-pattern>/</url-pattern>

????</servlet-mapping>

?

????<welcome-file-list>

????????<welcome-file>index.jsp</welcome-file>

????</welcome-file-list>

</web-app>

轉(zhuǎn)載于:https://my.oschina.net/maojindaoGG/blog/1559891

總結(jié)

以上是生活随笔為你收集整理的SpringMVC+redis整合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。