Springmvc 整合 jetbrick 实例

应用环境: 
<jetbrick.version>1.2.8</jetbrick.version>

<antlr4-runtime.version>4.2.2</antlr4-runtime.version>

<spring.mybatis.common.version>2.0</spring.mybatis.common.version>

项目结构:

实例展示:

1.引如pom依赖

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.spring.mybatis</groupId>
  <artifactId>jetbrick-mvc</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>jetbrick-mvc Maven Webapp</name>
  <url>http://maven.apache.org</url>
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <slf4j.version>1.7.7</slf4j.version>
        <junit.version>4.11</junit.version>
        <http.components.version>4.1</http.components.version>
        <commons.logging.version>1.1.3</commons.logging.version>
        <commons.codec.version>1.7</commons.codec.version>
        <jetbrick.version>1.2.8</jetbrick.version>
        <antlr4-runtime.version>4.2.2</antlr4-runtime.version>
        <servlet.version>2.4</servlet.version>
    </properties>
    <dependencies>

        <dependency>
            <groupId>jetbrick-template</groupId>
            <artifactId>jetbrick-template</artifactId>
            <version>${jetbrick.version}</version>
        </dependency>

        <dependency>
            <groupId>com.spring.mybatis</groupId>
            <artifactId>spring-mybatis-data-common</artifactId>
            <version>2.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.geronimo.specs</groupId>
                    <artifactId>geronimo-servlet_3.0_spec</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.antlr</groupId>
            <artifactId>antlr4-runtime</artifactId>
            <version>${antlr4-runtime.version}</version>
        </dependency>

        <dependency>
            <groupId>servlet-api</groupId>
            <artifactId>servlet-api</artifactId>
            <version>${servlet.version}</version>
        </dependency>
    </dependencies>
  <build>
    <finalName>jetbrick-mvc</finalName>
  </build>
</project>

2.添加jetbrick的监听与配置文件到web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" 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_2_5.xsd">

    <!--Spring ApplicationContext context listener -->
    <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- config Spring context -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
         <!-- if we set "/WEB-INF/xx", here should be "/WEB-INF/applicationContext.xml" -->
        <param-value>classpath*:context/spring-context.xml</param-value>
    </context-param>  

    <!-- Spring refresh Introspector -->
    <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>  

      <!-- set jetbrick listener -->
    <listener>
      <listener-class>jetbrick.template.web.JetWebEngineLoader</listener-class>
    </listener>

      <!-- set load jetbrick-template properties -->
    <context-param>
      <param-name>jetbrick-template-config-location</param-name>
      <param-value>classpath:template/jetbrick-template.properties</param-value>
    </context-param>

    <!-- Spring log4j listener -->
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

    <!-- set load log4j properties-->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:property/log4j.properties</param-value>
    </context-param>

       <!-- character Encoding filter -->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- Spring Modelv view Controller -->
    <servlet>
        <servlet-name>spring-controller</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:context/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring-controller</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!--set session timeout -->
    <session-config>
        <session-timeout>60</session-timeout>
    </session-config>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

3.配置jetbrick的全局属性

import.packages = com.mvc.cmrn.dao, com.mvc.cmrn.model
#import inner define function,once import use anywhere
import.functions = jetbrick.template.runtime.JetFunctions
#set autoscan is true
import.autoscan = true
#set autoscan package
import.autoscan.packages = com.mvc.cmrn
#set reloadable is true
template.reloadable = true
input.encoding= UTF-8
output.encoding=UTF-8
template.reloadable = true
#template.path  +  spring prefix +   VIEW + spring suffix (or?? template.suffix)
template.path=/WEB-INF/jetx/
compile.debug = true
template.loader = jetbrick.template.web.WebResourceLoader
#more config read :http://subchen.github.io/jetbrick-template/config.html

4.定义jetbrick为应用试图

