访问WEB-INF下的页面

      WEB-INF是Java的web应用安全目录,只对服务端开放,对客户端是不可见的。所以我们可以把除首页(index.jsp)以外的页面都放在WEB-INF目录下,这样就无法通过URL直接访问页面了。


核心:

1,超链接a标签或者jswindow.location.href()无法访问WEB-INF下的某一个jsp页面。

[java]  view plain  copy
  1. javascrtpt:window.location.href='WEB-INF/login.jsp'  

[java]  view plain  copy
  1. <a href="login.jsp"></a>  

[html]  view plain  copy
  1. response.sendRedirect("WEB-INF/checklogin.jsp");  


以上三种都不行。


2,cssjavascript和图片等资源文件不能放在WEB-INF,必须放在webRoot(WebContent)目录下


访问时直接访问:

[java]  view plain  copy
  1. <img alt="" src="image/1.jpg">  


3,除首页(index.jsp)外的JSP页面都放在WEB-INF目录下。


4,通过以下方法访问WEB-INF目录下的JSP页面:

     a,通过action转向访问(推荐)

[java]  view plain  copy
  1. <a href="mylogin.action"></a>  


     b,不推荐

[java]  view plain  copy
  1. <jsp:forward page = "/WEB-INF/admin/login.jsp" />    
  2.         
  3.     <a href="javascript:<jsp:forward page='WEB-INF/admin/login.jsp'/>"></a>    
  4.         
  5.     <jsp:include page="WEB-INF/admin/login.jsp">   


实现

1、web.xml

<servlet>
        <servlet-name>Action</servlet-name>
        <servlet-class>com.wang.action.DispatcherAction</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Action</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

2、DispatcherAction.java

package com.wang.action;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Action转发
 * <p>
 * 根据*.action的get请求
 * 通过请求服务端转发
 * 访问WEB-INF下的jsp页面
 *
 * @date 2018/6/18
 * @auther ten
 */
public class DispatcherAction extends HttpServlet {
    private static final Logger logger = LoggerFactory.getLogger(DispatcherAction.class);

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取要访问的jsp页面名
        String uri = req.getRequestURI();
        String action = uri.substring(uri.lastIndexOf("/") + 1, uri.lastIndexOf("."));
        logger.info("action is " + action);

        // 生成WEB-INF路径
        String url = "/WEB-INF/jsp/" + action + ".jsp";
        logger.info("dispatcher is " + url);

        // 执行转发
        req.getRequestDispatcher(url).forward(req, resp);
    }
}
3、url请求
<a href=imageshow.action>


猜你喜欢

转载自blog.csdn.net/wsh596823919/article/details/80726695