SSH框架網(wǎng)上商城項(xiàng)目第3戰(zhàn)之使用EasyUI搭建后臺(tái)頁面框架
前面兩篇,我們整合了SSH并且抽取了service和action部分的接口,可以說基本開發(fā)環(huán)境已經(jīng)搭建好了,這一節(jié)我們搭建一下后臺(tái)的頁面。我們討論一下兩種搭建方式:基于frameset和基于easyUI。最后我們會(huì)使用easyUI來開發(fā)。
1. 抽取公共JSP頁面
我們先來看一下當(dāng)前的jsp頁面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <!-- 省略…… --> </c:forEach> </body> </html></span>
先撇開body部分的內(nèi)容不看,因?yàn)檫@都是之前測試用的,抽取JSP頁面是指將一些共有部分抽取出來到一個(gè)新的JSP頁面,然后在當(dāng)前JSP頁面中包含進(jìn)來。因?yàn)楹笃陧?xiàng)目中肯定會(huì)引入js、css等文件,如果在每個(gè)jsp頁面都寫的話,會(huì)很冗余,所以我們得抽取一個(gè)共有的jsp來引入這些文件以及其他東西。我們在WebRoot目錄下新建一個(gè)public文件夾,在里面新建一個(gè)head.jspf(jspf表示JSP片段,供其他JSP頁面包含的)。
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <c:set value="${pageContext.request.contextPath }" var="shop" /> <title>易購商城</title> <!-- <script type="text/javascript" src=""></script> <style type="text/css"></style> --></span>
注釋部分主要是包含js和css,因?yàn)槟壳斑€沒用到,只是搭建一個(gè)框架,等用到了再去掉。<c:set>標(biāo)簽將${pageContext.request.contextPath }用${shop}來代替,方便書寫。這樣以后新的JSP只要包含這個(gè)head.jspf即可。我們看一下修改后的index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ include file="/public/head.jspf" %> </head> <body> <!-- 省略…… --> </body> </html> </span>
是不是有種面向?qū)ο蟮乃枷雫
2. 基于frameset搭建后臺(tái)頁面
2.1 發(fā)現(xiàn)問題
模板抽取好了,現(xiàn)在我們開始搭建后臺(tái)頁面框架了,首先我們使用frameset來做。在WEB-INF目錄下新建一個(gè)文件夾main用來保存后臺(tái)的主要頁面,在main中新建四個(gè)jsp文件:aindex.jsp、top.jsp、left.jsp和right.jsp。我們的frameset寫在aindex.jsp中,其他三個(gè)只是簡單寫一句話用來測試,我們來看看aindex.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ include file="/public/head.jspf" %> </head> <!-- 框架體,里面包含了3+1個(gè)頁面 --> <frameset border="5" rows="150,*"> <frame src="top.jsp" /> <frameset border="5" cols="150,*"> <frame src="left.jsp" /> <frame src="right.jsp" /> </frameset> </frameset> </html></span>
結(jié)構(gòu)很明顯,將頁面分為3塊,上左右。每個(gè)模塊包含相應(yīng)的jsp頁面,然后我們在index.jsp的body中寫入<a href="/WEN-INF/main/aindex.jsp">測試到后臺(tái)</a>,啟動(dòng)tomcat,發(fā)現(xiàn)點(diǎn)擊鏈接是無法訪問到后臺(tái)的。原因在于WEB-INF目錄下的jsp不能直接跳轉(zhuǎn),需要通過Servlet或者Action來跳轉(zhuǎn)。那沒辦法,只能新寫一個(gè)跳轉(zhuǎn)的Action了。
2.2 編寫頁面跳轉(zhuǎn)的Action
我們首先寫一個(gè)Action來完成頁面的跳轉(zhuǎn),該Action只是單純的實(shí)現(xiàn)頁面跳轉(zhuǎn),不處理任何業(yè)務(wù)邏輯。
/** * @Description: TODO(此Action用來完成WEB-INF中JSP與JSP請求轉(zhuǎn)發(fā)功能,此Action不處理任何的邏輯) * @author eson_15 * */ public class SendAction extends ActionSupport { public String execute() { return "send"; } }
我們可以看出,SendAction沒有繼承我們之前抽取的BaseAction,只是單純的繼承了ActionSupport。然后我們在struts.xml文件中配置一下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="shop" extends="struts-default"> <!-- 全局result,對這個(gè)package中的所有action有效 --></span> <global-results> <result name="aindex">/WEB-INF/main/aindex.jsp</result> </global-results> <!-- 省略其他action的配置……</span> --> <!-- 用來完成系統(tǒng) 請求轉(zhuǎn)發(fā)的action,所有的請求都交給execute--> <action name="send_*_*" class="sendAction"> <result name="send">/WEB-INF/{1}/{2}.jsp</result> </action> </package> </struts>
別忘了在beans.xml中配置:<bean id="sendAction" class="cn.it.shop.action.SendAction" />。
這個(gè)action中之所以配兩個(gè)*號(hào)是為了便于訪問WEB-INF/*/*.jsp,這需要在jsp中約定好地址的寫法了。下面我們看一下aindex.jsp中的寫法:
<span style="font-family:Microsoft YaHei;"> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ include file="/public/head.jspf" %> </head> <!-- 框架體,里面包含了3+1個(gè)頁面 --> <frameset border="5" rows="150,*"> <frame src="send_main_top.action" /> <frameset border="5" cols="150,*"> <frame src="send_main_left.action" /> <frame src="send_main_right.action" /> </frameset> </frameset> </html></span>
從修改后的aindex.jsp中可以看出,我們不直接訪問WEB-INF/下的jsp(我們也訪問不了),我們通過Action去跳轉(zhuǎn),這樣我們在index.jsp的body中寫入<a href="send_main_aindex.action">測試到后臺(tái)</a>,然后啟動(dòng)tomcat,就可以點(diǎn)開鏈接正常訪問后臺(tái)主頁面了。
從上面使用frameset搭建后臺(tái)頁面的過程來看,還是挺麻煩的,它是一個(gè)個(gè)頁面包含進(jìn)來的,開發(fā)中也不會(huì)用frameset,而easyUI只有一個(gè)頁面,所有的請求都是AJAX請求,接下來我們看一下如何使用easyUI來搭建后臺(tái)頁面。
3. 基于EasyUI搭建后臺(tái)頁面
jQuery EasyUI是一組基于jQuery的UI插件集合體,而jQuery EasyUI的目標(biāo)就是幫助web開發(fā)者更輕松的打造出功能豐富并且美觀的UI界面。開發(fā)者不需要編寫復(fù)雜的javascript,也不需要對css樣式有深入的了解,開發(fā)者需要了解的只有一些簡單的html標(biāo)簽。
3.1 導(dǎo)入EasyUI相關(guān)組件
我們先在工程中的WebRoot目錄下導(dǎo)入EasyUI所需要的組件,網(wǎng)上都有下載,我用的是jquery-easyui-1.3.5,去掉一些不需要的東西,最后的結(jié)果如下:
3.2 搭建EasyUI的環(huán)境
我們打開剛剛抽取出來的head.jspf文件,在這里導(dǎo)入EasyUI所依賴的css和js,其他頁面引入該jspf文件即可間接引入了EasyUI所依賴的css和js了:
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <c:set value="${pageContext.request.contextPath }" var="shop" /> <title>易購商城</title> <!-- 下面是easyui的環(huán)境 --> <link rel="stylesheet" href="${shop }/jquery-easyui-1.3.5/themes/icon.css" type="text/css"></link> <link rel="stylesheet" href="${shop }/jquery-easyui-1.3.5/themes/default/easyui.css" type="text/css"></link> <script type="text/javascript" src="${shop }/jquery-easyui-1.3.5/jquery.min.js"></script> <script type="text/javascript" src="${shop }/jquery-easyui-1.3.5/jquery.easyui.min.js"></script> <script type="text/javascript" src="${shop }/jquery-easyui-1.3.5/locale/easyui-lang-zh_CN.js"></script>
3.3 搭建后臺(tái)的框架
將WEB-INF/main/目錄下的top.jsp、left.jsp和right.jsp都刪掉,因?yàn)楝F(xiàn)在用不上了,然后修改aindex.jsp頁面,現(xiàn)在可以使用EasyUI來做了:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ include file="/public/head.jspf" %> </head> <body class="easyui-layout"> <div data-options="region:'north',title:'North Title',split:true" style="height:100px;"></div> <div data-options="region:'west',title:'West',split:true" style="width:200px;"> <!-- 此處顯示的是系統(tǒng)菜單 --> <div id="aa" class="easyui-accordion" style="width:300px;height:200px;"> <div title="Title1" data-options="iconCls:'icon-save'" style="overflow:auto;padding:10px;"> <h3 style="color:#0099FF;">Accordion for jQuery</h3> <p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p> </div> <div title="Title2" data-options="iconCls:'icon-reload',selected:true" style="padding:10px;">content2</div> <div title="Title3">content3</div> </div> </div> <div data-options="region:'center',title:'center title'" style="padding:5px;background:#eee;"></div> </body> </html>
這里的這么多<div>都是參照上面那個(gè)EasyUI的說明文檔,我在下面貼出來。先進(jìn)行整個(gè)layout布局,去掉我們不需要的,我們只要north、west和center三部分:
再在west部分的div中加上accordon分類的布局,將代碼添加到head.jspf中:
這樣我們就簡單搭建好了后臺(tái)的頁面框架了,后期只要往里面填入東西就行了。我們在index.jsp中測試一下:<a href="send_main_aindex.action">直接到后臺(tái)EasyUI版</a>,這樣jsp就會(huì)找我們剛剛寫好的SendAction然后跳轉(zhuǎn)到EWB-INF/main/aindex.jsp,就能正確顯示后臺(tái)框架了,如下:
至此,我們使用EasyUI成功搭建好了后臺(tái)頁面的框架。
(注:到最后我會(huì)提供整個(gè)項(xiàng)目的源碼下載!歡迎大家收藏或分享)
整個(gè)項(xiàng)目的源碼下載地址:http://www.dbjr.com.cn/article/86099.htm
原文地址:http://blog.csdn.net/eson_15/article/details/51312490
以上就是本文的全部內(nèi)容,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SSH框架網(wǎng)上商城項(xiàng)目第10戰(zhàn)之搭建商品類基本模塊
- ssh項(xiàng)目環(huán)境搭建步驟(web項(xiàng)目)
- 搭建SSH時(shí)的思考和遇到的幾個(gè)問題的解決方法
- java-SSH2實(shí)現(xiàn)數(shù)據(jù)庫和界面的分頁
- Java框架SSH結(jié)合Easyui控件實(shí)現(xiàn)省市縣三級(jí)聯(lián)動(dòng)示例解析
- SSH框架網(wǎng)上商城項(xiàng)目第25戰(zhàn)之使用java email給用戶發(fā)送郵件
- Java實(shí)現(xiàn)SSH模式加密
- Java的web開發(fā)中SSH框架的協(xié)作處理應(yīng)用筆記
- MyEclipse整合ssh三大框架環(huán)境搭載用戶注冊源碼下載
相關(guān)文章
SpringBoot如何配置MySQL和Oracl雙數(shù)據(jù)源(Mybatis)
這篇文章主要介紹了SpringBoot如何配置MySQL和Oracl雙數(shù)據(jù)源(Mybatis)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03Java定時(shí)器例子_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
本文給大家分享了java定時(shí)器例子,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-05-05解析Apache Dubbo的SPI實(shí)現(xiàn)機(jī)制
SPI全稱為Service Provider Interface,對應(yīng)中文為服務(wù)發(fā)現(xiàn)機(jī)制。SPI類似一種可插拔機(jī)制,首先需要定義一個(gè)接口或一個(gè)約定,然后不同的場景可以對其進(jìn)行實(shí)現(xiàn),調(diào)用方在使用的時(shí)候無需過多關(guān)注具體的實(shí)現(xiàn)細(xì)節(jié)2021-06-06java并發(fā)編程專題(十一)----(JUC原子類)數(shù)組類型詳解
這篇文章主要介紹了JAVA JUC原子類 數(shù)組類型詳解的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07