<?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns="http://www.springframework.org/schema/beans"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

     <!-- set annotation support is true -->
    <mvc:annotation-driven />  

    <!-- autoscan @Component , @Controller , @Service , @Repository ... annotation -->
    <context:component-scan base-package="com.mvc.cmrn.controller" />  

    <!-- load static resources -->
    <mvc:resources mapping="/scripts/**" location="/scripts/"/>
    <mvc:resources mapping="/styles/**"  location="/styles/" />

    <!-- define jdp for spring Model view
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jetx/" />
        <property name="suffix" value=".jsp" />
    </bean>
    -->

    <!-- define view with jetbrick template -->
    <bean class="jetbrick.template.web.springmvc.JetTemplateViewResolver">
        <!-- 如果spring 的suffix 没有配置,会读取 template.suffix 这个不是叠加.是 覆盖(spring 的优先) -->
         <property name="suffix" value=".baidu" />
         <property name="contentType" value="text/html; charset=UTF-8" />
         <property name="order" value="9999" />
    </bean>

</beans>

5.springmvc操作

package com.mvc.cmrn.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.mvc.cmrn.model.Member;
import com.mvc.cmrn.service.IMemberService;
import com.spring.mybatis.data.common.controller.BaseMultiController;

@Controller
@RequestMapping("/member")
public class MemberController extends BaseMultiController{

    @Autowired
    private IMemberService memberService;

    @RequestMapping(value={"/{id:\\d+}/query.baidu"},method={RequestMethod.GET,RequestMethod.POST})
    public ModelAndView query(HttpServletRequest request,HttpServletResponse response,@ModelAttribute("id") Long id){
        Map<String,Object> map = new HashMap<String, Object>();
        Member member = this.memberService.query(id);
        map.put("member", member);
        String viewPath = "front/detail";
        return toView(viewPath, map);
    }

    @RequestMapping(value={"/lists.baidu"},method={RequestMethod.GET,RequestMethod.POST})
    public ModelAndView lists(HttpServletRequest request,HttpServletResponse response){
        Map<String,Object> map = new HashMap<String, Object>();
        List<Member> lists = this.memberService.list();
        map.put("item", lists);
        String viewPath = "front/list";
        return toView(viewPath, map);
    }

    @RequestMapping(value={"/{id:\\d+}/delete.baidu"},method={RequestMethod.GET,RequestMethod.POST})
    public ModelAndView delete(HttpServletRequest request,HttpServletResponse response,@ModelAttribute("id") Long id){
        Map<String,Object> map = new HashMap<String, Object>();
        int result = this.memberService.delete(id);
        if(result>0){
            map.put("message", "Delete OK");
        }else{
            map.put("message", "Delete Error");
        }
        List<Member> lists = this.memberService.list();
        map.put("item", lists);
        String viewPath = "front/list";
        return toView(viewPath, map);
    }

    public IMemberService getMemberService() {
        return memberService;
    }

    public void setMemberService(IMemberService memberService) {
        this.memberService = memberService;
    }

}
package com.mvc.cmrn.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.mvc.cmrn.model.Member;
import com.mvc.cmrn.service.IMemberService;
import com.spring.mybatis.data.common.controller.BaseMultiController;

@Controller
@RequestMapping("/member")
public class MemberController extends BaseMultiController{

    @Autowired
    private IMemberService memberService;

    @RequestMapping(value={"/{id:\\d+}/query.baidu"},method={RequestMethod.GET,RequestMethod.POST})
    public ModelAndView query(HttpServletRequest request,HttpServletResponse response,@ModelAttribute("id") Long id){
        Map<String,Object> map = new HashMap<String, Object>();
        Member member = this.memberService.query(id);
        map.put("member", member);
        String viewPath = "front/detail";
        return toView(viewPath, map);
    }

    @RequestMapping(value={"/lists.baidu"},method={RequestMethod.GET,RequestMethod.POST})
    public ModelAndView lists(HttpServletRequest request,HttpServletResponse response){
        Map<String,Object> map = new HashMap<String, Object>();
        List<Member> lists = this.memberService.list();
        map.put("item", lists);
        String viewPath = "front/list";
        return toView(viewPath, map);
    }

    @RequestMapping(value={"/{id:\\d+}/delete.baidu"},method={RequestMethod.GET,RequestMethod.POST})
    public ModelAndView delete(HttpServletRequest request,HttpServletResponse response,@ModelAttribute("id") Long id){
        Map<String,Object> map = new HashMap<String, Object>();
        int result = this.memberService.delete(id);
        if(result>0){
            map.put("message", "Delete OK");
        }else{
            map.put("message", "Delete Error");
        }
        List<Member> lists = this.memberService.list();
        map.put("item", lists);
        String viewPath = "front/list";
        return toView(viewPath, map);
    }

    public IMemberService getMemberService() {
        return memberService;
    }

