因为要集成润乾报表,所以需要用到jsp。
因为润乾报表官方文档说用jsp的方式是最简单最安全的,而用undertow开发确实很爽,所以我在波总的帮助下成功完成了第一步:让undertow支持jsp。
************************************************************************************************
解决办法,按下面步骤:
git clone https://gitee.com/jfinal/jfinal-undertow.git
cd jfinal-undertow
mvn clean install
上面三步就将最新版本安装到你本地了
然后,你将你项目中pom.xml文件的 jfinal-undertow 的版本由 1.9 改成 2.0。
************************************************************************************************
然后修改启动类:(红色部分记得修改为你自己的启动类)
UndertowServer.create(JFinalClubConfig.class)
.configWeb(wb -> {
wb.getDeploymentInfo().addServlet(JspServletBuilder.createServlet("Default Jsp Servlet", "*.jsp"));
HashMap<String, TagLibraryInfo> tagLibraryInfo = new HashMap<String, TagLibraryInfo>();
JspServletBuilder.setupDeployment(wb.getDeploymentInfo(), new HashMap<String, JspPropertyGroup>(), tagLibraryInfo,
new HackInstanceManager());
})
.start();
************************************************************************************************
以下是import内容:
import java.io.File;
import java.sql.Connection;
import java.util.HashMap;
import org.apache.jasper.deploy.JspPropertyGroup;
import org.apache.jasper.deploy.TagLibraryInfo;
import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.wall.WallFilter;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.json.MixedJsonFactory;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.plugin.ehcache.EhCachePlugin;
import com.jfinal.plugin.redis.RedisPlugin;
import com.jfinal.server.undertow.UndertowServer;
import com.jfinal.template.Engine;
import io.undertow.jsp.HackInstanceManager;
import io.undertow.jsp.JspServletBuilder;
************************************************************************************************
然后把jsp文件放入\src\main\webapp下,然后就可以访问了。
感谢波总!
pom.xml 依赖如下:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal-undertow</artifactId> <version>2.0</version> </dependency> <!-- jsp支持 --> <dependency> <groupId>io.undertow.jastow</groupId> <artifactId>jastow</artifactId> <version>2.1.0.Final</version> <exclusions> <!-- 以下两个包跟jfinal-undertow依赖冲突 --> <exclusion> <groupId>io.undertow</groupId> <artifactId>undertow-servlet</artifactId> </exclusion> <exclusion> <groupId>org.jboss.logging</groupId> <artifactId>jboss-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.jboss.spec.javax.servlet.jsp</groupId> <artifactId>jboss-jsp-api_2.3_spec</artifactId> <version>2.0.0.Final</version> </dependency> <dependency> <groupId>io.undertow</groupId> <artifactId>undertow-websockets-jsr</artifactId> <version>2.0.25.Final</version> </dependency> <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal</artifactId> <version>4.7</version> </dependency>
还有要记得在配置文件里面打开:
//允许访问jsp
me.setDenyAccessJsp(false);
再补充一下在 pom.xml 中需要添加的 JSP 依赖就完美了,修改此贴可以直接补充