㈠ jsp 过滤器拦截URL时,如何把URL后面参数加上
最近在做项目中,发现jsp的过滤器在获取到拦截的URL时,得到的URL没有加入URL后面的参数,这样就造成在用response.sendRedirect时,无法加入后面的参数,本人研究后,发现可以这么解决,希望对大家有所帮助<pString currentURL = req.getRequestURI(); // 取得根目录所对应的绝对路猜衫径: java.util.Enumeration enumParam = req.getParameterNames(); StringBuffer condition = new StringBuffer("?"); boolean isHasCondition = false; while(enumParam.hasMoreElements()){ isHasCondition = true; String paramName = enumParam.nextElement(); condition.append(paramName); condition.append("="); condition.append(request.getParameter(paramName)); condition.append("&"); } if(isHasCondition){ currentURL += condition.toString(); }</p<p </橘兆仔p<圆汪p </p
㈡ jsp 过滤器拦截URL时,如何把URL后面参数加上求答案
最近在做项目中,发现jsp的过滤器在获取到拦截的URL时,得到的URL没有加入URL后面的参数,这样就造成在用response.sendRedirect时,无法加入后面的参数,本人研究后,发现可以这么解决,希望对大家有所帮助<pString currentURL = req.getRequestURI(); // 取得根目录所对应的绝对路径: java.util.Enumeration enumParam = req.getParameterNames(); StringBuffer condition = new StringBuffer("?"); boolean isHasCondition = false; while(enumParam.hasMoreElements()){ isHasCondition = true; String paramName = enumParam.nextElement(); condition.append(paramName); condition.append("="); condition.append(request.getParameter(paramName)); condition.append("&"); } if(isHasCondition){ currentURL += condition.toString(); }</p<p </p<p </p
㈢ jsp防止直接通过url访问没有权限的页面
jsp防止直接通过url访问是通过过滤器实现的。
过滤器内容:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String conString = "";
conString = req.getHeader("REFERER");//获取父url--如果不是直接输入的话就是先前的访问过来的页面,要是用户输入了,这个父url是不存在的
if("".equals(conString) || null==conString){ //判断如空森果上一个目录为空斗兆亩的话,说明是用户直接输入url访问的
String servletPath = req.getServletPath();//当前请求url,去掉几个可以直接访问的页面
if(servletPath.contains("index.jsp") || servletPath.contains("admin/login.jsp")){ //跳过index.jsp和登陆Login.jsp
chain.doFilter(request, response);
} else {
resp.sendRedirect("/ejuornal/index.jsp");//跳回首页
}
} else {
chain.doFilter(request, response);
}
}
过滤器配置:
<猜姿?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>FilterPages</filter-name>
<filter-class>com.ejuornal.filter.FilterPages</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterPages</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
</web-app>
㈣ javaee 过滤器怎样判断输入的url路径是正确的,不正确则跳转index.jsp
JSP 图片无法显示通常是由于以下原因:
1、文件路径或文件名称的问题,这需要验证文件的路径是否正确是否区分了大小写。jsp路径也是十分特殊的,相对路径有时候是无效的,所以需要使用绝对路径,路径前使用<%=request.getContextPath() %>.
2、图片的规格有问题,验证的方式是:在文件管理器中鼠标右键图片,选择打开方式IE,看是否能打开,能正常打开的图片就没有问题。
3、显示图片的代码写的不对。这里只能看到提问,看不到详细,猜测可能会有这样的错误,或者是调用标签方式不正确,html有两种调用图片的方式,一种是图片标签直接做展示,另一种则是通过背景的形式展现,如下:
<img src="imagePath" />
<xxx style="background:url(imagePath);"></xxx>
<xxx style="background-image:imagePath;"></xxx>
4、被覆盖。如果图片因为被别的div或者其他html控件盖住了,就不会显示正常了,可以通过IE浏览器点“F12”打开开发人员工具,在“HTML”选项卡下有个光标的图标,点击后再点击页面中药显示图片的区域,开发人员工具的面板中的代码块就自动跳到该区域对应的代码并且高亮显示,这样就可以知道是什么将图片覆盖在后面了。出现此种情况需要先看是否两个区域都正确,如果该覆盖图片的区块是被挤到这里来的,则需要重新调整此区块的位置,若是确实应该是和图片重叠显示的,则需要在图片中添加样式:z-index,数值比那个区块大即可。
㈤ JSP过滤器这样设置过滤一个次级路径下的所有URL
/sites/*这样就可以了,如果这个文件夹是某个子目录的话还需要添加它的父目录;
下面内是些例子
<url-pattern>:指定和过滤器关联容的URL,为”/*”表示所有URL;
例子1:单个过滤器配置:容器将其应用于所有接收的请求
<url-pattern>/*</url-pattern>
例子2:过滤器应用到特定目录或资源(文件)的配置:此容器只有在接收到对/mydocs目录中的资源的请求时才会应用该过滤器。
<url-pattern>/mydocs/*</url-pattern>
㈥ 修改index.jsp改了后缀为html,配置的<url-pattern>是/*,过滤器却不管用了
改成html后服务器就会按纯html文件来处理,也就是把文件内容不加任何处理原样发送给客户端浏览器,这样过滤器肯定就不起作用了。
㈦ JSP中,过滤器的web.xml配置文件中指定过滤器应用的URL用什么符号隔开。请指教!
不支持用符号隔开,如果想达到类似的效果,请配置两个 <url-pattert> 节点即可。 GOOD LUCK!
㈧ 在JSP中,过滤器中的url-pattern要过滤的资源具体是什么什么是资源是具体的javaBean吗
资源包括jsp,servlet,所有参与抄跳转和传值的文袭件,一般来说就是指业务层和逻辑层的文件,这个<url-pattern>?</url-pattern> ?是可以随便写的,但一般保证命名有意义.但上面有具体的映射,映射到某个文件中就是要对该文件做过滤,也可以使用前缀和后缀来模糊匹配一系列的文件(如*.do,x*y),也可以使用文件夹形式的匹配(/admin/*).
其实不用太纠结这个资源是什么东西,如果你要来设置编码方式的过滤器,那么别想其他的路,直接/*
㈨ spring mvc 拦截器怎么拦截jsp页面
spring mvc 拦截器怎么拦截jsp页面
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="net.techfinger.yoyoapp.interceptor.AuthInterceptor" />
</mvc:interceptor>
你这个 是拦截带 /jsp 的 .do请求
解决方案
用spring 的拦截器 去拦截 所有的 .do 请求,
然后写一个 过滤器去拦截 所有的.jsp 的请求
这样才能防止循环过滤
<!-- <servlet-mapping>
<servlet-name>Spring-Servlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping> -->
这种会把所有jsp请求过滤不推荐。
<filter>
<filter-name> loginFilter</filter-name>
<filter-class>
net.techfinger.yoyoapp.interceptor.CheckLoginFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<servlet-mapping>
<servlet-name>Spring-Servlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
public class CheckLoginFilter implements Filter{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpSession session = request.getSession();
// 获得用户请求的URI
String path = request.getRequestURI();
String contextPath = request.getContextPath();
String url = path.substring(contextPath.length());Person person =SessionUtils.getPerson(request);if (person == null) {
response.sendRedirect(contextPath+"/person.do?method=tologin");
return;
}
if (person.getId()!=null&&person.getPassword()!=null) {
filterChain.doFilter(servletRequest, servletResponse);
return;
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
}
public class AuthInterceptor extends HandlerInterceptorAdapter {
private final static Logger log= Logger.getLogger(AuthInterceptor.class);@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HandlerMethod method = (HandlerMethod)handler;
Auth auth = method.getMethod().getAnnotation(Auth.class);
////验证登陆超时问题 auth = null,默认验证
if( auth == null || auth.verifyLogin()){
String baseUri = request.getContextPath();
String path = request.getServletPath();
Person person =SessionUtils.getPerson(request);if(person == null){
if(path.endsWith(".jsp")){
response.setStatus(response.SC_GATEWAY_TIMEOUT);
response.sendRedirect(baseUri+"/person.do?method=tologin");
return false;
}else{
response.setStatus(response.SC_GATEWAY_TIMEOUT);
Map<String, Object> result = new HashMap<String, Object>();
/* result.put("success", false);
result.put("logoutFlag", true);//登录标记 true 退出
result.put("msg", "登录超时.");
XmlUtil.sendMsg(response, result);*/
response.sendRedirect(baseUri+"/person.do?method=tologin");
return false;
}
}
}
//验证URL权限
if( auth == null || auth.verifyURL()){/*//判断请求的url,是否包含在该角色的url里String methodName=request.getParameter("method");
String menuUrl = StringUtils.remove(request.getRequestURI(),request.getContextPath())+"?method="+methodName;
System.out.println(menuUrl);if(!SessionUtils.isAccessUrl(request, StringUtils.trim(menuUrl))){
//日志记录
String userMail = SessionUtils.getPerson(request).getLoginName();
String msg ="URL权限验证不通过:[url="+menuUrl+"][email ="+ userMail+"]" ;
log.error(msg);response.setStatus(response.SC_FORBIDDEN);
Map<String, Object> result = new HashMap<String, Object>();
result.put("success", false);
result.put("msg", "没有权限访问,请联系管理员.");
XmlUtil.sendMsg(response, result);
return false;}
*/}
return super.preHandle(request, response, handler);
}