    public void setMemberService(IMemberService memberService) {
        this.memberService = memberService;
    }

}

6.获取应用路径

在全局属性配置文件jetbrick-template.properties中引入的jetbrick模板中自定义的函数.通过函数webroot()获取路径.

<table border="1" width="600">
  <tr>
        <td>ID</td>
        <td>姓名</td>
        <td>邮箱</td>
        <td>查看</td>
        <td>删除</td>
  </tr>
  #for(Member member: item)
  <tr>
        <td>${user.id}</td>
        <td>${user.name}</td>
        <td>${user.email}</td>
        <td><a href="${webroot()}/member/${user.id}/query.baidu">查看</a></td>
        <td><a href="${webroot()}/member/${user.id}/delete.baidu">删除</a></td>
  </tr>
  #end
</table>

语法说明: http://subchen.github.io/jetbrick-template/syntax.html
实例下载: http://files.cnblogs.com/dennisit/springmvc-jetbrick-demo.7z
转载请注明出处:[http://www.cnblogs.com/dennisit/p/3812456.html]

Springmvc 整合 jetbrick 实例

时间: 2024-08-09 10:44:47

Springmvc 整合 jetbrick 实例的相关文章

springmvc整合redis架构搭建实例

新换环境,又有新东西可以学习了,哈皮! 抽空学习之余看了一下redis,个人对Springmvc的爱是忠贞不渝,所以整理了一下Springmvc整合redis的环境搭建.分享学习. 第一步: 创建maven项目: 实例pom.xml内容如下 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns

Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错) 【转】

互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应. 第一:介绍Dubbo背景 大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡. (1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也

Mybatis使用之SpringMVC整合

Mybatis使用之SpringMVC整合 一:简介 主要记录Mybatis如何与SpringMVC框架整合.Mybatis真正与Spring结合更能体现出其灵活.便捷的特点.数据源交由Spring管理.事务交由Spring管理.配置文件.映射文件交由Spring加载.初始化.映射接口交由Spring注入等等.大大简化了Mybatis代码.配置量.Mybatis只需关心与数据库打交道.处理数据与实体类之间的映射即可. 二:环境介绍 主要是Mybatis3.2.8与Spring4.1.0之间的整合

springMVC整合xStream

一. 简单介绍: xStream能够轻易的将Java对象转换成xml.JSON.本篇博客将使用springMVC整合利用xStream转换xml. 关于xStream使用的博文:http://blog.csdn.net/zdp072/article/details/39054197 二. 实例: 1. 代码结构图: 2. 实体类: (1)Account public class Account { private int id; private String name; private Stri

springMVC -- 整合UEditor(富文本编辑器)

工作中需要用到UEditor编辑文本,在与springMVC进行整合时,出现了一些问题,结果导致,在进行图片上传时出现如下提示: 上网查询了很多相关资料,此处简要记录下,防止以后遇到类似问题. 1.编写controller 如下(该接口是ueditor前后台交互的统一路径) : package com.test.dcdp.controller; import java.io.IOException; import java.io.PrintWriter; import javax.servlet

SpringMVC整合Shiro——(3)

SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. 第一步:配置web.xml <!-- 配置Shiro过滤器,先让Shiro过滤系统接收到的请求 --> <!-- 这里filter-name必须对应applicationContext.xml中定义的<bean id="shiroFilter"/> --> <!-- 使用[/*]匹配所有请求,保证所有的可控请求都经过Shiro

六:Dubbo与Zookeeper、SpringMvc整合和使用

DUBBO与ZOOKEEPER.SPRINGMVC整合和使用 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应. 第一:介绍Dubbo背景 Dubbo是一个分布式服务框架,解决了上面的所面对的问题,Dubbo的架构如图所示: 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和

spring和springMVC整合注解版helloworld

整合的之前需要从官网上下载spring完整的jar包,我下载的是spring-framework-3.2.2.RELEASE.整合步骤如下: 1.在eclipse中新建一个web项目,将下载的spring的jar包拷入lib目录下,但是spring启动的时候依赖一个commons-logging-1.1.jar的jar包,你需要额外的下载. 2.编写web.xml,配置spring的分发器和spring配置文件的位置.具体内容如下: <servlet> <servlet-name>

Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)(转)

互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应. 第一:介绍Dubbo背景 大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡. (1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也