【修真院Java小课堂】Tiles框架简单介绍

大家好,我是IT修真院上海分院第6期的学员,一枚正直纯洁善良的程序员 今天给大家分享一下,Tiles框架简单介绍

Tiles框架简单介绍

背景介绍

什么是Tiles
Tiles 是一种JSP布局框架,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,然后用来组合成一个最终表示用页面用的,这样的话,

       便于对页面的各个机能的变更及维护。 Tiles使得struts在页面的处理方面多了一种选择。并且更容易实现代码的重用。


Tiles框架特性和内容
Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离。它允许先创建模板,然后在运行时动态地将内容插入到模板中。Tiles 框架建立在JSP的include指令的基础上,但它提供了比JSP的 include指令更强大的功能。
 

    Tiles框架具有如下特性:
            ·创建可重用的模板
            ·动态构建和装载页面
            ·定义可重用的Tiles组件
            ·支持国际化
            Tiles框架包含以下内容:
           ·Tiles标签库
           ·Tiles组件的配置文件

           ·TilesPlugIn插件

然后是配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
        "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
        "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
    <!-- 主布局 -->
    <!--template 模版 definition 定义 attribute 属性-->
    <definition name="layout" template="/WEB-INF/jsp/layout.jsp">
        <put-attribute name="title" value="/WEB-INF/jsp/title.jsp" />
        <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
        <put-attribute name="body" value="" />
        <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
    </definition>
    <!-- 主布局 -->
    <!-- 首页 -->
    <definition name="home" extends="layout">
        <put-attribute name="body" value="/WEB-INF/jsp/homebody.jsp" />
    </definition>

    <!--职业-->
    <definition name="position" extends="layout">
    <put-attribute name="body" value="/WEB-INF/jsp/positionbody.jsp" />
    </definition>

    <!--合作-->
    <definition name="company" extends="layout">
        <put-attribute name="body" value="/WEB-INF/jsp/companybody.jsp" />
    </definition>

    <!--重写-->
    <definition name="test" extends="layout">
        <put-attribute name="header" value="/WEB-INF/jsp/chongxie.jsp"/>
    </definition>

    <!--嵌套-->
    <definition name="test1" extends="layout">
        <put-attribute name="body" value="layout"/>
    </definition>

    <!--匿名嵌套-->
    <definition name="test2" extends="layout">
    <put-attribute name="body" >
        <definition name="in" extends="test1">
            <put-attribute name="body" value="/WEB-INF/jsp/homebody.jsp"/>
        </definition>
    </put-attribute>
        <!--<put-attribute name="header" value="/WEB-INF/jsp/chongxie.jsp"/>-->
        <!--<put-attribute name="footer" value="/WEB-INF/jsp/chongxie.jsp"/>-->
    </definition>

    <!--EL表达式-->
    <definition name="test3" extends="layout">
        <put-attribute name="body" expression="/WEB-INF/jsp/${body}.jsp"/>
    </definition>
</tiles-definitions>
主布局

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles-extras" prefix="tilesx" %>
<!DOCTYPE html>
<html>
<head>
     <tiles:insertAttribute name="title" />
</head>
<body>
     <tiles:insertAttribute name="header" />
     <tiles:insertAttribute name="body" />
     <tiles:insertAttribute name="footer" />

</body>
</html>
在spring-mvc添加视图解析器

<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver" p:order="1"/>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/layout.xml</value>
        </list>
    </property>
</bean>
参考文献
            百度百科
