If it is said in the JSP page plus code Needless to say,
whether through filter or blocker to block access to , I think this is definitely possible. Just how to do ?
------ Solution ---------------------------------------- ----
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* 过滤器使用:用户没用登录,不可以在浏览器输入地址访问页面
* @author Administrator
*
*/
public class OnlineFilter extends HttpServlet implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
RequestDispatcher dispatcher = request.getRequestDispatcher("Login.jsp");
HttpServletRequest req =(HttpServletRequest)request;
HttpServletResponse res =(HttpServletResponse)response;
HttpSession session =req.getSession(true);
//从session 里面获取用户名的信息
String user =(String)session.getAttribute("user");
//判断如果没有取到用户信息,就跳转到登陆页面,提示用户进行登陆
if(user == null || "".equals(user)){
//跳转到登陆的页面,进行用户登录
dispatcher.forward(request,response);
System.out.println("用户没有登录,请登陆!");
}else{
System.out.println("用户已经登陆成功,允许继续操作!");
}
chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
}
/**
* Destruction of the servlet.
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
}
public void init() throws ServletException {
}
}
------ For reference only ---------------------------------- -----
you write custom filters in struts2 struts config file to look like, not sure you can google "struts2 custom filters "
------ for reference only ---------------------------------------
if I would not have posting for help , and I also know that thinking , but I can not write ah
------ For reference only ----------------------- ----------------
add a filter configuration ah, the filter inside, you can make some judgments, such as was not from the home page come in, and some other conditions are not logged in , then
can not access some jsp pages .
------ For reference only -------------------------------------- -
Well, what I want is example code ah
------ For reference only ------------------------- --------------
Thank you upstairs, I have just found out , put a little integrity ,
Java code
web.xml configuration
Java code
package com.cb.cbms.coreserver.servlet;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/ **
* does not allow direct access to jsp
* direct access to all the right jsp , jump to the home side
* @ author eason
*
* /
public class JspFilter implements Filter {
@ Override
public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
String url = httpServletRequest.getRequestURI ();
if (url! = null && url.endsWith (". jsp")) {
httpServletResponse.sendRedirect (httpServletRequest.getContextPath ());
return;
}
chain.doFilter (request, response);
}
@ Override
public void destroy () {
}
@ Override
public void init (FilterConfig arg0) throws ServletException {
}
}
------ For reference only ----------------------------- ----------
Filter source :
package com.filterdemo;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class MyFilter1
implements Filter
{
public void destroy()
{
System.out.println("MyFilter1 destroy...");
}
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException
{
System.out.println("MyFilter1 doFilter...");
System.out.println("You can not come into jsp page derectly.");
arg1.setContentType("text/html");
arg1.setCharacterEncoding("utf-8");
PrintWriter out = arg1.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Filter测试</title>");
out.println("</head>");
out.println("</html>");
out.println("<body>");
out.println("不允许直接访问JSP页面!");
out.println("</bidy>");
out.println("</html>");
}
public void init(FilterConfig arg0)
throws ServletException
{
System.out.println("MyFilter1 init...");
}
}
web.xml configuration
<filter>
<filter-name>MyFilter1</filter-name>
<filter-class>com.filterdemo.MyFilter1</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter1</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
------ For reference only ----------------------------------- ----
package base;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
public class MyInterceptor extends MethodFilterInterceptor {
protected String doIntercept (ActionInvocation invocation) throws Exception {
System.out.println ("Action class :" + invocation.getAction (). getClass (). getName ());
System.out.println ("Action method :" + invocation.getProxy (). getMethod ());
System.out.println (" My interceptor was executed .. ." ) ;
/ / ServletActionContext.getResponse (). sendRedirect ();
return invocation.invoke ();
}
}
struts.xml
"- / / Apache Software Foundation / / DTD Struts Configuration 2.0 / / EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
The detailed enough it , copy up can be run directly
------ For reference only ----------------------- ----------------
struts.xml recently a content
------ For reference only ------------------------- --------------
------ For reference only ---------------------------------- -----
If it is a multi-user how to do ?
没有评论:
发表评论