2022-01-21 IDEA創(chuàng)建 Springmvc+JSTL+Tiles 項(xiàng)目

Spring MVC 是 Spring 提供的一個(gè)基于 MVC 設(shè)計(jì)模式的輕量級(jí) Web 開發(fā)框架帐要。

JSTL(Java server pages standarded tag library,即JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù))是由JCP(Java community Proces)所制定的標(biāo)準(zhǔn)規(guī)范乒省,它主要提供給Java Web開發(fā)人員一個(gè)標(biāo)準(zhǔn)通用的標(biāo)簽庫(kù)蘑拯。

Apache Tiles是一個(gè)JSP頁(yè)面布局框架钝满。Tiles框架提供了一種模板機(jī)制,可以為某一類頁(yè)面定義一個(gè)通用的模板申窘,該模板定義了頁(yè)面的整體布局弯蚜。

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.?開發(fā)環(huán)境

? ? 系統(tǒng):Windows 10 Home

? ? 開發(fā)工具:IntelliJ IDEA 2020.1.4 (Community Edition)

? ? 數(shù)據(jù)庫(kù):? MariaDB 10.4.21 (本文內(nèi)容沒(méi)有用到數(shù)據(jù)庫(kù))

? ? Maven 3.8.1 配置:

????????Maven安裝目錄: C:\Applications\java\apache-maven-3.8.1

????????本地Maven倉(cāng)庫(kù): C:\Applications\java\maven-repository

? ? Java version "1.8.0_121"

? ? Java, Maven 和 IDEA 的安裝配置過(guò)程,見(jiàn)?IDEA創(chuàng)建Maven Quickstart項(xiàng)目


2. 在 IDEA上創(chuàng)建 Maven Webapp 項(xiàng)目

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

????生成的項(xiàng)目目錄結(jié)構(gòu)偶洋,參考?IDEA創(chuàng)建Maven Webapp項(xiàng)目


3. 使用 jetty-maven-plugin, 將 jetty 內(nèi)嵌運(yùn)行

? ??IDEA創(chuàng)建Maven Webapp項(xiàng)目?使用?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 項(xiàng)目訪問(wèn)路徑 本例:localhost:9090, 如果配置的aa,則訪問(wèn)路徑為localhost:9090/aa牵寺;uriEncoding 非必需項(xiàng)悍引。

2) 運(yùn)行

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 運(yùn)行

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. 導(dǎo)入 spring-webmvc, servlet, jstl, tiles

????訪問(wèn) 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中項(xiàng)目列表 -> 點(diǎn)擊鼠標(biāo)右鍵 -> 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. 支持靜態(tài)資源?(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版本根據(jù)項(xiàng)目需要黎休,這里用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) 頁(yè)面布局

????(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. 運(yùn)行

? ? 跳轉(zhuǎn)到第 3 步浓领,運(yùn)行。

? ? Tomcat 環(huán)境下势腮,注解里的 “/” 和 src/main/webapp/index.jsp 會(huì)只認(rèn) index.jsp联贩,可以刪除 index.jsp, 或在 WEB-INF/web.xml 添加:

? ????<welcome-file-list>

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

? ????</welcome-file-list>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捎拯,隨后出現(xiàn)的幾起案子泪幌,更是在濱河造成了極大的恐慌,老刑警劉巖署照,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祸泪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡建芙,警方通過(guò)查閱死者的電腦和手機(jī)没隘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)禁荸,“玉大人右蒲,你說(shuō)我怎么就攤上這事÷畔蓿” “怎么了品嚣?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)钧大。 經(jīng)常有香客問(wèn)我,道長(zhǎng)罩旋,這世上最難降的妖魔是什么啊央? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮涨醋,結(jié)果婚禮上瓜饥,老公的妹妹穿的比我還像新娘。我一直安慰自己浴骂,他們只是感情好乓土,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般趣苏。 火紅的嫁衣襯著肌膚如雪狡相。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天食磕,我揣著相機(jī)與錄音尽棕,去河邊找鬼。 笑死彬伦,一個(gè)胖子當(dāng)著我的面吹牛滔悉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播单绑,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼回官,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了搂橙?” 一聲冷哼從身側(cè)響起孙乖,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎份氧,沒(méi)想到半個(gè)月后唯袄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜗帜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年恋拷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厅缺。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蔬顾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出湘捎,到底是詐尸還是另有隱情诀豁,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布窥妇,位于F島的核電站舷胜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏活翩。R本人自食惡果不足惜烹骨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望材泄。 院中可真熱鬧沮焕,春花似錦、人聲如沸拉宗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至魁巩,卻和暖如春急灭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背歪赢。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工化戳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人埋凯。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓点楼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親白对。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掠廓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容