@Override public void filter(final ContainerRequestContext containerRequestContext) { final String requestUrl = containerRequestContext.getUriInfo().getRequestUri().toString(); if (requestUrl.endsWith("todo-or-done") || requestUrl.endsWith("change/status") || requestUrl.endsWith("change/content")) { verify(containerRequestContext, this.filterService); } }使用正则优化
时间: 2024-04-09 18:33:28 浏览: 25
要使用正则表达式优化代码,您可以尝试以下代码:
```java
@Override
public void filter(final ContainerRequestContext containerRequestContext) {
final String requestUrl = containerRequestContext.getUriInfo().getRequestUri().toString();
if (requestUrl.matches(".*/(todo-or-done|change/status|change/content)$")) {
verify(containerRequestContext, this.filterService);
}
}
```
通过使用正则表达式`".*/(todo-or-done|change/status|change/content)$"`,可以匹配以"todo-or-done"、"change/status"或"change/content"结尾的URL。这样可以避免多个endsWith()方法的调用,并且使代码更加简洁和易读。
相关问题
@Override public void filter(final ContainerRequestContext containerRequestContext) { final String requestUrl = containerRequestContext.getUriInfo().getRequestUri().toString(); if (requestUrl.endsWith(TODO_TARGET_URL) || requestUrl.endsWith(TODO_CHANGE_STATUS_URL) || requestUrl.endsWith(TODO_CHANGE_CONTENT_URL)) { verify(containerRequestContext, this.filterService); } }使用正则优化
您可以使用正则表达式来优化代码,以避免多个endsWith()方法的重复调用。下面是一个示例:
```java
@Override
public void filter(final ContainerRequestContext containerRequestContext) {
final String requestUrl = containerRequestContext.getUriInfo().getRequestUri().toString();
if (requestUrl.matches(".*/(todo|changeStatus|changeContent)$")) {
verify(containerRequestContext, this.filterService);
}
}
```
使用正则表达式`".*/(todo|changeStatus|changeContent)$"`,可以匹配以"todo"、"changeStatus"或"changeContent"结尾的URL。这样可以避免多个endsWith()方法的调用,并且使代码更加简洁和易读。
package com.ischoolbar.programmer.interceptor; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONObject; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.ischoolbar.programmer.entity.User; /** * 登录过滤拦截器 * @author llq * */ public class LoginInterceptor implements HandlerInterceptor{ @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { // TODO Auto-generated method stub } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { // TODO Auto-generated method stub } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { // TODO Auto-generated method stub String url = request.getRequestURI(); //System.out.println("进入拦截器,url = " + url); Object user = request.getSession().getAttribute("user"); if(user == null){ //表示未登录或者登录状态失效 System.out.println("未登录或登录失效,url = " + url); if("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))){ //ajax请求 Map<String, String> ret = new HashMap<String, String>(); ret.put("type", "error"); ret.put("msg", "登录状态已失效,请重新去登录!"); response.getWriter().write(JSONObject.fromObject(ret).toString()); return false; } response.sendRedirect(request.getContextPath() + "/system/login"); return false; } return true; } }给代码加上注释
//导入相关的包
package com.ischoolbar.programmer.interceptor;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.ischoolbar.programmer.entity.User;
/**
* 登录过滤拦截器
*
* @author llq
*
*/
public class LoginInterceptor implements HandlerInterceptor {
//在请求处理完成后调用的方法
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub
}
//在请求处理之后但是视图渲染之前调用的方法
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub
}
//在请求处理之前调用的方法
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
// TODO Auto-generated method stub
String url = request.getRequestURI(); //获取请求的url
//System.out.println("进入拦截器,url = " + url);
Object user = request.getSession().getAttribute("user"); //获取session中的user对象
if (user == null) { //如果session中的user对象为空,表示未登录或者登录状态失效
System.out.println("未登录或登录失效,url = " + url);
if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) { //如果是ajax请求
Map<String, String> ret = new HashMap<String, String>();
ret.put("type", "error");
ret.put("msg", "登录状态已失效,请重新去登录!");
response.getWriter().write(JSONObject.fromObject(ret).toString()); //返回JSON格式的错误信息
return false;
}
response.sendRedirect(request.getContextPath() + "/system/login"); //跳转到登录页面
return false;
}
return true;
}
}
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)