Solon详解(十)- 怎么用 Solon 开发基于 undertow jsp tld 的项目?

Solon详解系列文章:
Solon详解(一)- 快速入门
Solon详解(二)- Solon的核心
Solon详解(三)- Solon的web开发
Solon详解(四)- Solon的事务传播机制
Solon详解(五)- Solon扩展机制之Solon Plugin
Solon详解(六)- Solon的校验扩展框架使用与扩展
Solon详解(七)- Solon Ioc 的注解对比Spring及JSR330
Solon详解(八)- Solon的缓存框架使用和定制
Solon详解(九)- 渲染控制之定制统一的接口输出

Solon 开发 jsp 项目是非常简单的,只要改用 jetty 启动器 或者 undertow 启动器,其它也没特别之处了。此文用 undertow + jsp + tld 这个套路搞一把:

一、 开始Meven配置走起

用solon 做 undertow + jsp 的开发;只需要配置一下 meven 即可(不需要其它的额外处理或启用)

    
        org.noear
        solon-parent
        1.0.40
    
    
    
        
        
            org.noear
            solon-web
            pom
            
                
                
                    org.noear
                    solon.boot.jlhttp
                
            
        

        
        
            org.noear
            solon.boot.undertow
        

        
        
            org.noear
            solon.extend.undertow.jsp
        

        
        
            org.noear
            solon.view.jsp
        


        
            org.projectlombok
            lombok
            1.14.4
            provided
        
    

二、 其它代码和平常开发就差不多了

//资源路径说明(不用配置)
resources/application.properties(或 application.yml) 为应用配置文件
resources/static/ 为静态文件根目标
resources/WEB-INF/view/ 为视图文件根目标(支持多视图共存)

//调试模式:
启动参数添加:-deubg=1
  • 添加个控制器 src/main/java/webapp/controller/HelloworldController.java
@XController
public class HelloworldController {

    //这里注入个配置
    @XInject("${custom.user}")
    protected String user;

    @XMapping("/helloworld")
    public ModelAndView helloworld(XContext 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 = XContext.current().path();

            //当前视图path
            StringBuffer sb = new StringBuffer();
            sb.append("
"); sb.append("我是自定义标签,FooterTag;当前path=").append(path); sb.append("
"); pageContext.getOut().write(sb.toString()); } catch (Exception e){ e.printStackTrace(); } return super.doStartTag(); } @Override public int doEndTag() throws JspException { return super.doEndTag(); } }
  • 加tld描述文件 src/main/resources/WEB-INF/tags.tld (位置别乱改,就放这儿...)



    自定义标签库
    1.1
    ct
    /tags

    
        footer
        webapp.widget.FooterTag
        empty
    


  • 视图 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" %>


    ${title}


context path: ${ctx.path()}
properties: custom.user :${user}
${m.name} : ${message} (我想静静

三、 疑问

一路上没有web.xml ? 是的,没有。

四、 源码

源码:demo05.solon_mvc_undertow_jsp

你可能感兴趣的:(Solon详解(十)- 怎么用 Solon 开发基于 undertow jsp tld 的项目?)