Apache Tiles官方文档:http://tiles.apache.org/
https://blog.csdn.net/qq_27093465/article/details/48650719




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单Java 麻将小游戏的示例代码,其中包含了基本的麻将规则和游戏流程。注意,这只是一个简单的示例,可能并不完美,仅供参考。 ```java import java.util.*; public class MahjongGame { private List<String> tiles; // 所有牌 private List<String>[] players; // 玩家手牌 private int currentPlayer; // 当前玩家 private int[] scores; // 玩家积分 private String[] windDirections = {"东", "南", "西", "北"}; // 圈风、门风 public MahjongGame() { // 初始化所有牌 tiles = new ArrayList<>(); for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 4; j++) { tiles.add(i + "万"); tiles.add(i + "筒"); tiles.add(i + "条"); } } for (int i = 1; i <= 4; i++) { tiles.add("东风"); tiles.add("南风"); tiles.add("西风"); tiles.add("北风"); tiles.add("红中"); tiles.add("发财"); tiles.add("白皮"); } // 初始化玩家手牌、积分和当前玩家 players = new ArrayList[4]; for (int i = 0; i < 4; i++) { players[i] = new ArrayList<>(); } scores = new int[4]; currentPlayer = 0; } // 洗牌 public void shuffle() { Collections.shuffle(tiles); } // 发牌 public void deal() { for (int i = 0; i < 4; i++) { for (int j = 0; j < 13; j++) { players[i].add(tiles.remove(0)); } } } // 玩家摸牌 public void drawTile() { String tile = tiles.remove(0); players[currentPlayer].add(tile); System.out.println("玩家" + (currentPlayer + 1) + "摸了一张牌:" + tile); } // 玩家打牌 public void discardTile(String tile) { if (!players[currentPlayer].remove(tile)) { throw new IllegalArgumentException("玩家" + (currentPlayer + 1) + "没有这张牌:" + tile); } System.out.println("玩家" + (currentPlayer + 1) + "打出了一张牌:" + tile); currentPlayer = (currentPlayer + 1) % 4; } // 判断是否胡牌 public boolean canWin(List<String> handTiles, String tile) { // TODO: 实现判断是否胡牌的算法 return false; } // 判断是否杠牌 public boolean canKong(List<String> handTiles, String tile) { // TODO: 实现判断是否杠牌的算法 return false; } // 玩家操作 public void playerAction(String tile) { boolean canWin = canWin(players[currentPlayer], tile); boolean canKong = canKong(players[currentPlayer], tile); Scanner scanner = new Scanner(System.in); System.out.println("玩家" + (currentPlayer + 1) + "的手牌:" + players[currentPlayer]); System.out.println("玩家" + (currentPlayer + 1) + "可以进行的操作:"); System.out.println("1. 打牌"); if (canWin) { System.out.println("2. 胡牌"); } if (canKong) { System.out.println("3. 杠牌"); } int choice = scanner.nextInt(); switch (choice) { case 1: discardTile(tile); break; case 2: if (canWin) { System.out.println("玩家" + (currentPlayer + 1) + "胡了这张牌:" + tile); // TODO: 更新积分 } break; case 3: if (canKong) { players[currentPlayer].remove(tile); players[currentPlayer].add(tile); players[currentPlayer].add(tile); players[currentPlayer].add(tile); players[currentPlayer].add(tile); System.out.println("玩家" + (currentPlayer + 1) + "杠了这张牌:" + tile); // TODO: 更新积分 } break; default: throw new IllegalArgumentException("无效的操作"); } } // 游戏流程 public void play() { for (int round = 1; round <= 4; round++) { // 四圈 System.out.println("第" + round + "圈开始了"); shuffle(); deal(); int windDirection = (round - 1) % 4; // 圈风 int currentPlayer = windDirection; // 庄家 int tilesLeft = tiles.size(); // 剩余牌数 while (tilesLeft > 0) { String tile = tiles.remove(0); tilesLeft--; System.out.println("当前剩余牌数:" + tilesLeft); System.out.println("当前牌:" + tile); playerAction(tile); } // TODO: 结算 } } public static void main(String[] args) { MahjongGame game = new MahjongGame(); game.play(); } } ``` 这个示例代码只实现了基本的游戏流程和部分操作,还有很多细节需要完善。如果你要开发一个更完整、更复杂的麻将游戏,建议先了解一下麻将规则和算法,再根据实际需求进行设计和开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值