zoukankan      html  css  js  c++  java
  • SpringMVC Jsp include 错误404 不显示页面

    一、问题描述:

     1. 新建了taglibs.jsp存放jstl标签库和 jsp建站基本变量ctx 和basPath 如下  (位置WEB-INFcommon)

    <%@ page import="java.math.*"%>
    <%@ page import="java.util.*"%>
    
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
    <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
    <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
    
    <%--<%
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
    %>--%>
    
    <c:set var="ctx" value="${pageContext.request.contextPath}" />
    <c:set var="basePath" value="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${ctx}/" />
    <%-- <c:set var="ArcgisForJSApiPath" value="http://oa.purewooden.com/scripts/arcgis_js_api3.9" /> --%>

    2. 新建了jslibs.jsp引入共用的js文件 如下 (位置WEB-INFcommon)

    <base href="${basePath}">
    <%--公共js--%>
    <script type="text/javascript" src="${ctx}/statics/js/com/jquery-1.11.3.min.js" ></script>
    <script type="text/javascript" charset="UTF-8">
        var ctx = "${ctx}";
    </script>

    3. jsp页面引入以上两个文件后就会报404错误 (位置WEB-INFfrontuserlogin.jsp)

    <html>
    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%>
    <head>
        <!-- 引入公共头文件 -->
        <%--<c:import url="/WEB-INF/common/taglibs.jsp"></c:import>--%>
        <%--<%@ include file="/WEB-INF/common/taglibs.jsp" %>--%>
        <%--<%@ include file="/WEB-INF/common/jslibs.jsp" %>--%>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta name="Keywords" content="EA世界"/>
        <meta name="Description" content="EA世界"/>

    4. SpringMVC下相关配置

      视图配置

    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
            <property name="prefix" value="/WEB-INF/"/>
            <property name="suffix" value=".jsp"/>
        </bean>

      Servlet配置

    <servlet>
            <description>Spring Mvc Servlet</description>
            <servlet-name>springMvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <description>spring mvc 配置文件</description>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:config/springMvcConfig.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>springMvc</servlet-name>
            <url-pattern>*.html</url-pattern>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

    二、资料查询

    1、项目的所有jsp都放在WEB-INF文件夹之下,使用的是SpirngMVC进行了过滤,jsp:include只能引入WEB-INF外部的jsp文件,对于改变后缀显示为htm的jsp的WEB-INF下的文件,是访问不到的。
    2、使用jstl的c:import标签就可以很好的解决这个问题,c标签引入的是处理后的结果。

    2018-6-08

    3、WEBINF和WebRoot区别

      WEB-INF 是受保护目录只有服务端可以访问,WEB-INF里面的文件只可以由servlet去访问(web.xml文件映射),不能通过url地址栏去请求访问

      WEB-INF目录下的文件是不允许采用redirect方式的跳转来访问的,可以forward
      WebRoot根目录下面的文件可以直接通过url地址栏去访问,一般的index.jsp就放这里

      【见】Web项目的WEB-INF目录使用说明

      由于WEB-INF下对客户端是不可见的,所以相关的资源文件,如cssjavascript和图片等资源文件不能放在WEB-INF

    4、【见】j2ee项目 web-info目录问题

    4.1、资源文件只能放在WebContent下面,如 CSS,JS,image等.放在WEB-INF下引用不了.

     

    4.2、页面放在WEB-INF目录下面,这样可以限制访问,提高安全性.如JSP,html

     

    4.3、只能用转向方式来访问WEB-INF目录下的JSP,不用采用重定向的方式请求该目录里面的任何资源.如图:index.jsp>>  main.jsp

     

    4.4、WEB-INF目录下文件访问资源文件时,可以忽略WEB-INF这一层目录.如main.jsp 要用css目录里的一个css文件.

        <link rel="stylesheet"type="text/css" href="css/comm201005faa3.css" />这样就行了,从客户端的地址可以看出来

        服务器转向main.jsp就是在webroot下面.所以main.jsp和css目录可以讲是同一级目录.

    4.5WEB-INF/oa目录下访问images目录.怎么办呢.<imgalt="" src="images/instpage.gif"></body>还是这这样.

    4.6、WEB-INF目录下的文件之间如何访问呢.如在main.jsp用<ahref="oa.do">测试OA的路径</a>访问
       像main.jsp有10处链接到WEB-INF目录下的其它页面.那就得有10个转向Action.这个可以用DispatchAction类加参数专门处理转向工作.

     

    三、解决尝试

    2. c:import 的确可以引用 但是不能使用其中的变量 ctx basePath

  • 相关阅读:
    【20171030早】sqli-libs Less7-15 练习
    【20171029中】sqli-libs 注入的过程 less1-4
    【20171028早】ubuntu 16.04 LTS 安装php遇到的问题
    【20171027早】alert(1) to win 第9,10,11,12题
    【20171026早】alert(1) to win
    【20171025晚】alert(1) to win 第五题 正则表达式过滤
    【20171025中】alert(1) to win 脚本渲染自建
    【20171025早】alert(1) to win 练习
    mysql 导入 excel 数据
    我的书单
  • 原文地址:https://www.cnblogs.com/xdot/p/9051917.html
Copyright © 2011-2022 走看看