我使用过滤器来确定请求的页面是否具有有效的会话。
这是我的密码<代码>网络。xml:
<filter>
<filter-name>SessionFilter</filter-name>
<filter-class>
com.imagemanagementutility.filter.SessionFilter
</filter-class>
<init-param>
<param-name>avoid-urls</param-name>
<param-value>index.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
过滤器类别:
public class SessionFilter implements Filter {
private ArrayList<String> urlList;
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String url = request.getServletPath();
boolean allowedRequest = false;
System.out.println(url.replace("/",""));
if (urlList.contains(url)) {
allowedRequest = true;
}
if (!allowedRequest) {
HttpSession session = request.getSession(false);
if (null == session) {
System.out.println("redirect in servlet session filter");
RequestDispatcher dispatcher = request
.getRequestDispatcher("//index.jsp");
dispatcher.forward(request, response);
}
}
chain.doFilter(req, res);
System.out.println("end");
}
public void init(FilterConfig config) throws ServletException {
String urls = config.getInitParameter("avoid-urls");
StringTokenizer token = new StringTokenizer(urls, ",");
urlList = new ArrayList<String>();
while (token.hasMoreTokens()) {
urlList.add(token.nextToken());
}
}
}
我有一个登录页面,用于检查用户是否有效。如果用户有效,则将控制转移到此servlet。
public class MainService extends HttpServlet {
private static final long serialVersionUID = 1L;
static Logger log = Logger.getLogger(MainService.class.getName());
/**
* @see HttpServlet#HttpServlet()
*/
public MainService() {
super();
}
/*
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(true);
response.setContentType("text/html;charset=UTF-8");
LogUtil.logInfo("i m here");
List<Images> imageList = null;
response.setContentType("text/html");
try {
UserDataService userDataService = new UserDataImpl();
String userId = null;
String username = null;
String password = null;
username = request.getParameter("user");
password = request.getParameter("password");
userId = userDataService.checkUser(username, password);
if (userId!=null) {
System.out.println(userId);
session.setAttribute("userId", userId);
imageList = userDataService.getImages(userId);
session.setAttribute("imageList", imageList);
/*response.sendRedirect("//showUserImages.jsp");*/
RequestDispatcher dispatcher = request
.getRequestDispatcher("//showUserImages.jsp");
dispatcher.forward(request, response);
} else {
/*response.sendRedirect("//index.jsp");*/
RequestDispatcher dispatcher = request
.getRequestDispatcher("//index.jsp");
dispatcher.forward(request, response);
}
} catch (ImageException e) {
e.getMessage();
e.printStackTrace();
}
}
}
这在没有过滤器的情况下可以工作,但是当我将控件转发到“//showuserImages.jsp”时,过滤器会显示一个错误。
将调用doFilter
放在else块中:
if (!allowedRequest) {
HttpSession session = request.getSession(false);
if (null == session) {
System.out.println("redirect in servlet session filter");
RequestDispatcher dispatcher = request
.getRequestDispatcher("//index.jsp");
dispatcher.forward(request, response);
}
}else{
chain.doFilter(req, res);
}
我知道这里已经讨论过至少一百万次了,但是每个servlet在调用forward()之前都会重定向或刷新输出。我有同样的问题,但我没有做任何与输出。我的servlet只接受请求参数并提交到数据库,并在请求上设置一个属性。然后,它将请求转发给jsp,jsp显示属性。我在Tomcat7上使用Servlet3.0。下面是我的servlet doPost方法,后面是转发到的jsp: JSP: 我相信我可能错
我使用下面的jsp和得到
在我的应用程序中执行一些操作时,我得到了 Java . lang . illegalstateexception无法调用sendError() 当我再次重新加载页面时,它会正常工作一段时间,但一段时间后它再次显示相同的异常。我如何克服这个异常? 以下是例外: 支柱.xml
你好,Hibernate和Jackson有问题。有两个POJO 为Spring Security集成而设计的用户及其角色。 还有一个控制器,通过Jackson从用户Json生成。With方法 当此方法返回不带null字段的用户时,将抛出: 当我添加@OneTo很多时,这个问题就出现了(mep dBy="user", cascade=CascadeType. ALL, fetch=FetchType
问题内容: 我是JSF的新手,正在构建使用Facelets创建的应用程序。 这是我的模板 master.xhtml MasterSearch.xhtml MasterSearch.java这是一个bean faces-config.xml 现在,当我运行此代码(实际上是masterp.xhtml)时,它显示出完美的输出并加载了Accuratley,但它在控制台中引发了异常,即 而且我认为由于这个原
问题内容: 我正在尝试使用以下代码将值从servlet传递到jsp页面: 当我运行页面时,我得到: 错误: 我尝试使用: 但是我遇到了同样的错误。 如何解决这个错误? 问题答案: 您已经在catch代码块中转发了响应: 因此,您不能再次调用: 因为它已经转发(提交)。 因此,您可以做的是:保留一个字符串以分配需要转发响应的位置。