热门搜索 :
考研考公
您的当前位置:首页正文

spring调用mongodb

2023-11-10 来源:东饰资讯网

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:mongo="http://www.springframework.org/schema/data/mongo" 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/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd"> <mongo:mongo id="mongo" host="127.0.0.1" port="27017" /> <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials"> <constructor-arg name="username" value="userName"/> <constructor-arg name="password" value="password"/> </bean> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongo" /> <constructor-arg value="test-mongo" /> <constructor-arg ref="userCredentials" /> </bean> <bean id="userDao" class="com.x.mongodb.dao.impl.UserDao" /> </beans>

 

 

②.MongoTemplate  Api

 
 package com.x.mongodb.dao.support; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.data.mongodb.core.MongoTemplate; /** * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a> * @version <b>1.0</b> */ public abstract class AbstractBaseMongoTemplete implements ApplicationContextAware { protected MongoTemplate mongoTemplate; /** * 设置mongoTemplate * @param mongoTemplate the mongoTemplate to set */ public void setMongoTemplate(MongoTemplate mongoTemplate) { this.mongoTemplate = mongoTemplate; } public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { MongoTemplate mongoTemplate = applicationContext.getBean("mongoTemplate", MongoTemplate.class); setMongoTemplate(mongoTemplate); } } package com.x.mongodb.dao.impl; import java.util.List; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import com.x.mongodb.dao.IUserDao; import com.x.mongodb.dao.support.AbstractBaseMongoTemplete; import com.x.mongodb.entity.User; /** * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a> * @version <b>1.0</b> */ public class UserDao extends AbstractBaseMongoTemplete implements IUserDao { /** * 新增 * <br>------------------------------<br> * @param user */ public void insert(User user) { mongoTemplate.insert(user); } /** * 批量新增 * <br>------------------------------<br> * @param users */ public void insertAll(List<User> users) { mongoTemplate.insertAll(users); } /** * 删除,按主键id, 如果主键的值为null,删除会失败 * <br>------------------------------<br> * @param id */ public void deleteById(String id) { User user = new User(id, null, 0); mongoTemplate.remove(user); } /** * 按条件删除 * <br>------------------------------<br> * @param criteriaUser */ public void delete(User criteriaUser) { Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());; Query query = new Query(criteria); mongoTemplate.remove(query, User.class); } /** * 删除全部 * <br>------------------------------<br> */ public void deleteAll() { mongoTemplate.dropCollection(User.class); } /** * 按主键修改, * 如果文档中没有相关key 会新增 使用$set修改器 * <br>------------------------------<br> * @param user */ public void updateById(User user) { Criteria criteria = Criteria.where("id").is(user.getId()); Query query = new Query(criteria); Update update = Update.update("age", user.getAge()).set("name", user.getName()); mongoTemplate.updateFirst(query, update, User.class); } /** * 修改多条 * <br>------------------------------<br> * @param criteriaUser * @param user */ public void update(User criteriaUser, User user) { Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());; Query query = new Query(criteria); Update update = Update.update("name", user.getName()).set("age", user.getAge()); mongoTemplate.updateMulti(query, update, User.class); } /** * 根据主键查询 * <br>------------------------------<br> * @param id * @return */ public User findById(String id) { return mongoTemplate.findById(id, User.class); } /** * 查询全部 * <br>------------------------------<br> * @return */ public List<User> findAll() { return mongoTemplate.findAll(User.class); } /** * 按条件查询, 分页 * <br>------------------------------<br> * @param criteriaUser * @param skip * @param limit * @return */ public List<User> find(User criteriaUser, int skip, int limit) { Query query = getQuery(criteriaUser); query.skip(skip); query.limit(limit); return mongoTemplate.find(query, User.class); } /** * 根据条件查询出来后 再去修改 * <br>------------------------------<br> * @param criteriaUser 查询条件 * @param updateUser 修改的值对象 * @return */ public User findAndModify(User criteriaUser, User updateUser) { Query query = getQuery(criteriaUser); Update update = Update.update("age", updateUser.getAge()).set("name", updateUser.getName()); return mongoTemplate.findAndModify(query, update, User.class); } /** * 查询出来后 删除 * <br>------------------------------<br> * @param criteriaUser * @return */ public User findAndRemove(User criteriaUser) { Query query = getQuery(criteriaUser); return mongoTemplate.findAndRemove(query, User.class); } /** * count * <br>------------------------------<br> * @param criteriaUser * @return */ public long count(User criteriaUser) { Query query = getQuery(criteriaUser); return mongoTemplate.count(query, User.class); } /** * * <br>------------------------------<br> * @param criteriaUser * @return */ private Query getQuery(User criteriaUser) { if (criteriaUser == null) { criteriaUser = new User(); } Query query = new Query(); if (criteriaUser.getId() != null) { Criteria criteria = Criteria.where("id").is(criteriaUser.getId()); query.addCriteria(criteria); } if (criteriaUser.getAge() > 0) { Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge()); query.addCriteria(criteria); } if (criteriaUser.getName() != null) { Criteria criteria = Criteria.where("name").regex("^" + criteriaUser.getName()); query.addCriteria(criteria); } return query; } } [java] view plain copy print? package com.x.mongodb.dao; import java.util.List; import com.x.mongodb.entity.User; /** * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a> * @version <b>1.0</b> */ public interface IUserDao { /** * 新增 * <br>------------------------------<br> * @param user */ void insert(User user); /** * 新增 * <br>------------------------------<br> * @param users */ void insertAll(List<User> users); /** * 删除,主键id, 如果主键的值为null,删除会失败 * <br>------------------------------<br> * @param id */ void deleteById(String id); /** * 按条件删除 * <br>------------------------------<br> * @param criteriaUser */ void delete(User criteriaUser); /** * 删除全部 * <br>------------------------------<br> */ void deleteAll(); /** * 修改 * <br>------------------------------<br> * @param user */ void updateById(User user); /** * 更新多条 * <br>------------------------------<br> * @param criteriaUser * @param user */ void update(User criteriaUser, User user); /** * 根据主键查询 * <br>------------------------------<br> * @param id * @return */ User findById(String id); /** * 查询全部 * <br>------------------------------<br> * @return */ List<User> findAll(); /** * 按条件查询 * <br>------------------------------<br> * @param criteriaUser * @param skip * @param limit * @return */ List<User> find(User criteriaUser, int skip, int limit); /** * 根据条件查询出来后 在去修改 * <br>------------------------------<br> * @param criteriaUser 查询条件 * @param updateUser 修改的值对象 * @return */ User findAndModify(User criteriaUser, User updateUser); /** * 查询出来后 删除 * <br>------------------------------<br> * @param criteriaUser * @return */ User findAndRemove(User criteriaUser); /** * count * <br>------------------------------<br> * @param criteriaUser * @return */ long count(User criteriaUser); } [java] view plain copy print? package com.x.mongodb.entity; import java.io.Serializable; import java.util.HashMap; import java.util.Map; /** * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a> * @version <b>1.0</b> */ public class User implements Serializable { private static final long serialVersionUID = -5785857960597910259L; private String id; private String name; private int age; /** * <br>------------------------------<br> */ public User() { } /** * * <br>------------------------------<br> * @param id * @param name * @param age */ public User(String id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } /** * 获得id * @return the id */ public String getId() { return id; } /** * 设置id * @param id the id to set */ public void setId(String id) { this.id = id; } /** * 获得name * @return the name */ public String getName() { return name; } /** * 设置name * @param name the name to set */ public void setName(String name) { this.name = name; } /** * 获得age * @return the age */ public int getAge() { return age; } /** * 设置age * @param age the age to set */ public void setAge(int age) { this.age = age; } /** * toString */ public String toString() { Map<String, String> map = new HashMap<String, String>(); map.put("id", id); map.put("name", name); map.put("age", String.valueOf(age)); return map.toString(); } } [java] view plain copy print? import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.x.mongodb.dao.IUserDao; import com.x.mongodb.entity.User; /** * @author <a href="http://blog.csdn.net/java2000_wl">java2000_wl</a> * @version <b>1.0</b> */ public class UserDaoTest { /** * 新增 * <br>------------------------------<br> */ @Test public void testInsert() { getUserDao().insert(new User(null, "testUser", 21)); } /** * 批量新增 * <br>------------------------------<br> */ @Test public void testInsertAll() { List<User> list = new ArrayList<User>(); for (int i = 0; i < 10; i++) { list.add(new User(null, "testUser" + i, 21 + i)); } getUserDao().insertAll(list); } /** * 根据主键删除 * <br>------------------------------<br> */ @Test public void testDeleteById() { String id = "5058184ec85607e42c4bfad8"; getUserDao().deleteById(id); } /** * 条件删除 * <br>------------------------------<br> */ @Test public void testDelete() { //删除年龄大于25的 getUserDao().delete(new User(null, null, 25)); } /** * 删除全部 * <br>------------------------------<br> */ @Test public void testDeleteAll() { getUserDao().deleteAll(); } /** * 修改 根据id修改 * <br>------------------------------<br> */ @Test public void testUpdateById() { getUserDao().updateById(new User("50581c08c856346f02e9842c", "张三", 100)); } /** * 修改多个 * <br>------------------------------<br> */ @Test public void update() { //修改年龄大于29岁的 姓名为“王五“ User criteriaUser = new User(null, null, 29); User user = new User(null, "王五", 39); getUserDao().update(criteriaUser, user); } /** * 按主键查询, 如果不存在 返回null * <br>------------------------------<br> */ @Test public void testFindById() { User user = getUserDao().findById("50581c08c856346f02e98425"); print(user); } /** * 查询全部 * <br>------------------------------<br> */ @Test public void testFindAll() { List<User> list = getUserDao().findAll(); print(list); } /** * 按条件查询 * <br>------------------------------<br> */ @Test public void testFind() { //查询25岁以上的, 分页 User criteriaUser = new User(null, null, 20); List<User> list = getUserDao().find(criteriaUser, 1, 10); print(list); } /** * 查询出来后 修改 * <br>------------------------------<br> */ @Test public void testFindAndModify() { User criteriaUser = new User("50581c08c856346f02e9842d", null, 0); User updateUser = new User(null, "张三", 100); updateUser = getUserDao().findAndModify(criteriaUser, updateUser); print(updateUser); } /** * 查询出来后 删除 * <br>------------------------------<br> */ @Test public void testFindAndRemove() { User criteriaUser = new User("50581c08c856346f02e9842d", null, 0); criteriaUser = getUserDao().findAndRemove(criteriaUser); print(criteriaUser); } /** * count * <br>------------------------------<br> */ @Test public void testCount() { User criteriaUser = new User(null, "test", 0); long count = getUserDao().count(criteriaUser); print(count); } public void print(Object object) { if (object == null || !(object instanceof Collection)) { System.out.println(object); return; } List<?> list = (List<?>) object; for (Object obj : list) { System.out.println(obj); } } public IUserDao getUserDao() { String configLocations = "applicationContext.xml"; ApplicationContext applicationContext = new ClassPathXmlApplicationContext(configLocations); IUserDao userDao = applicationContext.getBean("userDao", IUserDao.class); return userDao; } } 

 

spring调用mongodb

标签:文件   add   nts   img   配置   template   span   limit   std   

小编还为您整理了以下内容,可能对您也有帮助:

springboot 链接mongodb异常

1.com.mongodb.MongoQueryException: Query failed with error code 2 and error message 'Field 'locale' is

实体类@Document注解去掉collection,如:@Document("test")

2.Mongodb Attempt to switch database target ring SASL authentication.", "code": 17

配置文件中uri末尾添加:?authSource=admin,如:

data:

mongodb:

uri: mongodb://name:pwd@host:27017/test?authSource=admin

3.可先在命令行验证链接:

/usr/local/bin/mongo mongodb://name:pwd@host:27017/test?authSource=admin

springmvc怎么连接mongodb

  1.   

 

[csharp] view plaincopy技术分享技术分享
  1. public class DBcon  
  2.     {  
  3.         public const string _connectionString = "Server=192.168.24.***:27017";  
  4.   
  5.         public const string _vediotest = "Vediotest";  
  6.     }  

            192.168.24.***是要连接的服务器的网址,27017是服务器指定的连接端口。本机地址,直接写端口就可以。

 

    接下来是实现向Mongo中添加数据的方法。

 

[csharp] view plaincopy技术分享技术分享
  1. //上传视频  
  2.        public static void AddVedio(VedioTestModels model)  
  3.        {  
  4.            using (Mongo mg = new Mongo(DBcon._connectionString))  
  5.            {  
  6.                mg.Connect();  
  7.                var db = mg.GetDatabase(DBcon._vediotest);  
  8.                var list = db.GetCollection<VedioTestModels>();  
  9.                list.Insert(model);  
  10.            }  
  11.        }  

controler中的方法。

 

 

[csharp] view plaincopy技术分享技术分享
  1. //向数据库中存入信息  
  2.         [AcceptVerbs(HttpVerbs.Post)]  
  3.         public ActionResult Index2(HttpPostedFileBase file, HttpPostedFileBase text,VedioTestModels model)  
  4.          {  
  5.              if (file.ContentLength > 0)  
  6.              {  
  7.                  //获得保存路径  
  8.                  string filePath = Path.Combine(HttpContext.Server.MapPath("../Uploads"),  
  9.                                  Path.GetFileName(file.FileName));  
  10.                  file.SaveAs(filePath);  
  11.   
  12.                  model.vedio = filePath;  
  13.                  model.Id = Guid.NewGuid();  
  14.                  model.vedioName = "../../Uploads/" + Path.GetFileName(file.FileName);  
  15.                  //model.Id=Request["text"];  
  16.                  Biz.BizModel.AddVedio(model);  
  17.             }  
  18.             return View();  
  19.         }  

 

 

    view中是以提交表单的方式实现的,向Controler中传递数据。

 

[csharp] view plaincopy技术分享技术分享
  1. @using (Html.BeginForm("Index2", "VedioTest", FormMethod.Post, new { enctype = "multipart/form-data" }))  
  2. {   
  3. @*<form action="upload" method="post" enctype="multipart/form-data"> *@  
  4.     <form>   
  5.      <input type="file" name="file" /><br />   
  6.      <input type="text" name="text" /><br />  
  7.      <input type="submit" name="Submit" id="Submit"/>   
  8. </form>   
  9. }  

  当然在连接mongo之前要开启服务,首先开机mongo,其次开启端口。这个可以通过写批处理文件,单击批处理文

 

件开启。

    开启mongo的代码:mongod --dbpath E:MongeDBData

    开启端口的代码:mongo 127.0.0.1:27017/admin

    下面展示一下实现的效果:

    (1)选择要上传的文件

技术分享

(2)查询数据库,数据库中已经加入上传信息

技术分享

(3)文件已经上传到指定文件加下(Uploads)

技术分享

 

项目总结——MVC+MongoDB实现文件上传

标签:

springmvc怎么连接mongodb

  1.   

 

[csharp] view plaincopy技术分享技术分享
  1. public class DBcon  
  2.     {  
  3.         public const string _connectionString = "Server=192.168.24.***:27017";  
  4.   
  5.         public const string _vediotest = "Vediotest";  
  6.     }  

            192.168.24.***是要连接的服务器的网址,27017是服务器指定的连接端口。本机地址,直接写端口就可以。

 

    接下来是实现向Mongo中添加数据的方法。

 

[csharp] view plaincopy技术分享技术分享
  1. //上传视频  
  2.        public static void AddVedio(VedioTestModels model)  
  3.        {  
  4.            using (Mongo mg = new Mongo(DBcon._connectionString))  
  5.            {  
  6.                mg.Connect();  
  7.                var db = mg.GetDatabase(DBcon._vediotest);  
  8.                var list = db.GetCollection<VedioTestModels>();  
  9.                list.Insert(model);  
  10.            }  
  11.        }  

controler中的方法。

 

 

[csharp] view plaincopy技术分享技术分享
  1. //向数据库中存入信息  
  2.         [AcceptVerbs(HttpVerbs.Post)]  
  3.         public ActionResult Index2(HttpPostedFileBase file, HttpPostedFileBase text,VedioTestModels model)  
  4.          {  
  5.              if (file.ContentLength > 0)  
  6.              {  
  7.                  //获得保存路径  
  8.                  string filePath = Path.Combine(HttpContext.Server.MapPath("../Uploads"),  
  9.                                  Path.GetFileName(file.FileName));  
  10.                  file.SaveAs(filePath);  
  11.   
  12.                  model.vedio = filePath;  
  13.                  model.Id = Guid.NewGuid();  
  14.                  model.vedioName = "../../Uploads/" + Path.GetFileName(file.FileName);  
  15.                  //model.Id=Request["text"];  
  16.                  Biz.BizModel.AddVedio(model);  
  17.             }  
  18.             return View();  
  19.         }  

 

 

    view中是以提交表单的方式实现的,向Controler中传递数据。

 

[csharp] view plaincopy技术分享技术分享
  1. @using (Html.BeginForm("Index2", "VedioTest", FormMethod.Post, new { enctype = "multipart/form-data" }))  
  2. {   
  3. @*<form action="upload" method="post" enctype="multipart/form-data"> *@  
  4.     <form>   
  5.      <input type="file" name="file" /><br />   
  6.      <input type="text" name="text" /><br />  
  7.      <input type="submit" name="Submit" id="Submit"/>   
  8. </form>   
  9. }  

  当然在连接mongo之前要开启服务,首先开机mongo,其次开启端口。这个可以通过写批处理文件,单击批处理文

 

件开启。

    开启mongo的代码:mongod --dbpath E:MongeDBData

    开启端口的代码:mongo 127.0.0.1:27017/admin

    下面展示一下实现的效果:

    (1)选择要上传的文件

技术分享

(2)查询数据库,数据库中已经加入上传信息

技术分享

(3)文件已经上传到指定文件加下(Uploads)

技术分享

 

项目总结——MVC+MongoDB实现文件上传

标签:

spring连接MongoDB报错XXX, password=<hidden>

SpringBoot在yaml中配置MongDB:

报错提示密码password= hidden 没用输入,账号admin,123456在xshell和naviate都能正常进入。

正确配置:

密码需要用单引号引入才行。

spring连接MongoDB报错XXX, password=<hidden>

SpringBoot在yaml中配置MongDB:

报错提示密码password= hidden 没用输入,账号admin,123456在xshell和naviate都能正常进入。

正确配置:

密码需要用单引号引入才行。

mongodb struts spring怎么集成使用

mongodb struts spring集成使用方法:
1、 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口
<mongo:mongo id="mongo" replica-set="localhost:27017">
<!-- 一些连接属性的设置 -->
<mongo:options
connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}"
max-wait-time="${mongo.maxWaitTime}"
auto-connect-retry="${mongo.autoConnectRetry}"
socket-keep-alive="${mongo.socketKeepAlive}"
socket-timeout="${mongo.socketTimeout}"
slave-ok="${mongo.slaveOk}"
write-number="1"
write-timeout="0"
write-fsync="true"/>
</mongo:mongo>
2、定义mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建
<mongo:db-factory dbname="test" mongo-ref="mongo"/>
3、 mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
4、 映射转换器,扫描back-package目录下的文件,根据注释,把它们作为mongodb的一个collection的映射
<mongo:mapping-converter base-package="com.xxx.xxx.domain" />

<!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 -->
<mongo:repositories base-package="com.xxx.xxx.persist.mongodb"/>

mongodb struts spring怎么集成使用

mongodb struts spring集成使用方法:
1、 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口
<mongo:mongo id="mongo" replica-set="localhost:27017">
<!-- 一些连接属性的设置 -->
<mongo:options
connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}"
max-wait-time="${mongo.maxWaitTime}"
auto-connect-retry="${mongo.autoConnectRetry}"
socket-keep-alive="${mongo.socketKeepAlive}"
socket-timeout="${mongo.socketTimeout}"
slave-ok="${mongo.slaveOk}"
write-number="1"
write-timeout="0"
write-fsync="true"/>
</mongo:mongo>
2、定义mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建
<mongo:db-factory dbname="test" mongo-ref="mongo"/>
3、 mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
4、 映射转换器,扫描back-package目录下的文件,根据注释,把它们作为mongodb的一个collection的映射
<mongo:mapping-converter base-package="com.xxx.xxx.domain" />

