jfinal自带jetty启动失败的问题

原项目在eclipse能正常启动,切换到idea后启动成功但是无法访问.用官方demo重新试了一下demo可以访问.

父类pom
<dependency>
    <groupId>com.jfinal</groupId>
    <artifactId>jetty-server</artifactId>
    <version>8.1.8</version>
    <!-- 此处的 scope 值为 compile 仅为支持 IDEA 下启动项目 打 war 包时需要改成 provided,以免将一些无用的
        jar 打进去 -->
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.jfinal</groupId>
    <artifactId>jfinal</artifactId>
    <version>3.3</version>
</dependency>

启动类
public static void main(String[] args) {
        JFinal.start("/web/src/main/webapp", 7003, "/");//效果1
        JFinal.start("web/src/main/webapp", 7003, "/");//效果2
        JFinal.start("src/main/webapp", 7003, "/");//效果1
    }
效果1:
Connected to the target VM, address: '127.0.0.1:57306', transport: 'socket'
Starting JFinal 3.3
Starting web server on port: 7003
[main] INFO org.eclipse.jetty.server.Server - jetty-8.1.8.v20121106
[main] INFO org.eclipse.jetty.webapp.StandardDescriptorProcessor - NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
[main] INFO org.eclipse.jetty.server.handler.ContextHandler - started o.e.j.w.WebAppContext{/,file:/web/src/main/webapp}
[main] INFO org.eclipse.jetty.server.handler.ContextHandler - started o.e.j.w.WebAppContext{/,file:/web/src/main/webapp}
[main] INFO org.eclipse.jetty.server.AbstractConnector - Started SelectChannelConnector@0.0.0.0:7003
Starting Complete. Welcome To The JFinal World :)
效果2:
Connected to the target VM, address: '127.0.0.1:57801', transport: 'socket'
Starting JFinal 3.3
Starting web server on port: 7003
[main] INFO org.eclipse.jetty.server.Server - jetty-8.1.8.v20121106
[main] INFO org.eclipse.jetty.webapp.StandardDescriptorProcessor - NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
[main] INFO org.eclipse.jetty.server.handler.ContextHandler - started o.e.j.w.WebAppContext{/,file:/Users/user/Documents/IdeaProjects/jfinaldemo/web/src/main/webapp/}
[main] INFO org.eclipse.jetty.server.handler.ContextHandler - started o.e.j.w.WebAppContext{/,file:/Users/user/Documents/IdeaProjects/jfinaldemo/web/src/main/webapp/}

image.png


但是把启动项目换成官方demo,用效果2 的配置就能启动.

评论区

JFinal

2020-10-12 18:24

支持 jsp 需要添加额外的依赖,注意在 IDEA 之下,要去掉依赖中的 scope 》 provided

ecilpse 下可以是 provided,打包时又要注意将它改成 provided,否则会将这些 jar 包打进去。部署到 tomcat 的时候是不需要这些依赖的

最后,强烈建议切到 jfinal undertow, 当然如果你要用 jsp ,还是得用 jetty-server 来开发

起码你可以升级到最新版本的 jetty-server:
https://gitee.com/jfinal/jetty-server

这里有使用文档:
https://jfinal.com/doc/1-6

最后,如果你要在浏览器中直接访问 .jsp 文件,对于高版本的 jfinal 注意要配置:
// 配置是否拒绝访问 JSP,是指直接访问 .jsp 文件,与 renderJsp(xxx.jsp) 无关
me.setDenyAccessJsp(true);

这个配置在文档中有说明:
https://jfinal.com/doc/2-2
https://jfinal.com/doc/14-1

默认没有开启直接访问 .jsp 文件的权限,是因为黑客可以想办法上传 .jsp 文件到你的应用中,然后直接请求该 jsp 来攻击你的系统

热门反馈

扫码入社