2022-01-21 IDEA创建 Springmvc+JSTL+Tiles 项目

Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架。

JSTL(Java server pages standarded tag library,即JSP标准标签库)是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库。

Apache Tiles是一个JSP页面布局框架。Tiles框架提供了一种模板机制,可以为某一类页面定义一个通用的模板,该模板定义了页面的整体布局。

Springmvc: https://docs.spring.io/spring-framework/docs/current/reference/html/web.html

JSTL: https://tomcat.apache.org/taglibs/standard/

Tiles: https://tiles.apache.org/


1. 开发环境

    系统:Windows 10 Home

    开发工具:IntelliJ IDEA 2020.1.4 (Community Edition)

    数据库:  MariaDB 10.4.21 (本文内容没有用到数据库)

    Maven 3.8.1 配置:

        Maven安装目录: C:\Applications\java\apache-maven-3.8.1

        本地Maven仓库: C:\Applications\java\maven-repository

    Java version "1.8.0_121"

    Java, Maven 和 IDEA 的安装配置过程,见 IDEA创建Maven Quickstart项目


2. 在 IDEA上创建 Maven Webapp 项目

    New Project -> Project Type: Maven -> Project SDK: 1.8  -> Select maven-archtype-webapp: Next

    Name: SpringmvcTiles

    GroupId: com.example

    ArtifactId: SpringmvcTiles

-> Next

       Maven home Directory: C:\Applications\java\apache-maven-3.8.1

       User settings file: C:\Applications\java\apache-maven-3.8.1\conf\settings.xml

       Local repository: C:\Applications\java\maven-repository

  -> Finish

    生成的项目目录结构,参考 IDEA创建Maven Webapp项目


3. 使用 jetty-maven-plugin, 将 jetty 内嵌运行

    IDEA创建Maven Webapp项目 使用 tomcat7-maven-plugin,本文尝试使用 jetty-maven-plugin。

1) 修改 pom.xml:

<project ... >

<build>

    <plugins>

        <plugin>

    <groupId>org.eclipse.jetty</groupId>

    <artifactId>jetty-maven-plugin</artifactId>

    <version>9.3.7.v20160115</version>

<configuration>

    <httpConnector>

        <port>9090</port>

        <host>localhost</host>

    </httpConnector>

    <scanIntervalSeconds>1</scanIntervalSeconds>

</configuration>

        </plugin>

    </plugins>

</build>

</project>

*注: path 项目访问路径 本例:localhost:9090, 如果配置的aa,则访问路径为localhost:9090/aa;uriEncoding 非必需项。

2) 运行

Run -> Edit configurations -> Click "+" -> Select "Maven"

    Command line: clean jetty:run

    Name: SpringmvcTiles [clean,jetty:run]

Before Launch:

    Click "+", select "Launch Web Browser"

    Browser: default

    Url: http://localhost:9090

-> OK

    Run -> Run "SpringmvcTiles [clean,jetty:run]"

3) 打包 War 运行

Run -> Edit configurations -> Click "+" -> Select "Maven"

    Command line: clean jetty:run-war

    Name: SpringmvcTiles [clean,jetty:run-war]

Before Launch:

    Click "+", select "Launch Web Browser"

    Browser: default

    Url: http://localhost:9090

-> OK

    Run -> Run "SpringmvcTiles [clean,jetty:run-war]"


4. 导入 spring-webmvc, servlet, jstl, tiles

    访问 http://www.mvnrepository.com/,查询 ...

    修改 pom.xml

<project ... >

    ...

    <dependencies>

    ...

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->

    <dependency>

      <groupId>javax.servlet</groupId>

      <artifactId>javax.servlet-api</artifactId>

      <version>4.0.1</version>

      <scope>provided</scope>

    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->

    <dependency>

        <groupId>javax.servlet</groupId>

        <artifactId>jstl</artifactId>

        <version>1.2</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/taglibs/standard -->

    <dependency>

        <groupId>taglibs</groupId>

        <artifactId>standard</artifactId>

    <version>1.1.2</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-jsp -->

    <dependency>

        <groupId>org.apache.tiles</groupId>

        <artifactId>tiles-jsp</artifactId>

        <version>3.0.7</version>

    </dependency>


    <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-web</artifactId>

      <version>4.3.9.RELEASE</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-webmvc</artifactId>

      <version>4.3.9.RELEASE</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-jdbc</artifactId>

      <version>4.3.9.RELEASE</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-orm</artifactId>

        <version>4.3.9.RELEASE</version>

    </dependency>

    ...

    </dependencies>

    ...

</project>

在IDE中项目列表 -> 点击鼠标右键 -> Maven -> Reload Project


5. 支持 SpringMVC

1) 修改 src/main/webapp/WEB-INF/web.xml

<!DOCTYPE web-app PUBLIC 

    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 

    "http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 

  ...

  <!-- Spring mvc 适配器 --> 

    <servlet> 

        <servlet-name>springMVC</servlet-name> 

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 

        <init-param> 

            <param-name>contextConfigLocation</param-name> 

            <param-value>classpath:springmvc-beans.xml</param-value> 

        </init-param> 

        <load-on-startup>1</load-on-startup> 

    </servlet> 

    <servlet-mapping> 

        <servlet-name>springMVC</servlet-name> 

        <url-pattern>/</url-pattern> 

    </servlet-mapping>

    ...

