我自已在做一个,session 的滤器,也就是说当session这null时,那么就跳转到login.jsp界面,但是现在出现了一种情况,跳转到login.jsp了,可是login.jsp页面上,只有文本的内容,也就是说背景图片消失了,还有就是css样式表也不显示了,这是怎么回事呢?下面是我的过滤代码,请高手帮我看看package com.jiang.utils;
import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.sun.org.apache.bcel.internal.generic.GETSTATIC;public class LoginFilter implements Filter {
public void destroy() {
System.out.println("过滤器销毁");
} public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
req.setCharacterEncoding("GBK");
HttpServletRequest request = (HttpServletRequest) req;
//HttpServletResponse response = (HttpServletResponse) res; HttpSession session = request.getSession();
String czy = (String) session.getAttribute("adminName");
String action = request.getParameter("action");
if("Login".equals(action)) {
chain.doFilter(req, res);
}
if(czy == null || "".equals(czy)){
//chain.doFilter(req, res);如果把这个注释去掉的话,那么可以跳转到login.jsp并且显示图片,但是tomcat会报错
request.getRequestDispatcher("/admin/login.jsp").forward(req, res);
}else{
chain.doFilter(req, res);
}
}
public void init(FilterConfig fc) throws ServletException {
// TODO Auto-generated method stub
}
}下面是web.xml中的内容
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.jiang.utils.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
请帮忙解决下 谢谢!
import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.sun.org.apache.bcel.internal.generic.GETSTATIC;public class LoginFilter implements Filter {
public void destroy() {
System.out.println("过滤器销毁");
} public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
req.setCharacterEncoding("GBK");
HttpServletRequest request = (HttpServletRequest) req;
//HttpServletResponse response = (HttpServletResponse) res; HttpSession session = request.getSession();
String czy = (String) session.getAttribute("adminName");
String action = request.getParameter("action");
if("Login".equals(action)) {
chain.doFilter(req, res);
}
if(czy == null || "".equals(czy)){
//chain.doFilter(req, res);如果把这个注释去掉的话,那么可以跳转到login.jsp并且显示图片,但是tomcat会报错
request.getRequestDispatcher("/admin/login.jsp").forward(req, res);
}else{
chain.doFilter(req, res);
}
}
public void init(FilterConfig fc) throws ServletException {
// TODO Auto-generated method stub
}
}下面是web.xml中的内容
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.jiang.utils.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
请帮忙解决下 谢谢!
<filter-name>LoginFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
在web.xml里改一下,就可以了.只过滤jsp页面就行.
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
String action = request.getParameter("action");
if ("login".equals(action)) {//测试用
session.setAttribute("adminName", "acb");
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<LINK href="<%=path%>/admin/img/text.css" rel=stylesheet>
<meta http-equiv=Content-Type content=text/html;charset=gb2312>
</head>
<body leftMargin=0 topMargin=0>
<p>
</p>
<p>
</p>
<form action='' method='post' name="loginform" target='_top'
id="loginform">
<input type="hidden" name="action" value="login">
<table width="450" height="358" border="0" align="center"
cellpadding="0" cellspacing="0"
background="<%=path%>/admin/img/p_member_login.gif">
<tbody>
<tr>
<td align="middle">
<table cellspacing="0" cellpadding="4" width="300" border="0">
<tbody>
<tr>
<td nowrap="nowrap" align="right">
用户名:
</td>
<td nowrap="nowrap">
<input class="input2" id="Name" maxlength="12" size="10"
name="username" /> </td>
</tr>
<tr>
<td align="right">
密 码:
</td>
<td>
<input class="input2" id="Password" type="password" size="10"
name='pwd' /> </td>
</tr> <tr>
<td align="center" colspan="2">
<input type="submit" value=" 登录 " name="Submit1" />
</td>
</tr>
<tr>
<td align="middle" colspan="2">
<span id="Message"></span>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</form> </body>
</html>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/admin/*.jsp</url-pattern>
</filter-mapping>
这样写的话 tomcat地报错的
<filter-name>LoginFilter</filter-name>
<filter-class>xxx.LoginFilter</filter-class>
</filter><filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/admin/*.jsp</url-pattern>
</filter-mapping>
这样行啊
将请求转到下一个过滤器,这样就导致了模棱两可的情况,虽然可以执行成功,但是tomcat会给出相应的错误。