精华内容
下载资源
问答
  • java领域,表现层技术主要有三种:jsp、freemarker、velocity。jsp是大家最熟悉的技术优点:1、功能强大,可以写java代码2、支持jsp标签(jsp tag)3、支持表达式语言(el)4、官方标准,用户群广,丰富的第三方...
    在java领域,表现层技术主要有三种:jsp、freemarker、velocity。

    jsp是大家最熟悉的技术
    优点:
    1、功能强大,可以写java代码
    2、支持jsp标签(jsp tag)
    3、支持表达式语言(el)
    4、官方标准,用户群广,丰富的第三方jsp标签库
    5、性能良好。jsp编译成class文件执行,有很好的性能表现
    缺点:
    jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。

    velocity是较早出现的用于代替jsp的模板语言
    优点:
    1、不能编写java代码,可以实现严格的mvc分离
    2、性能良好,据说比jsp性能还要好些
    3、使用表达式语言,据说jsp的表达式语言就是学velocity的
    缺点:
    1、不是官方标准
    2、用户群体和第三方标签库没有jsp多。
    3、对jsp标签支持不够好

    freemarker
    优点:
    1、不能编写java代码,可以实现严格的mvc分离
    2、性能非常不错
    3、对jsp标签支持良好
    4、内置大量常用功能,使用非常方便
    5、宏定义(类似jsp标签)非常方便
    6、使用表达式语言
    缺点:
    1、不是官方标准
    2、用户群体和第三方标签库没有jsp多

    选择freemarker的原因:
    1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。
    2、宏定义比jsp tag方便
    3、内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便
    4、支持jsp标签
    5、可以实现严格的mvc分离
    展开全文
  • 统一视图层返回对象 @Data @NoArgsContructor @AllArgsConstructor public class Result<T> implements Serializable{ private static final long serialVersionUID = -3227876720404375612L; private ...

    视图层返回对象示例

    @Data
    @NoArgsContructor
    @AllArgsConstructor
    public class Result<T> implements Serializable{
        private static final long serialVersionUID = -3227876720404375612L;
        private static final Integer SUCCESS_CODE = 200;
        private static final String SUCCESS_MESSAGE = "OK";
    
    	private Integer code;
    	private String message;
    	private String timestamp;
    	private T data;
    	
    	public static class ResultBuilder<E>{
    		private Integer code;
    		private String message;
    		private String timestamp;
    		private E data;
    	
    		public Result.ResultBuilder<E> code(Integer code){
    			this.code = code;
    			return this;
    		}
    	
    		public Result.ResultBuilder<E> message(String message){
    			this.message = message;
    			return this;
    		}
    		
    		public Result.ResultBuilder<E> data(E data){
    			this.data = data;
    			return this;
    		}
    	
    		public Result<E> build(){
    			return new Result<>(this.code, this.message,LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss SSS")),this.data);
    		}
    	}
    	
    	public static <T> ResultBuilder<T> builder(){
    		return new ResultBuilder<>();
    	}
    	
    	public static Result<Object> success(){
    		return Result.builder().code(SUCCESS_CODE).message(SUCCESS_MESSAGE).build();
    	}
    	
    	public static <T> Result<Object> success(T data){
    		return Result.builder().code(SUCCESS_CODE).message(SUCCESS_MESSAGE).data(data).build();
    	}
    	
    	public static Result<Object> error(Integer code, String message){
    		return Result.builder().code(code).message(message).build();
    	}
    }
    
    展开全文
  • 第六章 视图层设计技术 本章要点 自定义标签的设计原理与应用 在博客网站中定义博文分类标签 EL表达式与JSTL标签 实现博客网站中的博文管理功能 AJAX原理及应用 6.1 自定义标签 自定义标签是用户定义的JSP语言元素...
  • 我们提供一个Java使用Thymeleaf的简单示例。Thymeleaf是一个模板引擎可以处理XML,XHTML、HTML5。Thymeleaf利用最少的IO操作来获得更快的速度,使用thymeleaf模板引擎加快了前后端开发工作的并行运作。Thymeleaf还...

    我们提供一个Java使用Thymeleaf的简单示例。Thymeleaf是一个模板引擎可以处理XML,XHTML、HTML5。Thymeleaf利用最少的IO操作来获得更快的速度,使用thymeleaf模板引擎加快了前后端开发工作的并行运作。Thymeleaf还提供了国际化。Thymeleaf提供了最基础的两个编程API:ServletContextTemplateResolver 和TemplateEngine。Servletcontexttemplateresolver负责解析模板、Templateengine使用templateengine process()方法处理模板数据。模板引擎表达式可以从properties文件和WebContext获取属性值从而展示到页面。需要注意的是:属性文件、模板文件必须同名且位于同一目录(编译后)。

    使用servlet3.0注解报会在访问时报404错误,解决方案如下web.xml文件头如下配置:

    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

    Java+Thymeleaf示例程序的准备工作

    (本文章分享在CSDN平台,更多精彩请阅读 东陆之滇的csdn博客:http://blog.csdn.net/zixiao217 ,如在其他平台看到此文可能会出现内容不完整的现象,请移至东陆之滇http://blog.csdn.net/zixiao217查看原文)

    • Java 8
    • Thymeleaf
    • Servlet 3
    • Tomcat 8
    • Maven
    • Eclipse

    示例程序的目录结构

    这里写图片描述

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.byron4j</groupId>
        <artifactId>java2Thymeleaf</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <name>java2Thymeleaf</name>
        <url>http://blog.csdn.net/zixiao217/article/details/52723437</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
            </dependency>
    
    
    
            <dependency>
                <groupId>org.thymeleaf</groupId>
                <artifactId>thymeleaf-spring4</artifactId>
                <version>2.1.5.RELEASE</version>
            </dependency>
        </dependencies>
    
    
    
        <build>
            <finalName>thymeDemo</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.5.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <!-- <compilerArguments> <extdirs>lib</extdirs> </compilerArguments> -->
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

    使用th:text外化文本

    打开我们的模板文件WEB-INF\templates\welcome.html,如果我们直接访问该html文件,则会显示”Welcome Offline”,当我们通过服务启动之后访问url则显示从后台获得的属性值。

    注意:在模板文件中需要声明thymeleaf的文档类型、xml命名空间,WEB-INF\templates\welcome.html

    <!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
      <head>
        <title>Thymeleaf-Java Demo</title>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF8" />
      </head>
      <body>
        <p th:text="#{welcome.msg}">喂,掉线了丿_|</p>
        <p>Date : <span th:text="${currentDate}">1990-01-01 00:00:00</span></p>
      </body>
    </html> 

    th:text: 该属性用来计算表达式的值,并将结果展示为标签的内容
    #{…}: 从属性文件获得该属性的值。 表达式#{welcome.msg} 会尝试获得属性文件中key为welcome.msg的value。
    ${…}: OGNL表达式 会获取在org.thymeleaf.context.WebContext中设置的值。在这个Demo中表达式${currentDate} 将会获取在WebContext中设置的currentDate 属性值。

    ServletContextTemplateResolver 解析模板和TemplateEngine.process()处理模板

    ThymeleafAppUtil.java

    package org.byron4j.java2Thymeleaf;
    
    import org.thymeleaf.TemplateEngine;
    import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
    
    
    /**
     *  @author     Byron.Y.Y
     *  @optDate    2016年11月15日
     *  Thymeleaf模板引擎和解析器
     */
    public class ThymeleafAppUtil {
    
        private static TemplateEngine templateEngine;
    
        /**
         * static代码块,加载初始模板设置:/WEB-INF/templates/**.html文件
         */
        static {
            ServletContextTemplateResolver templateResolver = 
                    new ServletContextTemplateResolver();
            templateResolver.setTemplateMode("XHTML");
            templateResolver.setPrefix("/WEB-INF/templates/");
            templateResolver.setSuffix(".html");
            templateResolver.setCacheTTLMs(3600000L);
            templateEngine = new TemplateEngine();
            templateEngine.setTemplateResolver(templateResolver);
        }
    
        public static TemplateEngine getTemplateEngine() {
         return templateEngine;
        }
    
    }
    

    ServletContextTemplateResolver: 负责解析Thymeleaf模板。我们需要设置模板模式、模板文件的前缀、后缀等。
    TemplateEngine: 处理thymeleaf模板。

    属性文件

    属性文件、模板文件必须同名且放在一个目录中(项目编译后)
    WEB-INF\templates\welcome_en.properties

    welcome.msg=Welcome to Thymeleaf World!

    WEB-INF\templates\welcome_zh.properties

    welcome.msg=欢迎使用 Thymeleaf!

    Servlet类

    WelcomeServlet.java

    package org.byron4j.java2Thymeleaf;
    
    import java.io.IOException;
    
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     *  @author     Byron.Y.Y
     *  @optDate    2016年11月15日
     *  使用servlet3注解,注册一个servlet,并在容器启动时加载
     */
    @WebServlet(urlPatterns = "/welcome", loadOnStartup = 1)
    public class WelcomeServlet extends HttpServlet {
    
        private static final long serialVersionUID = 1L;
    
        //POST请求
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
                doGet(request,response);
        }
    
        //GET请求
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException{
            response.setContentType("text/html;charset=UTF-8");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);
            WelcomeApplication application = new WelcomeApplication();
            application.process(request, response);
        }
    } 

    WelcomeApplication.java

    package org.byron4j.java2Thymeleaf;
    
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.thymeleaf.context.WebContext;
    
    public class WelcomeApplication {
        public void process(HttpServletRequest request, HttpServletResponse response) 
             throws IOException {
            WebContext ctx = new WebContext(request, response, request.getServletContext(),
                    request.getLocale());
            ctx.setVariable("currentDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    
            /**
             * 使用Thymeleaf引擎加载模板文件welcome.html
             */
            ThymeleafAppUtil.getTemplateEngine().process("welcome", ctx, response.getWriter());
        }
    }
    

    web.xml

    声明使用了servlet3,eclipse默认生成的web.xml使用的是servlet2.3、2.5,我们需要手动指定为servlet3,运用servlet3.0注解报会在访问时报404错误。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    
      <display-name>Archetype Created Web Application</display-name>
    </web-app>
    

    运行结果:
    这里写图片描述

    完整的Demo Maven工程代码

    演示项目源码下载 http://download.csdn.net/detail/zixiao217/9684984

    Thymeleaf+Java Demo演示项目源码

    展开全文
  • 1-* 机械工业出版社 机械工业出版社 课程安排 任务说明 技术要点 在线购物系统主界面设计 用户模块页面设计 优惠值模块页面设计 商品类型模块页面设计 商品模块页面设计 购物车模块页面设计 知识点汇总 章末总结 ...
  • java 开发实例 适合初学者 MVC模式 jsp的 增删改查 视图层+模型层+控制层
  • 1. 於是先定義最大的view,並設定為目前佈局:RelativeLayout r_layout = new RelativeLayout(this);setContentView(r_layout)2. 接著定義第二層的TableLayout,並加入到r_layout 裡:TableLayout tableLayout = new...

    1. 於是先定義最大的view,並設定為目前佈局:
    RelativeLayout r_layout = new RelativeLayout(this);
    setContentView(r_layout)
    2. 接著定義第二層的TableLayout,並加入到r_layout 裡:
    TableLayout tableLayout = new TableLayout(this);
    r_layout.addView(tableLayout, new RelativeLayout.LayoutParams(WC, WC));
    3. 再定義第三層的TableRow,並加入到tableLayout 裡:
    TableRow tableRow1 = new TableRow(this);
    tableLayout.addView(tableRow1, new TableLayout.LayoutParams(WC, WC));
    4. 最後,定義最小的view,並加入到tableRow裡:
    ImageView iv = new ImageView(this);
    tableRow1.addView(iv);
    如此依序逐步定義,就能順利完成。

    转载于:https://www.cnblogs.com/yangchao/archive/2010/09/01/2044420.html

    展开全文
  • java之学习-1中用idea搭建了spring boot,现在来学习如何连到视图层 1:添加视图的依赖包(修改pom.xml) <dependency> <groupId>org.springframework.boot</groupId> <artifactId>...
  • SpringBoot静态资源访问 1.静态资源:访问 js / css /图片,传统web工程,webapps springboot 要求:静态...2.整合Freemarker视图层 使用Freemarker模板引擎渲染web视图 pom文件引入 <dependency> <...
  • c#和java的交互我不明白,以前只做jsp的java的交互,据说spring能那一层都能随便换,领导让我用c#连接java,哪个大侠能出手相助啊
  • 此图来自传智播客教程。 上下都容易理解,关键中间的四个层 ...视图层就是所看到的前端页面(V) 逻辑层解析、校验数据 (个人理解应该也归结于M层,哈哈) 业务层实现整体业务的逻辑 C 持久层,DAO,JDBC M...
  • web视图层:JSP

    2019-11-06 11:52:53
    web视图层:JSPJSP编译、执行过程JSP内置对象EL表达式EL表达式的内置对象 JSP编译、执行过程 ①预处理阶段:客户第一次请求jsp页面时,jsp引擎会将jsp文件中的脚本代码(HTML)和代码片段(Java代码)全部转换为java...
  • SpringBoot简明教程之视图层(一):静态资源映射规则及WebJars的使用 文章目录SpringBoot简明教程之视图层(一):静态资源映射规则及WebJars的使用项目创建静态资源映射规则静态资源映射优先级Favicon图标的修改...
  • SpringBoot整合视图层技术 SpringBoot 整合jsp SpringBoot 整合freemarker SpringBoot 整合Thymeleaf 一 SpringBoot 整合jsp技术 1.修改pom文件添加坐标 <project xmlns=...
  • <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
  • public class Book { private Integer id; private String author; private String name; //TODO get set }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,878
精华内容 6,751
关键字:

java视图层

java 订阅