jfinal的绝对路径和action请求路径添加文件夹名称而导致"404 not found"的问题

简介: 版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/70224648   ...
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/70224648

        一、发现问题

    在使用jfinal框架的时候,有的jsp页面的action请求是正常的,但有的jsp页面有时候会出现一个问题,

就是请求的action或者url会和上一个path的action添加jsp所在的文件夹名称而导致在新的action无法获得相

应请求出现404的问题,例如:

    正常jsp的请求:Main/User/userIndex,url为:http://localhost:88/test/Main/User/userIndex

    出现问题的jsp页面的请求:Main/Company/companyIndex,访问的url为:

http://localhost:88/test/Main/User/Main/Company/companyIndex叠加了文件夹的名称从而导致action的

404问题;


    那么,问题出现在哪里呢?

    首先,由于正常jsp页面请求的时候,action是能够正常访问到的,这就说明,jfinal的路由配置是没有

问题的;

    其次,jfinal的action拦截器是在捕获正确的action之后才触发的,所以与Interceptor拦截器无关;

    那么,问题就出现在jsp页面上了,然后自己在仔细翻阅了一下jfinal的api使用手册,搜索一下网页上关

于jfinal对jsp页面的设计方面的问题,然后找到了问题:

    问题所在:

    原来,jfinal的jsp页面请求的action路径都默认以根路径为访问前提,如果在根目录下有自创的文件夹,

则在访问的时候action路径会自动加上jsp所在文件夹的路径名称,所以视图层一般都需要设置项目的根路径

basePath作为访问的前提,也就是说,必须在jsp页面添加绝对路径的设置,在head添加:

       <%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
       %>
	<base href="<%=basePath%>" />

    加入上面这个然后访问的action就正常了。


    二、解决问题

    然后,另外一个问题又来了,是不是我的每个jsp页面都要添加这几行代码,是不是太麻烦了?

有没有什么解决的方法?

    这里提供几个解决jfinal绝对路径basePath的方法:

    1.将basePath的这几行代码分离出来,单独作为一个jsp页面,然后在每个jsp页面的头部都插入进去,

    使用方法:

    basePath的jsp路径为:/jspUtil/basePathUtil.jsp 则在请求action的jsp页面头部可以使用:

    <%@ include file="/jspUtil/basePathUtil.jsp"%>引用该jsp页面;


    2.在jfinal的处理器上配置basePath,然后在页面上直接引用就可以了,

    使用方法:jfinal的处理器配置如下:

 	 /** 配置处理器 */
	 public void configHandler(Handlers me) {
		 me.add(new ContextPathHandler("basePath"));
	 }
    然后在jsp的页面引用如下:

       <a href="${basePath}/Main/User/userIndex">用户测试</a>

 

    三、

    PS:的名称仔细阅读jfinal的使用手册api,解决问题事半功倍。

    jfinal3.0的jar包、demo、api、数据库基本语句操作等文件打包下载:附件

   





相关文章
|
3月前
|
前端开发 JavaScript UED
JFinal框架中防止表单重复提交的方法
每种方法都有其优势和局限性。Token机制能提供较为稳定可靠的保护,但增加了服务器端的处理负担。锁定机制在处理并发请求时更有效,但可能导致用户体验的下降。JavaScript客户端控制提供了良好的用户体验,但依赖于客户端的执行环境。在实际应用中,可以根据具体的场景和需求,选择最适合的方法,或者将多种方法组合使用,以达到最佳的效果。
45 10
|
JavaScript 前端开发 Java
JFinal框架单文件、多文件上传详解
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/79386540 简介  ...
2793 0
|
Java PHP Spring
从今天开始,要入jfinal的坑了,试试这破框架好不好用。
公司要用jfinal,所以我要入坑了。 听说时去年很火的java框架,不知好不好,试试水吧。 看官网就想吐槽 看个文档吧,还要注册。。。现在是2017年吗?? 好吧,注册完了,接着就。
2029 0
|
Java 调度 Maven
JFinal框架_定时触发程序
JFinal框架进行作业调度,使用JFinal-ext2与quartzf进行配置。 maven说明: com.jfinal jfinal 3.2 com.jfinal jfinal-ext2 2.
1710 0
|
Java 数据格式 XML
jfinal框架文件下载功能代码
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/72779838 一. 前言   上一篇博客我们了解了struts2框架的文件下载功能代码,我们可以从中总结到,struts2主要是通过其xml的配置来处理文件下载的,也就是将普通io流文件下载的页面响应方式的这部分代码分离出来,使用xml配置来处理,这也是struts2的特性。
1761 0
|
Java
基于Java的JFinal框架快速上手
http://finalshares.com/read-737
1186 0
|
Oracle 关系型数据库 Java
jfinal框架教程-学习笔记(二)
上一节介绍了jfinal框架的简单搭建,这节通过一个小例子了解jfinal的结构和特点 先上图 1、建数据库(我用的是oracle数据库,其他的相对也差不多) -- Create table create table CLASSES ( classesid NUMB...
1314 0
|
XML Java 数据格式
快速的搭建JFinal的ORM框架示例
  分类: Java2013-12-11 20:55 11075人阅读 评论(12) 收藏 举报 刚把Spring MVC搭建完毕,在群里一个人问如何搭建JFinal + Httl,我就先打架了一个JFinal环境。
1182 0