【servlet】客户端是否可以访问到WEB-INF下的jsp文件

一般情况下(不考虑出现安全问题被入侵,那样啥都能访问到),WEB-INF下的jsp文件单凭浏览器端请求时访问不到的。

想访问的话需要通过服务端servlet的转发。

下面通过转发和重定向的尝试来观察访问情况。

 

引申:dlut 教务处的网站改一下url就可以访问到所有人的成绩,个人认为jsp文件一定是在WEBRoot根目录下,而不是在WEB-INF目录下

至于为什么看出是jsp文件(后缀名经过了隐藏)...看到刚登陆时的action...就知道是struts2没跑了....

 

 

 

 

TestServlet.java

package com.balfish.servlet;



import java.io.IOException;



import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.jsp.PageContext;



public class TestServlet extends HttpServlet{



    private static final long serialVersionUID = 1L;



    protected void doGet(HttpServletRequest req, HttpServletResponse resp)

            throws ServletException, IOException {

        doPost(req, resp);

    }



    protected void doPost(HttpServletRequest req, HttpServletResponse resp)

            throws ServletException, IOException {

        

        //下面的转发方式可以,内部转发,可以访问到WEB-INF下的jsp页面

        //req.getRequestDispatcher("/WEB-INF/page/index.jsp").forward(req,resp);

        

        //下面的转发方式不可以,相当于重新向浏览器发送一次请求,那样相当于用户级别的访问

        //提示错误:    The requested resource is not available.

        resp.sendRedirect(req.getContextPath() + "/WEB-INF/page/index.jsp");

    

        

        //以下面的url来访问index.jsp,可以看到只要配好 web.xml 里的 url-pattern 即可  可以做url欺骗

        //http://localhost:8080/myWeb/1.txt

    }



    public void destroy() {

        super.destroy();

    }



    public void init(ServletConfig config) throws ServletException {

        super.init(config);

    }

    

}

 

 

 

 

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

  version="3.0"

  metadata-complete="true">



    <servlet>

        <servlet-name>test1</servlet-name>

        <servlet-class>com.balfish.servlet.TestServlet</servlet-class>

    </servlet>

    

    <servlet-mapping>

        <servlet-name>test1</servlet-name>

        <url-pattern>/1.txt</url-pattern>

    </servlet-mapping>



</web-app>

 

 

 

WEB-INF 下的page下的index.jsp用模板即可,只为说明问题

你可能感兴趣的:(servlet)