我怎么才能从ServletRequest request 中的到URL,参数我能得到。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我怎么才能从ServletRequest request 中的到URL,参数我能得到。相关的知识,希望对你有一定的参考价值。
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException
HttpServletRequest 才有getparameter("参数"),getRequestURL() 方法。
package dao;
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import po.login;
public class permissionFilter implements Filter
private FilterConfig filterConfig;
private FilterChain chain;
private HttpServletRequest request;
private HttpServletResponse response;
public void destroy()
this.filterConfig = null;
public void init(FilterConfig filterConfig) throws ServletException
this.filterConfig = filterConfig;
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain chain)
this.chain = chain;
this.request = (HttpServletRequest) servletRequest;
this.response = ((HttpServletResponse) servletResponse);
// 获取当前页面文件名此处url为:/Gzlkh/login.jsp
String url = request.getRequestURI();
// 此处截取的url为:login.jsp
url = url.substring(url.lastIndexOf("/") + 1, url.length());
try
HttpSession session = request.getSession();
// 获取网站访问根目录
String accessPath = request.getContextPath();
// 获取用户登录验证信息
login st = (login) session.getAttribute("st");
if (noFileUrl(url, request))
// 不需要判断权限的请求如登录页面,则跳过
chain.doFilter(request, response);// 继续执行请求
else if (st == null)
response.sendRedirect(accessPath + "/login.jsp");
// 未登录或超时,返回登陆页面
else
verifyUrl(url, st);// 判断当前user是否拥有访问此url的权限
catch (Exception sx)
sx.printStackTrace();
参考技术B HttpServletRequest httpServletRequest = (HttpServletRequest)request;
HttpServletResponse httpServletResponse = (HttpServletResponse)response;
转化一下,然后用httpServletRequest调用getparameter("参数"),getRequestURL() 方法 参考技术C request.getRequestURL() 参考技术D request.getRequestURL()、request.getRequestURI()
楼主派分吧 :) 第5个回答 2012-08-03 request.getparameter("参数名");
ServletRequest 中的会话变量
【中文标题】ServletRequest 中的会话变量【英文标题】:Session variables in ServletRequest 【发布时间】:2013-02-07 05:18:26 【问题描述】:我需要通过过滤器访问会话变量。我什至不知道这是否可能。实际上,问题是javax.Servlet.Filter
实现中的doFilter
方法类型是ServletRequest
,而HttpServlet继承类,doPost方法参数request
是HttpServletRequest。
-
我可以在过滤器中访问 ServletRequest 中的会话吗?
我应该这样做吗?
你能推荐我什么?
谢谢!
【问题讨论】:
HttpServletRequest request = (HttpServletRequest) methodRequest;
您可以将 doFilter 请求转换为 HttpServletRequest
。
【参考方案1】:
只需将获得的ServletRequest
转换为HttpServletRequest
即可。
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException
HttpServletRequest request = (HttpServletRequest) req;
HttpSession session = request.getSession(false);
// ...
另见:
Our servlet-filters wiki page【讨论】:
你说得对。我经常将ServletRequest
转换为HttpServletRequest
以至于忘记提及这一点。【参考方案2】:
当然可以。 ServletRequest
允许您访问包含属性的会话。您可以在过滤器、servlet、jsp、会话侦听器中随时查看、添加、删除和修改属性。这种技术非常有用,尤其适用于同一会话中不同组件之间的通信。
【讨论】:
TheServletRequest
interface 没有 getSession()
方法。否则 OP 不会首先问这个问题。以上是关于我怎么才能从ServletRequest request 中的到URL,参数我能得到。的主要内容,如果未能解决你的问题,请参考以下文章
SecurityContext 权限不等于 ServletRequest 角色?
当我使用 servletRequest.getReader().lines().collect(Collectors.joining()) 时请求更改正文