</web-app>

2) 添加 src/main/resources/springmvc-beans.xml  (中间目录如果不存在,新建目录,下同)

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xmlns:mvc="http://www.springframework.org/schema/mvc"

      xmlns:context="http://www.springframework.org/schema/context"

      xsi:schemaLocation="

        http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context.xsd

        http://www.springframework.org/schema/mvc

        http://www.springframework.org/schema/mvc/spring-mvc.xsd"

      default-init-method="init"

      default-destroy-method="destroy">

    <!-- Scan package -->

    <context:component-scan base-package="com.example"/>

    <mvc:annotation-driven />

    <!-- MVC viewResolver -->

    <bean id="viewResolver"         class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/jsp/"/>

        <property name="suffix" value=".jsp"/>

    </bean>

</beans>


6. 支持静态资源 (html/js/css/images)

    1) 修改 src/main/resources/springmvc-beans.xml

        <beans ...>

            ...

            <!-- html,css,js,images -->

            <mvc:resources location="/static/" mapping="/static/**" />

            <mvc:default-servlet-handler />

            ...

        </beans>

    新建目录  src/main/webapp/static

2) 添加 src/main/webapp/static/test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>Static HTML</title>

</head>

<body>

    <h3>Static HTML Page - Test</h3>

    <p>&nbsp;</p>

</body>

</html>

    http://localhost:9090/static/test.html

3) 添加 jQuery

        从  https://jquery.com/ 下载 JQuery 包,添加到:

            src/main/webapp/static/js/jquery-1.12.2.min.js

        * jQuery版本根据项目需要,这里用1.12.2, CSS和图片也是放到static目录下


7. 支持 Tiles

    1) 修改 src/main/resources/springmvc-beans.xml

    <beans ...>

        ...

        <!-- tiles tag  -->

        <bean id="tilesConfigurer"             class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">

            <property name="definitions">

                <list>

                    <value>classpath:tiles-definitions.xml</value>

                </list>

            </property>

        </bean>

        ...

    </beans>

3) 添加 src/main/resources/tiles-definitions.xml

<?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>

    <definition name="header" template="/WEB-INF/jsp/layout/header.jsp"></definition>

    <definition name="top_navbar" template="/WEB-INF/jsp/layout/top_navbar.jsp"></definition>

    <definition name="top_menu" template="/WEB-INF/jsp/layout/top_menu.jsp"></definition>

    <definition name="footer" template="/WEB-INF/jsp/layout/footer.jsp"></definition>

</tiles-definitions>

4) 页面布局

    (1) 添加 src/main/webapp/WEB-INF/jsp/layout/header.jsp

        <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"  isELIgnored="false" %>

        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

        <html>

        <head>

            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

            <title>Springmvc Tiles</title>

            <script language="javascript" src="${request.getContextPath()}/static/js/jquery-1.12.2.min.js"></script>

        </head>

            <body id="app-layout">

                <p style="background-color: gray; padding: 5px; color: white;">Header</p>

    (2) 添加 src/main/webapp/WEB-INF/jsp/layout/top_navbar.jsp

        <p style="background-color: blue; padding: 5px; color: white;">Top Navbar</p>

    (3) 添加 src/main/webapp/WEB-INF/jsp/layout/top_menu.jsp

        <p style="background-color: red; padding: 5px; color: white;">Top Menu</p>

    (4) 添加 src/main/webapp/WEB-INF/jsp/layout/footer.jsp

            <p style="background-color: gray; padding: 5px; color: white;">Footer</p>

        </body>

        </html>


8. View & Controller

    1) 添加 src/main/webapp/WEB-INF/jsp/home.jsp

        <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"  isELIgnored="false" %>

        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

        <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>

        <tiles:insertDefinition name="header" />

        <tiles:insertDefinition name="top_navbar" />

        <tiles:insertDefinition name="top_menu" />

            <h3>Home Page</h3>

            <p>URL: ${request.getContextPath()} </p>

            <c:if test="${not empty message}">

                <p>${message}</p>

            </c:if>

            <p>&nbsp;</p>

        <script type="text/javascript">

            $(document).ready(function() {

                console.log("Home Page");

            });

        </script>

        <tiles:insertDefinition name="footer" />

    2) 添加 src/main/java/com/example/controller/IndexController.java

        package com.example.controller;

        import org.springframework.stereotype.Controller;

        import org.springframework.web.bind.annotation.RequestMapping;

        import org.springframework.web.bind.annotation.RequestMethod;

        mport org.springframework.ui.ModelMap;

        @Controller

        @RequestMapping("/")

        public class IndexController {

            @RequestMapping(method = RequestMethod.GET)

            public String defaultIndex(ModelMap modelMap) {

                modelMap.addAttribute("message", "Springmvc Tiles Demo");

                return "home";

            }

        }


9. 运行

    跳转到第 3 步,运行。

    Tomcat 环境下,注解里的 “/” 和 src/main/webapp/index.jsp 会只认 index.jsp,可以删除 index.jsp, 或在 WEB-INF/web.xml 添加:

      <welcome-file-list>

        <welcome-file>springMVC</welcome-file>

      </welcome-file-list>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容