原项目在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/}
但是把启动项目换成官方demo,用效果2 的配置就能启动.
项目:JFinal
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 来攻击你的系统