spring boot 基于正则的url映射

基于正则的url映射:它支持{名称:正则表达式}的写法,以另一种风格限制url的映射。

//正则表达式
    @RequestMapping(value="/student/{name:\\w+}-{age:\\d+}")
    public @ResponseBody String regUrl(@PathVariable String name,@PathVariable int age){
    	return "name:"+name+" age:"+age;
    }
例如上面的URL就只能匹配如:

localhost:8080/context/student/wangwu-33 或者
localhost:8080/context/student/zhao4-22

 正则表达式的写法如下:

@RequestMapping(value = "/{name:(?!fonts|oauth|webjars|swagger|images)[a-z][0-9a-z-]{3,31}}/**",method = {RequestMethod.POST, RequestMethod.GET}) 
public void homePage(HttpServletRequest request, HttpServletResponse response ,@PathVariable String name) { }

表示name满足4--32位以字母开头的字母与数字字符,并且不包括fonts、oauth、webjars、swagger、images这几个词。

系统访问的url在后台有多个接口匹配时,定义最精确的会被匹配。

@RequestMapping(value = "/{name:([a-z][0-9a-z-]{3,31}}/**",method = {RequestMethod.GET})
 
public void test1(@PathVariable String name){
 
}
 
@RequestMapping(value = "/{name:([a-z][0-9a-z-]{3,31}}/mytest",method = {RequestMethod.GET})
 
public void test2(@PathVariable String name){
 
}
 
@RequestMapping(value = "/test/mytest",method = {RequestMethod.GET})
 
public void test3(){
 
}

访问接口  /test/mytest 时,虽然三个接口都满足,但是请求会到test3方法

访问接口/myapi/mytest时,请求会到test2方法

demo:

public class AssetServerController {

    @RequestMapping(value = {"/**/{path:[^\\\\.]*}","/{path:^(?!/assets/).*}","/{path:^(?!/api/).*}"}, method = RequestMethod.GET)
    public String index() {
        return"forward:/";
    }

}
@GetMapping(value = {"/", "/{path:(?!.*doc).+}", "/{folder:^(?!swagger-ui).*$}/{page}"})
    public String showPage(@PathVariable(value = "folder", required = false) String folder,
        @PathVariable(value = "page", required = false) String page,
        @RequestParam(required = false) Map<String, String> parms, @NotNull ModelMap result) {
        result.mergeAttributes(parms);
        page = CharSequenceUtil.isNotBlank(folder) ? folder + "/" + page : page;
        page = CharSequenceUtil.isNotBlank(page) ? page : "/";
        log.info("get page:" + page);
        return page;
    }

@RequestMapping(value = "/route/to-{destination:^((?!-from-).)+}.html", method = {RequestMethod.GET, RequestMethod.HEAD})

"/route/to-{destination:(?!.*-from-).+}.html"

value = {"/{path:(?!.*assets).+}/**"}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot 中,我们可以使用 MyBatis 或者 Hibernate 等 ORM 框架来进行数据库操作。下面分别介绍一下这两种框架在 Spring Boot 中的使用方法。 1. 使用 MyBatis MyBatis 是一种半自动化的 ORM 框架,它与 Spring Boot 集成非常简单。 第一步,我们需要在 pom.xml 中添加 MyBatis 和 MyBatis-Spring 的依赖: ```xml <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> </dependencies> ``` 第二步,我们需要在 application.properties 文件中配置数据库连接信息: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 第三步,我们需要编写 MyBatis 的映射文件。例如,我们有一个 User 表,对应的实体类为 User,那么我们可以在 resources/mapper 目录下创建 UserMapper.xml 文件,包含如下内容: ```xml <mapper namespace="com.example.demo.mapper.UserMapper"> <select id="getUserById" parameterType="long" resultType="com.example.demo.entity.User"> select * from user where id = #{id} </select> <insert id="insertUser" parameterType="com.example.demo.entity.User"> insert into user(id, name, age) values (#{id}, #{name}, #{age}) </insert> </mapper> ``` 第四步,我们需要编写 UserMapper 接口,用于调用 MyBatis 的映射文件。例如: ```java @Repository public interface UserMapper { User getUserById(long id); void insertUser(User user); } ``` 第五步,我们需要在 Spring Boot 应用程序中注入 UserMapper,并使用它进行数据库操作。例如: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User getUserById(long id) { return userMapper.getUserById(id); } @Override public void insertUser(User user) { userMapper.insertUser(user); } } ``` 2. 使用 Hibernate Hibernate 是一种全自动化的 ORM 框架,它与 Spring Boot 集成也非常简单。 第一步,我们需要在 pom.xml 中添加 Hibernate 的依赖: ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.5.4</version> </dependency> </dependencies> ``` 第二步,我们需要在 application.properties 文件中配置数据库连接信息: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=update ``` 第三步,我们需要编写实体类,用于映射数据库表。 ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; private int age; // getters and setters } ``` 第四步,我们需要编写 UserRepository 接口,用于调用 Hibernate 进行数据库操作。例如: ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { } ``` 第五步,我们需要在 Spring Boot 应用程序中注入 UserRepository,并使用它进行数据库操作。例如: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserRepository userRepository; @Override public User getUserById(long id) { return userRepository.findById(id).orElse(null); } @Override public void insertUser(User user) { userRepository.save(user); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.智子.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值