时间:2021-07-01 10:21:17 帮助过:17人阅读
1 #对html检查不那么严格 2 spring.thymeleaf.mode = LEGACYHTML5
spring boot建议不要使用JSP,建议使用Thymeleaf来做动态页面传递参数到html页面,也就是html页面
在pom.xml中启用themleaf模板依赖:
注意的是:在controller层中配置 @Controller 才能在controller层中 return 到 html 页面,
因为使用 @Controller 才可以返回html页面,使用@ResController 返回的是字符串
1 <!-- themleaf模板依赖--> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-thymeleaf</artifactId> 5 </dependency>
使用的是 MongoDB数据库,所以需要增加mongodb支持 :
1 <!-- 增加mongodb支持 --> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-data-mongodb</artifactId> 5 </dependency>
因为MongoDB默认是没有用户名密码,所以在 application.properties 对 MongoDB 的只需要配置上:选择要操作的数据库名称
当要选择操作数据库的某个集合(表)的时候,就是定义的实体类的名称,所以实体类的名称一定要与你选择的数据库里面的集合(表)名相对应,如果不存在,就会自动创建该集合(表)
1 # 选择数据库名称 2 spring.data.mongodb.database=krry_test
后台可使用 model 存放数据,注意的是 Model 是 request 级别的
1 @RequestMapping(value="/index") 2 public String index(Model model){ 3 4 User usero = new User("##errors##","1234"); 5 model.addAttribute("user", usero); 6 7 return "index"; 8 }
在 html 标签设置:<html xmlns:th="http://www.thymeleaf.org">
在标签内部用 th:text="${user.username}" 获取
1 <!DOCTYPE HTML> 2 <html xmlns:th="http://www.thymeleaf.org"> 3 <head> 4 <title>首页</title> 5 </head> 6 <body> 7 8 <span class="username" th:text="${user.username}"></span> 9 10 </body> 11 </html>
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 2 <modelVersion>4.0.0</modelVersion> 3 <groupId>com.krry</groupId> 4 <artifactId>springboot_mongodb</artifactId> 5 <version>0.0.1-SNAPSHOT</version> 6 <!-- 7 spring boot 父节点依赖, 8 引入这个之后相关的引入就不需要添加version配置, 9 spring boot会自动选择最合适的版本进行添加。 10 --> 11 <parent> 12 <groupId>org.springframework.boot</groupId> 13 <artifactId>spring-boot-starter-parent</artifactId> 14 <version>1.5.2.RELEASE</version> 15 </parent> 16 17 <!-- spring boot web支持:mvc,aop... --> 18 <dependencies> 19 20 <dependency> 21 <groupId>org.springframework.boot</groupId> 22 <artifactId>spring-boot-starter-web</artifactId> 23 </dependency> 24 <!-- themleaf模板依赖--> 25 <dependency> 26 <groupId>org.springframework.boot</groupId> 27 <artifactId>spring-boot-starter-thymeleaf</artifactId> 28 </dependency> 29 30 <!--启用不严格检查html--> 31 <dependency> 32 <groupId>net.sourceforge.nekohtml</groupId> 33 <artifactId>nekohtml</artifactId> 34 </dependency> 35 36 <!-- 增加mongodb支持 --> 37 <dependency> 38 <groupId>org.springframework.boot</groupId> 39 <artifactId>spring-boot-starter-data-mongodb</artifactId> 40 </dependency> 41 42 </dependencies> 43 44 </project>
1 # MongoDB 默认是无密码,这里配置一下要操作的数据库名称就行 2 #spring.data.mongodb.authentication-database= # Authentication database name. 3 # 选择数据库名称 4 spring.data.mongodb.database=krry_test 5 #对html检查不那么严格 6 spring.thymeleaf.mode = LEGACYHTML5 7 #spring.data.mongodb.field-naming-strategy= # Fully qualified name of the FieldNamingStrategy to use. 8 #spring.data.mongodb.grid-fs-database= # GridFS database name. 9 #spring.data.mongodb.host=localhost # Mongo server host. 10 #spring.data.mongodb.password= # Login password of the mongo server. 11 #spring.data.mongodb.port=27017 # Mongo server port. 12 #spring.data.mongodb.repositories.enabled=true # Enable Mongo repositories. 13 #spring.data.mongodb.uri=mongodb://localhost/test # Mongo database URI. When set, host and port are ignored. 14 #spring.data.mongodb.username= # Login user of the mongo server.
1 package com.krry.entity; 2 3 import org.springframework.data.annotation.Id; 4 5 /** 6 * 实体类,类名对应的是MongoDB的集合名(表名),若没有,则自动创建 7 * @author asusaad 8 * 9 */ 10 public class User { 11 12 /** 13 * cid:该字段用于mongodb的“_id"索引 14 * 1 需要 @Id的注解 15 * 2定义为String类型 ,如果定义为Integer可能索引只会是0 16 * 会出现key重复导致数据库插不进去的情况 17 * 3该类型也是MongoRepository泛型类主键的ID 18 * 19 */ 20 @Id 21 private String cid; 22 private String username; 23 private String password; 24 25 public User(){ 26 27 } 28 29 public User(String username, String password) { 30 this.username = username; 31 this.password = password; 32 } 33 34 public String getCid() { 35 return cid; 36 } 37 public void setCid(String cid) { 38 this.cid = cid; 39 } 40 public String getUsername() { 41 return username; 42 } 43 public void setUsername(String username) { 44 this.username = username; 45 } 46 public String getPassword() { 47 return password; 48 } 49 public void setPassword(String password) { 50 this.password = password; 51 } 52 53 54 }
1 package com.krry.repository; 2 3 import org.springframework.data.mongodb.repository.MongoRepository; 4 5 import com.krry.entity.User; 6 7 8 public interface UserRepository extends MongoRepository<User, String> { 9 /** 10 * 11 * findByUsername 命名有研究,比如 findBy后面的名称是实体类属性名称 12 * Username 13 * 14 */ 15 public User findByUsername(String username); 16 }
1 package com.krry.controller; 2 3 import java.util.List; 4 5 import javax.servlet.http.HttpServletRequest; 6 7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.data.mongodb.core.MongoTemplate; 9 import org.springframework.stereotype.Controller; 10 import org.springframework.ui.Model; 11 import org.springframework.web.bind.annotation.RequestMapping; 12 import org.springframework.web.bind.annotation.ResponseBody; 13 14 import com.krry.entity.User; 15 import com.krry.repository.UserRepository; 16 17 //使用@Controller 才可以返回html页面,使用@ResController 返回的是字符串 18 @Controller 19 @RequestMapping(value="/index") 20 public class UserController { 21 22 @Autowired 23 private UserRepository userRepository; 24 25 @Autowired 26 private MongoTemplate mongoTemplate; 27 28 //spring boot建议不要使用JSP,默认使用Thymeleaf来做动态页面传递参数到html页面 29 //Model是request级别的 30 /** 31 * 首页 32 * @param request 33 * @return 34 */ 35 @RequestMapping(value="/index") 36 public String index(Model model,HttpServletRequest request){ 37 38 User user = (User) request.getAttribute("user"); 39 40 if(user == null){ 41 // System.out.println(user); 42 User usero = new User("##errors##","1234"); 43 model.addAttribute("user", usero); 44 } 45 46 return "index"; 47 } 48 49 /** 50 * 打开登录界面 51 * @return 52 */ 53 @RequestMapping(value="/oplogin") 54 public String oplogin(){ 55 56 return "login"; 57 } 58 59 /** 60 * 登录 61 * @param model 62 * @return 63 */ 64 @RequestMapping(value="/login") 65 public String login(HttpServletRequest request){ 66 //获取用户和密码 67 String username = request.getParameter("username"); 68 String password = request.getParameter("password"); 69 70 71 //根据用户名查询,用户是否存在 72 User user = userRepository.findByUsername(username); 73 74 //如果存在 75 if(user!=null){ 76 77 if(password.equals(user.getPassword())){ 78 //如果密码正确 79 //将用户信息放入到会话中... 80 request.setAttribute("user", user); 81 82 return "index"; 83 84 }else{ 85 //如果密码错误 86 System.out.println("密码错误"); 87 return "ferror"; 88 } 89 }else{ 90 //如果不存在,代码邮箱和密码输入有误 91 System.out.println("用户不存在"); 92 return "ferror"; 93 } 94 } 95 96 97 98 /** 99 * 打开注册界面 100 * @return 101 */ 102 @RequestMapping("/resgi") 103 public String resgi(){ 104 105 return "resgi"; 106 } 107 108 109 /** 110 * 注册控制层 111 * @param request 112 * @return 113 */ 114 @RequestMapping(value="/rege") 115 public String resig(HttpServletRequest request){ 116 //获取用户和密码 117 String username = request.getParameter("username"); 118 String password = request.getParameter("password"); 119 120 //根据昵称查询,用户是否存在 121 User user = userRepository.findByUsername(username); 122 123 //若存在 124 if(user != null){ //昵称重复 125 return "ferror"; 126 } 127 128 //若不存在 129 User newUser = new User(username,password); 130 //注册 131 userRepository.save(newUser); 132 133 //将信息设置session作用域 134 request.setAttribute("user", newUser); 135 136 return "index"; 137 } 138 139 @ResponseBody 140 @RequestMapping("/findByName") 141 public User findByName(){ 142 143 return userRepository.findByUsername("krryxq"); 144 } 145 146 @ResponseBody 147 @RequestMapping("/find") 148 public List<User> find(){ 149 150 return mongoTemplate.findAll(User.class); 151 } 152 }
1 package com.krry; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 6 @SpringBootApplication 7 public class MongoDBApllication { 8 9 public static void main(String[] args) { 10 SpringApplication.run(MongoDBApllication.class, args); 11 } 12 }
1 <!DOCTYPE HTML> 2 <html xmlns:th="http://www.thymeleaf.org"> 3 <head> 4 <title>首页</title> 5 </head> 6 <body> 7 8 <p class="title">用户名:<span class="username" th:text="${user.username}"></span>已登录</p> 9 <a href="/index/logout" id="login"></a> 10 11 <script type="text/javascript" th:src="@{/js/jquery-1.11.2.min.js}"></script> 12 <script type="text/javascript"> 13 if($(".username").text() == "##errors##"){ 14 $(".title").text("未登录"); 15 $("#login").attr("href","/index/oplogin"); 16 $("#login").text("点击登陆"); 17 } 18 /** 19 * 判断非空 20 * 21 * @param val 22 * @returns {Boolean} 23 */ 24 function isEmpty(val) { 25 val = $.trim(val); 26 if (val == null) 27 return true; 28 if (val == undefined || val == ‘undefined‘) 29 return true; 30 if (val == "") 31 return true; 32 if (val.length == 0) 33 return true; 34 if (!/[^(^\s*)|(\s*$)]/.test(val)) 35 return true; 36 return false; 37 } 38 </script> 39 </body> 40 </html>
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 5 <title>登录界面</title> 6 </head> 7 <body> 8 <form action="/index/login" method="post"> 9 用户名:<input type="text" name="username"></input><br/> 10 密 码:<input type="password" name="password"/></input> 11 <input type="submit"></input><br/><br/> 12 </form> 13 <a href="/index/resgi">点我注册</a> 14 </body> 15 </html>
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 5 <title>注册界面</title> 6 7 </head> 8 9 <body> 10 <form action="/index/rege" method="post"> 11 用户名:<input type="text" name="username"/></input><br/> 12 密 码:<input type="password" name="password"/></input><br/> 13 <input type="submit"> 14 </form> 15 </body> 16 </html>
1 <!DOCTYPE HTML>