<!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 -->
<mongo:repositories base-package="com.xxx.xxx.persist.mongodb"/>

使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题?_百度...

使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题如下:

在使用SpringMVC框架时,配置web.xml文件时,springDispatcherServlet的配置:

可以看到servlet过滤的是所有的请求url,因此当浏览器在访问css、js、image等静态资源时也需要通过验证是否已经有相关的映射,如果没有则无法访问到(有时可能会觉得是路径配置不对,但是你会发现无论怎么改路径都访问不到),比如你在controller里注解了一个请求的 url,那么你就可以访问到你想获取的资源或者页面,但是静态资源时没有注解的,所以当你在页面上使用css或者引入js文件时就无法访问。

解决方法:

1、添加默认的servlet-mapping :

2、将你所需要访问静态资源添以通配符的形式加到web.xml的servlet-mapping中,就可以轻松地访问到你精心设计的js和css了。

使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题?_百度...

使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题如下:

在使用SpringMVC框架时,配置web.xml文件时,springDispatcherServlet的配置:

可以看到servlet过滤的是所有的请求url,因此当浏览器在访问css、js、image等静态资源时也需要通过验证是否已经有相关的映射,如果没有则无法访问到(有时可能会觉得是路径配置不对,但是你会发现无论怎么改路径都访问不到),比如你在controller里注解了一个请求的 url,那么你就可以访问到你想获取的资源或者页面,但是静态资源时没有注解的,所以当你在页面上使用css或者引入js文件时就无法访问。

解决方法:

1、添加默认的servlet-mapping :

2、将你所需要访问静态资源添以通配符的形式加到web.xml的servlet-mapping中,就可以轻松地访问到你精心设计的js和css了。

你好,可以将您实现的Spring Security + MongoDb 方案分享下吗?谢谢

Spring Security的相关配置:

1、建一个web project,并导入所有需要的lib

2、配置web.xml,使用Spring的机制装载:

           

 

3、来看看applicationContext.xml这个配置文件,关于Spring的基本配置和 Spring Security和的配置均在其中:

    

    

    

    

4、这些基本配置完成后  我们可以通过重写各种filter来实现我们的功能

Spring Security3的使用方法有4种:

一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中。

二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置。

三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,并分别实现AccessDecisionManager、

InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中进行相应配置。

四是修改spring security的源代码,主要是修改InvocationSecurityMetadataSourceService和UserDetailsService两个类。

前者是将配置文件或数据库中存储的资源(url)提取出来加工成为url和权限列表的Map供Security使用,后者提取用户名和权限组成一个完整的 (UserDetails)User对象,该对象可以提供用户的详细信息供AuthentationManager进行认证与授权使用。该方法理论上可行,但是比较暴力,不推荐使用。

来自:求助得到的回答

Top