如何防止从jl页面的url直接访问页面

时间:2017-06-20 05:57:31

标签: java jsp servlets

我创建了一个Web应用程序。一切正常。但是,如果用户还没有登录,他们可以通过URL访问其他jsp页面。我想停止访问网址。我看到一些例子,它显示了过滤器的用法。我是过滤器的新手,我不知道如何实现它。我正在使用servlets,dao和jsp页面。

请建议我怎么做。我想为所有jsp或servlets页面创建一个过滤器。

Web.XML:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>MBO</display-name>
   <filter>
  <filter-name>MyFiltersDAO</filter-name>
  <filter-class>Model.MyFiltersDAO</filter-class>
</filter>

<filter-mapping>
  <filter-name>MyFiltersDAO</filter-name>
  <url-pattern>/secret/*</url-pattern>
</filter-mapping>
  <welcome-file-list>
    <welcome-file>Login.jsp</welcome-file>
  </welcome-file-list> 
</web-app>

班级:

public class MyFiltersDAO {
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain)
    throws IOException, ServletException {

         HttpServletRequest req = (HttpServletRequest)request;
            HttpServletResponse resp = (HttpServletResponse)response;
            String abc=(String) req.getSession().getAttribute("Username");
            if(null==((String) req.getSession().getAttribute("Username")) || ((String) req.getSession().getAttribute("Username")).equals("")){
                chain.doFilter(req, resp);
        } else {
          resp.sendRedirect("/Login.jsp");
      }
    }


    public void destroy() {
    }
}   

当我运行项目时,它显示HTTP404错误

1 个答案:

答案 0 :(得分:1)

你可以试试session.Suppose当用户登录然后你可以在会话中设置会话属性,如

   if(loggedIn)
{
session.setAttribute("username",username);
}

并且在你的jsp中你可以验证页面何时加载,如果session不是null,那么应该访问该页面,否则将用户重定向到主页

if(session.getAttribute("username")!=null)
{


}
else
{
response.sendredirect(url)
}

<强>更新 你可以用

来做
       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                HttpSession session = request.getSession(); 
  if(loggedIn)
    {
    session.setAttribute("username",user))
response.sendredirect("index.jsp");
    }
}
在index.jsp

<%

if (session.getAttribute("username") !=null) {
//your code
}
else
{
//your code
}
%>