我怎么才能从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() 方法。

参考技术A 给一个例子你,希望对你能有帮助
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、会话侦听器中随时查看、添加、删除和修改属性。这种技术非常有用,尤其适用于同一会话中不同组件之间的通信。

【讨论】:

The ServletRequest interface 没有 getSession() 方法。否则 OP 不会首先问这个问题。

以上是关于我怎么才能从ServletRequest request 中的到URL,参数我能得到。的主要内容,如果未能解决你的问题,请参考以下文章

ServletRequest 中的会话变量

SecurityContext 权限不等于 ServletRequest 角色?

当我使用 servletRequest.getReader().lines().collect(Collectors.joining()) 时请求更改正文

07.httpServletRequest servletRequest 关系

Android 从图库选择图片,拍照图片,裁剪图片

Java_Web------ServletRequest实现