Springboot min -Solon 詳解系列文章:
Springboot mini - Solon詳解(一)- 快速入門
Springboot mini - Solon詳解(二)- Solon的核心
Springboot mini - Solon詳解(三)- Solon的web開發
Springboot mini - Solon詳解(四)- Solon的事務傳播機制
Springboot mini - Solon詳解(五)- Solon擴展機制之Solon Plugin
Springboot mini - Solon詳解(六)- Solon的校驗框架使用、定製與擴展
Springboot mini - Solon詳解(七)- Solon Ioc 的註解對比Spring及JSR330
Springboot mini - Solon詳解(八)- Solon的緩存框架使用和定製
Springboot mini - Solon詳解(九)- 渲染控制之定製統一的接口輸出
Springboot mini - Solon詳解(十)- 怎麼用 Solon 開發基於 undertow jsp tld 的項目?html
Solon
開發 jsp
項目是很是簡單的,只要改用 jetty
啓動器 或者 undertow
啓動器,其它也沒特別之處了。此文用 undertow + jsp + tld
這個套路搞一把:java
用solon 作 undertow + jsp 的開發;只須要配置一下 meven 便可(不須要其它的額外處理或啓用)git
<parent> <groupId>org.noear</groupId> <artifactId>solon-parent</artifactId> <version>1.2.10</version> </parent> <dependencies> <!-- 添加 solon web 開發包 --> <dependency> <groupId>org.noear</groupId> <artifactId>solon-web</artifactId> <type>pom</type> <exclusions> <!-- 排除默認的 jlhttp 啓動器 --> <exclusion> <groupId>org.noear</groupId> <artifactId>solon.boot.jlhttp</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加 undertow 啓動器 --> <dependency> <groupId>org.noear</groupId> <artifactId>solon.boot.undertow</artifactId> </dependency> <!-- 添加 undertow jsp 擴展支持包 --> <dependency> <groupId>org.noear</groupId> <artifactId>solon.extend.undertow.jsp</artifactId> </dependency> <!-- 添加 jsp 視圖渲染器(能夠添加一堆別的view插件) --> <dependency> <groupId>org.noear</groupId> <artifactId>solon.view.jsp</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.14.4</version> <scope>provided</scope> </dependency> </dependencies>
//資源路徑說明(不用配置) resources/application.properties(或 application.yml) 爲應用配置文件 resources/static/ 爲靜態文件根目標 resources/WEB-INF/view/ 爲視圖文件根目標(支持多視圖共存) //調試模式: 啓動參數添加:-deubg=1
src/main/java/webapp/controller/HelloworldController.java
@Controller public class HelloworldController { //這裏注入個配置 @Inject("${custom.user}") protected String user; @Mapping("/helloworld") public ModelAndView helloworld(Context ctx){ UserModel m = new UserModel(); m.setId(10); m.setName("劉之西東"); m.setSex(1); ModelAndView vm = new ModelAndView("helloworld.jsp"); //若是是ftl模板,把後綴改成:.ftl 便可 vm.put("title","demo"); vm.put("message","hello world!"); vm.put("m",m); vm.put("user", user); vm.put("ctx",ctx); return vm; } }
src/main/java/webapp/widget/FooterTag.java
(對jsp來講,這個演示很重要)public class FooterTag extends TagSupport { @Override public int doStartTag() throws JspException { try { String path = Context.current().path(); //當前視圖path StringBuffer sb = new StringBuffer(); sb.append("<footer>"); sb.append("我是自定義標籤,FooterTag;當前path=").append(path); sb.append("</footer>"); pageContext.getOut().write(sb.toString()); } catch (Exception e){ e.printStackTrace(); } return super.doStartTag(); } @Override public int doEndTag() throws JspException { return super.doEndTag(); } }
src/main/resources/WEB-INF/tags.tld
(位置別亂改,就放這兒...)<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>自定義標籤庫</description> <tlib-version>1.1</tlib-version> <short-name>ct</short-name> <uri>/tags</uri> <tag> <name>footer</name> <tag-class>webapp.widget.FooterTag</tag-class> <body-content>empty</body-content> </tag> </taglib>
src/main/resources/WEB-INF/view/helloworld.jsp
<%@ page import="java.util.Random" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="ct" uri="/tags" %> <html> <head> <title>${title}</title> </head> <body> <div> context path: ${ctx.path()} </div> <div> properties: custom.user :${user} </div> <main> ${m.name} : ${message} (我想<a href="/jinjin.htm">靜靜</a>) </main> <ct:footer/> </body> </html>
一路上沒有web.xml ? 是的,沒有。github
源碼:demo05.solon_mvc_undertow_jspweb