SSH项目如何禁止用户直接访问JSP页面 如果是说放在WEB-INF下面不用说,如果是说在JSP页面加上代码也不用说,是否可以通过过滤器或者拦截器去禁止访问,我想这肯定是可以的。只是怎么做?SSHJSP 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你写个struts2自定义过滤器在到struts配置文件中配置一下就好了,不清楚可以google “struts2 自定义过滤器” 添加一个过滤器配置啊, 在过滤器里面,可以进行一些判断, 比如不是从主页进来,没有登录等一些条件下, 则不能访问某些jsp 页面。 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 { } } 谢谢上楼,我也刚刚找到了,贴出完整一点的,Java代码 web.xml配置<filter> <filter-name>jspFilter</filter-name> <filter-class>com.cb.cbms.coreserver.servlet.JspFilter</filter-class> </filter> <filter-mapping> <filter-name>jspFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> Java代码 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; /** * 不允许直接访问jsp * 所有对jsp的直接访问,跳转到首页面 * @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 { } } Filter源码: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配置<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> 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的类:"+invocation.getAction().getClass().getName()); System.out.println("Action的方法:"+invocation.getProxy().getMethod()); System.out.println("我的拦截器被执行了。");// ServletActionContext.getResponse().sendRedirect(); return invocation.invoke(); } }struts.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <constant name="struts.i18n.encoding" value="UTF-8" /> <package name="struts2" extends="struts-default"> <!-- 定义声明拦截器 --> <interceptors> <interceptor name="myinter" class="base.MyInterceptor"> </interceptor> <!-- 配置拦截器栈 --> <interceptor-stack name="myInterceptorStack"> <!-- 引用拦截器 --> <interceptor-ref name="myinter"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors> </package></struts>这个够详细了吧,copy上去可以直接运行 struts.xml在最近一句内容<default-interceptor-ref name="myInterceptorStack"> </default-interceptor-ref> 请大家帮忙解释下以下代码的意思? 在客户端打印Excel!!!!!!!! 小问题!!看看,, jdbc语法问题 struts2中action怎么获取标签里的内容啊 jsp页面中的table及其内容动态导入到word中,并且在点击导入按钮时,提示保存word的位置和名称 配置服务器问题!急!!!!!!!! 各位前辈来指点小弟一次吧,小弟明天面试jsp程序员 哪位兄台有配置JSP服务器的资料文章! 我在做web开发添加功能 添加方法测试了没有问题 到了引入网页呀时间一直报错 实在不回来 求大神帮助 注册功能的想法寻指点 HTML 转PDF
添加一个过滤器配置啊, 在过滤器里面,可以进行一些判断, 比如不是从主页进来,没有登录等一些条件下, 则不能访问某些jsp 页面。
*/ public void destroy() { super.destroy(); // Just puts "destroy" string in log } public void init() throws ServletException { } }
Java代码
web.xml配置
<filter>
<filter-name>jspFilter</filter-name>
<filter-class>com.cb.cbms.coreserver.servlet.JspFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>jspFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Java代码
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;
/**
* 不允许直接访问jsp
* 所有对jsp的直接访问,跳转到首页面
* @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 {
}
}
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配置<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>
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的类:"+invocation.getAction().getClass().getName());
System.out.println("Action的方法:"+invocation.getProxy().getMethod());
System.out.println("我的拦截器被执行了。");
// ServletActionContext.getResponse().sendRedirect();
return invocation.invoke();
}
}struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8" />
<package name="struts2" extends="struts-default">
<!-- 定义声明拦截器 -->
<interceptors>
<interceptor name="myinter"
class="base.MyInterceptor">
</interceptor>
<!-- 配置拦截器栈 -->
<interceptor-stack name="myInterceptorStack">
<!-- 引用拦截器 -->
<interceptor-ref name="myinter"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
</package>
</struts>这个够详细了吧,copy上去可以直接运行
</default-interceptor-ref>