<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 查詢 ## 步驟 1 : 先運行,看到效果,再學習 接下來就開始一步一步來,由淺入深地開發功能了。 因為項目用到了SSM技術,SSM技術本身較為復雜,涉及到了多個框架、多個類、多個配置文件。 不僅如此,模仿天貓業務也較為復雜,所以在進行項目開發之前,一定要先將tmall-ssm(向老師要相關資料),配置運行起來, 先自己跑起來,確認項目本身沒有問題,建立對學習內容的信心,然后再跟著步驟,一步步做出來。 這樣出了問題心里才有底,通過代碼比較等手段,定位到問題所在,成功消化掉這個知識點。 > 必讀:十分不推薦一來就跟著步驟做下去,本知識點一共有20多個步驟,只要任何一個步驟,跟著做的時候寫錯了,都有可能導致項目無法成功啟動,影響學習情緒和學習效果。 ## 步驟 2 : 模仿和排錯 在確保可運行項目能夠正確無誤地運行之后,再嚴格照著教程的步驟,對代碼模仿一遍。 模仿過程難免代碼有出入,導致無法得到期望的運行結果,此時此刻通過比較正確答案 ( 可運行項目 ) 和自己的代碼,來定位問題所在。 采用這種方式,學習有效果,排錯有效率,可以較為明顯地提升學習速度,跨過學習路上的各個檻。 ## 步驟 3 : 新建Maven 項目 菜單->File->New->Other->Maven->Maven Project ![](https://box.kancloud.cn/b1fb842610fc6b3e6d2a6619eea742e5_597x497.png) ## 步驟 4 : 這個界面點下一步 ![](https://box.kancloud.cn/2f4678d204f6ab673740185e04fc26c9_770x647.png) ## 步驟 5 : 這個界面使用webapp,點下一步 默認選中的是maven-archetype-quickstart, 請修改為: maven-archetype-webapp ![](https://box.kancloud.cn/c825dc4f01495f6dee7eac376d19a986_770x647.png) ## 步驟 6 : 這一步填寫如圖所示的信息 GroupId: com.dodoke.tmall ArtifactId: tmall_ssm ![](https://box.kancloud.cn/7b50ddc935599b07985c10f025ec4180_770x647.png) ## 步驟 7 : 此時得到的maven web 項目的問題 此時能得到的maven web 項目,不過有兩個問題 1. 沒有java源代碼目錄 2. index.jsp報錯 ![](https://box.kancloud.cn/115325b5fb59a22e25066e16dbc054f1_378x354.png) ## 步驟 8 : 創建java 源代碼目錄 在上一步的截圖中可以發現,沒有地方存放java源文件,這個時候就需要按照如下步驟做: 右鍵項目->屬性->Java Build Path->Libraries->Edit->Workspace default JRE(jdk8)->Finish ![](https://box.kancloud.cn/866fa970bdeb759f1e9797bacd776c42_785x670.png) ## 步驟 9 : java源文件目錄創建好了 如圖所示,java源文件目錄創建好了 ![](https://box.kancloud.cn/77599f6341d3e1e9038b31ec9c372e57_371x444.png) ## 步驟 10 : pom.xml 復制如下內容到已經存在的pom里, 粘貼之后,jsp本來的報錯就消失了,不過出來一個新的問題,要求通過Maven更新項目。 右鍵項目->Maven->Update Project,會彈出一個對話框,點擊Ok,這個問題就消失了。 ~~~ <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.dodoke.tmall</groupId> <artifactId>tmall_ssm</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <properties> <spring.version>4.1.3.RELEASE</spring.version> <pagehelper.version>5.1.2-beta</pagehelper.version> <mysql.version>5.1.6</mysql.version> <mybatis.spring.version>1.2.3</mybatis.spring.version> <mybatis.version>3.1.1</mybatis.version> <junit.version>4.12</junit.version> <jstl.version>1.2</jstl.version> <jsqlparser.version>1.0</jsqlparser.version> <jackson.version>1.2.7</jackson.version> <servlet-api.version>3.1.0</servlet-api.version> <druid.version>1.0.18</druid.version> <log4j.version>1.2.16</log4j.version> <commons-logging.version>1.2</commons-logging.version> <commons-fileupload.version>1.2.1</commons-fileupload.version> <commons-io.version>1.3.2</commons-io.version> <commons-lang.version>2.6</commons-lang.version> <aopalliance.version>1.0</aopalliance.version> <mybatis-generator.version>1.3.5</mybatis-generator.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <!-- JSP相關 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet-api.version}</version> <scope>provided</scope> </dependency> <!-- pageHelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${pagehelper.version}</version> </dependency> <!--jsqlparser --> <dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>${jsqlparser.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>${commons-logging.version}</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons-fileupload.version}</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>${commons-io.version}</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>${commons-lang.version}</version> </dependency> <dependency> <groupId>aopalliance</groupId> <artifactId>aopalliance</artifactId> <version>${aopalliance.version}</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>${mybatis-generator.version}</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <plugins> <!-- 資源文件拷貝插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.7</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- java編譯插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> <pluginManagement> <plugins> <!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> </plugin> </plugins> </pluginManagement> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.tld</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build> </project> ~~~ ## 步驟 11 : 創建包 首先點中源目錄:src/main/java,然后菜單->File->New->Package 輸入 com.dodoke.tmall.pojo 創建包。 包創建好之后如圖所示: ![](https://box.kancloud.cn/8c34785a434d3de2c36daae0d6cc17c9_355x471.png) ## 步驟 12 : Category 選中創建包步驟中的包,然后菜單->File->New->Java Class,創建Category類。 這是實體類,聲明了id和name,以及對應的setter,getter。 ~~~ package com.dodoke.tmall.pojo; public class Category { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } ~~~ ## 步驟 13 : CategoryMapper 首先點中源目錄:src/main/java 然后菜單->File->New->Package 輸入 com.dodoke.tmall.mapper 創建包 接著創建接口CategoryMapper,因為本知識點只做查詢,所以只聲明了一個list方法。 ~~~ package com.dodoke.tmall.mapper; import java.util.List; import com.dodoke.tmall.pojo.Category; public interface CategoryMapper { List<Category> list(); } ~~~ ## 步驟 14 : CategoryService 首先點中源目錄:src/main/java 然后菜單->File->New->Package 輸入 com.dodoke.tmall.service 創建包 接著創建接口CategoryService,因為本知識點只做查詢,所以只聲明了一個list方法。 ~~~ package com.dodoke.tmall.service; import java.util.List; import com.dodoke.tmall.pojo.Category; public interface CategoryService { List<Category> list(); } ~~~ ## 步驟 15 : CategoryServiceImpl 首先點中源目錄:src/main/java 然后菜單->File->New->Package 輸入 com.dodoke.tmall.service.impl 創建包 新建CategoryService接口的實現類CategoryServiceImpl 注解@Service聲明當前類是一個Service類 通過自動裝配@Autowired引入CategoryMapper ,在list方法中調用CategoryMapper 的list方法. ~~~ package com.dodoke.tmall.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.dodoke.tmall.mapper.CategoryMapper; import com.dodoke.tmall.pojo.Category; @Service public class CategoryServiceImpl { @Autowired CategoryMapper categoryMapper; public List<Category> list() { return categoryMapper.list(); } } ~~~ ## 步驟 16 : CategoryController 首先點中源目錄:src/main/java 然后菜單->File->New->Package 輸入 com.dodoke.tmall.controller 創建包 新建CategoryController, 注解@Controller聲明當前類是一個控制器。 注解@RequestMapping("")表示訪問的時候無需額外的地址。 注解@Autowired把CategoryServiceImpl自動裝配進了CategoryService 接口。 注解@RequestMapping("admin_category_list") 映射admin_category_list路徑的訪問。 在list方法中,通過categoryService.list()獲取所有的Category對象,然后放在"cs"中,并服務端跳轉到 “admin/listCategory” 視圖。 > “admin/listCategory” 會根據后續的springMVC.xml 配置文件,跳轉到 WEB-INF/jsp/admin/listCategory.jsp 文件。 ~~~ package com.dodoke.tmall.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import com.dodoke.tmall.pojo.Category; import com.dodoke.tmall.service.CategoryService; @RequestMapping("") @Controller public class CategoryController { @Autowired CategoryService categoryService; @RequestMapping("admin_category_list") public String list(Model model) { List<Category> cs = categoryService.list(); model.addAttribute("cs", cs); return "admin/listCategory"; } } ~~~ ## 步驟 17 : CategoryMapper.xml 1. 在src/main/resources目錄下,新建mapper目錄 2. 右鍵mapper目錄->New->File 新建文件CategoryMapper.xml CategoryMapper.xml的namespace必須是com.dodoke.tmall.mapper.CategoryMapper,以和CategoryMapper保持一致。 CategoryMapper.xml聲明了唯一的一條sql語句: `select * from t_category order by id desc` ~~~ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dodoke.tmall.mapper.CategoryMapper"> <select id="list" resultType="Category"> select * from t_category order by id desc </select> </mapper> ~~~ ## 步驟 18 : log4j.properties 在resources目錄下新建log4j.properties。這個配置文件的作用是開啟日志,當訪問頁面的時候,查看mybatis運行的情況,執行了什么SQL語句,以及sql語句的返回情況等信息。 ~~~ # Global logging configuration log4j.rootLogger=debug, stdout # MyBatis logging configuration... log4j.logger.com.dodoke.tmall=TRACE # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n ~~~ ## 步驟 19:jdbc.properties 在resources目錄下新建jdbc.properties,此配置文件給出了訪問數據庫需要的必須信息: 1. 驅動 2. url 3. 賬號 4. 密碼 ~~~ # 數據庫配置文件 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/tmall_ssm?useUnicode=true&characterEncoding=utf8 jdbc.username=root jdbc.password= ~~~ > 這邊是我自己的數據庫配置信息,注意改成自己的數據庫,用戶名,以及密碼。 ## 步驟 20 : applicationContext.xml 在resources目錄下新建applicationContext.xml 此配置文件做了如下工作 1. 啟動對注解的識別 ~~~ <context:annotation-config /> <context:component-scan base-package="com.dodoke.tmall.service" /> ~~~ 2. 指定對jdbc.properties的引用 ~~~ <context:property-placeholder location="classpath:jdbc.properties"/> ~~~ 3. 配置數據源 ~~~ <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> ~~~ 4. 配置Mybatis的SessionFactory,其中聲明了別名,并且使用前面配置的數據源,掃描CategoryMapper.xml配置文件 ~~~ <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean"> ~~~ 5. 掃描Mapper類: CategoryMapper ~~~ <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> ~~~ ~~~ <?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <context:annotation-config /> <context:component-scan base-package="com.dodoke.tmall.service" /> <!-- 導入數據庫配置文件 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 配置數據庫連接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本屬性 url、user、password --> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="1" /> <property name="minIdle" value="1" /> <property name="maxActive" value="20" /> <!-- 配置獲取連接等待超時的時間 --> <property name="maxWait" value="60000" /> <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一個連接在池中最小生存的時間,單位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="validationQuery" value="SELECT 1" /> <property name="testWhileIdle" value="true" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <!-- 打開PSCache,并且指定每個連接上PSCache的大小 --> <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> </bean> <!--Mybatis的SessionFactory配置--> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="typeAliasesPackage" value="com.dodoke.tmall.pojo" /> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="classpath:mapper/*.xml"/> <!--分頁插件,目前先注釋,后面重構的時候才會使用 <property name="plugins"> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <value> </value> </property> </bean> </array> </property> --> </bean> <!--Mybatis的Mapper文件識別--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.dodoke.tmall.mapper"/> </bean> </beans> ~~~ ## 步驟 21 : springMVC.xml 在resources目錄下新建springMVC.xml 1. 開啟注解的識別 ~~~ <context:annotation-config/> <context:component-scan base-package="com.dodoke.tmall.controller"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <mvc:annotation-driven /> ~~~ 2.開通靜態資源的訪問,否則訪問圖片,css,js等文件可能出錯 ~~~ <mvc:default-servlet-handler /> ~~~ 3. 視圖定位 視圖定位到/WEB-INF/JSP/*.jsp這里 4. 對上傳文件的解析 ~~~ <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> ~~~ ~~~ <?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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="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.2.xsd"> <!--啟動注解識別 --> <context:annotation-config /> <!-- 掃描Controller,并將其生命周期納入Spring管理 --> <context:component-scan base-package="com.dodoke.tmall.controller"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- 注解驅動,以使得訪問路徑與方法的匹配可以通過注解配置 --> <mvc:annotation-driven /> <!--開通靜態資源的訪問 --> <mvc:default-servlet-handler /> <!-- 視圖定位到/WEB/INF/jsp 這個目錄下 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 對上傳文件的解析 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> </beans> ~~~ 目錄結構: ![](https://box.kancloud.cn/2da4ea1d507eba7e73259bd86cb1024f_371x747.png) ## 步驟 22 : 修改web.xml 修改web.xml,主要提供如下功能 1. 指定spring的配置文件為classpath下的applicationContext.xml 2. 設置中文過濾器 3. 指定spring mvc配置文件為classpath下的springMVC.xml ~~~ <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <!-- spring的配置文件 --> <!-- 通過ContextLoaderListener在web app啟動的時候,獲取contextConfigLocation配置文件的文件名applicationContext.xml,并進行Spring相關初始化工作 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--中文過濾器 --> <filter> <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- spring mvc核心:分發servlet --> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- spring mvc的配置文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> ~~~ > web.xml沒指定歡迎頁的情況下,它默認先查找index.html文件,如果找到了,就把index.html作為歡迎頁還回給瀏覽器。如果沒找到index.html,tomcat就去找index.jsp。找到index.jsp就把它作為歡迎頁面返回。而如果index.html和index.jsp都沒找到,又沒有用web.xml文件指定歡迎頁面,那此時tomcat就不知道該返回哪個文件了。 > ## 步驟 23 : 靜態資源 接下來是各種靜態資源,諸如jquery, bootstrap, css, 圖片,公用jsp等,內容稍雜,就不挨個列出來了。 這些靜態資源打包在webapp.rar里(向老師要相關資料),解壓之后,并復制到項目中的webapp目錄中,復制結果如圖所示。 1. admin目錄里有個index.jsp 用戶客戶端跳轉到CategoryController中指定的admin_category_list路徑 2. css,img,js目錄是樣式,圖片腳本等文件 3. include/admin目錄下是4個JSP包含關系中講解到的被包含文件 ![](https://box.kancloud.cn/e7739d3c6013f6b3485917b4863fdf90_348x557.png) ## 步驟 24 : listCategory.jsp 通過**靜態資源**步驟,就會在WEB-INF下創建jsp目錄。 然后在jsp目錄中創建admin目錄,接著創建listCategory.jsp文件 listCategory.jsp主要作用是通過27行的forEach標簽遍歷"cs"里的內容,然后挨個顯示出來。 ~~~ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@include file="../include/admin/adminHeader.jsp"%> <%@include file="../include/admin/adminNavigator.jsp"%> <title>分類管理</title> <div class="workingArea"> <h1 class="label label-info" >分類管理</h1> <br> <br> <div class="listDataTableDiv"> <table class="table table-striped table-bordered table-hover table-condensed"> <thead> <tr class="success"> <th>ID</th> <th>圖片</th> <th>分類名稱</th> <th>屬性管理</th> <th>產品管理</th> <th>編輯</th> <th>刪除</th> </tr> </thead> <tbody> <c:forEach items="${cs}" var="c"> <tr> <td>${c.id}</td> <td><img height="40px" src="img/category/${c.id}.jpg"></td> <td>${c.name}</td> <td><a href="admin_property_list?cid=${c.id}"><span class="glyphicon glyphicon-th-list"></span></a></td> <td><a href="admin_product_list?cid=${c.id}"><span class="glyphicon glyphicon-shopping-cart"></span></a></td> <td><a href="admin_category_edit?id=${c.id}"><span class="glyphicon glyphicon-edit"></span></a></td> <td><a deleteLink="true" href="admin_category_delete?id=${c.id}"><span class=" glyphicon glyphicon-trash"></span></a></td> </tr> </c:forEach> </tbody> </table> </div> <div class="pageDiv"> <%//@include file="../include/admin/adminPage.jsp" %> </div> <div class="panel panel-warning addDiv"> <div class="panel-heading">新增分類</div> <div class="panel-body"> <form method="post" id="addForm" action="admin_category_add" enctype="multipart/form-data"> <table class="addTable"> <tr> <td>分類名稱</td> <td><input id="name" name="name" type="text" class="form-control"></td> </tr> <tr> <td>分類圖片</td> <td> <input id="categoryPic" accept="image/*" type="file" name="image" /> </td> </tr> <tr class="submitTR"> <td colspan="2" align="center"> <button type="submit" class="btn btn-success">提 交</button> </td> </tr> </table> </form> </div> </div> </div> <%@include file="../include/admin/adminFooter.jsp"%> <script> $(function(){ $("#addForm").submit(function(){ if(!checkEmpty("name","分類名稱")) return false; if(!checkEmpty("categoryPic","分類圖片")) return false; return true; }); }); </script> ~~~ > 表格參考:菜鳥教程中,Bootstrap教程-Bootstrap表格 ## 步驟 25 : 測試數據 首先點中源目錄:src/main/java 然后菜單->File->New->Package 輸入 com.dodoke.tmall.test 創建包 接著創建測試TestTmall, 其作用是借助JDBC, 運行代碼,創建10條分類測試數據。 注: 既然是SSM教程,為什么不用mybatis創建測試數據,而要用JDBC創建? 因為增加功能要到下個知識點才講。 ~~~ package com.dodoke.tmall.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class TestTmall { public static void main(String args[]) { Connection conn = null; PreparedStatement ps = null; String url = "jdbc:mysql://localhost:3306/tmall_ssm?useUnicode=true&characterEncoding=utf8"; String user = "root"; String password = ""; try { // 1.選擇連接數據庫:加載數據庫驅動 Class.forName("com.mysql.jdbc.Driver"); // 2.連接數據庫 conn = DriverManager.getConnection(url, user, password); for (int i = 1; i <= 10; i++) { // 3.創建數據庫查詢(加入占位符) ps = conn.prepareStatement("INSERT INTO t_category(name) VALUES(?)"); ps.setString(1, "測試分類" + i); // 4.獲取查詢結果 ps.executeUpdate(); } System.out.println("已經成功創建10條分類測試數據"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { // 5.關閉查詢和連接 try { if (null != ps) { ps.close(); } if (null != conn) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ~~~ ![](https://box.kancloud.cn/ced040eadbcf5608e1a6cacd5c1d82dc_155x308.png) ## 步驟 26 : 啟動Tomcat并觀察效果 通過Eclipse中的tomcat啟動并部署項目之后,訪問地址: `http://localhost:8080/tmall_ssm/admin_category_list` 將觀察到如圖的運行效果 注: 剛開始看不到分類數據,分類數據需要自己添加 ![](https://box.kancloud.cn/6f8d32e68d7e466b7e2ce42fe48edec1_1828x443.png) ### 問題 1. 正常運行之后圖片不顯示,請問這樣是正常的嗎? > 對的,要增加,或者修改的時候上傳了圖片才看得到圖片。 ## 步驟 27 : 可運行項目 實在自己搞不出來,就比較下可運行項目中的內容。 ## 步驟 28 : 思路圖 1. 首先瀏覽器上訪問路徑 /admin_category_list 2. tomcat根據web.xml上的配置信息,攔截到了/admin_category_list,并將其交由DispatcherServlet處理。 3. DispatcherServlet 根據springMVC的配置,將這次請求交由CategoryController類進行處理,所以需要進行這個類的實例化 4. 在實例化CategoryController的時候,注入CategoryServiceImpl 5. 在實例化CategoryServiceImpl的時候,又注入CategoryMapper 6. 根據ApplicationContext.xml中的配置信息,將CategoryMapper和CategoryMapper.xml關聯起來了。 7. 這樣就拿到了實例化好了的CategoryController,并調用list方法 8. 在list方法中,訪問CategoryService,并獲取數據,并把數據放在"cs"上,接著服務端跳轉到listCategory.jsp去 9. 最后在listCategory.jsp 中顯示數據 ![](https://box.kancloud.cn/2848b4d0e949da1b4ea5054d891b997d_1188x522.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看