IDEA+SSM+MAVEN構建可執行專案
對於java+idea+ssm新手來講,跑一個demo出來簡直是災難呀。。坑!
1、新建maven專案:
一路next直到建立完成專案,maven自動建立專案會輸出如下資訊:
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8.249 s [INFO] Finished at: 2018-09-25T19:35:04+08:00 [INFO] Final Memory: 14M/198M [INFO] ------------------------------------------------------------------------ [INFO] Maven execution finished
2、此時idea該網頁專案已經建立完成,配置tomcat執行試試:點選右上角edit configurations
但是執行的結果是報錯:404。這裡確實還不確定原因,為什麼模板構建出來無法執行。因此做以下修改:
選擇刪除該Web,新建Web,指定Deployment Descriptors與Web Resource Directory為:
D:\workspace\maventest5\src\main\webapp\WEB-INF\web.xml
D:\workspace\maventest5\src\main\webapp
重新啟動tomcat執行得到index.jsp的Hello World!網頁。在此基礎上進行SSM框架的構建。
3、修改maven配置檔案pom.xml自動引入工程所需的jar包,對於oracle的jar包需要特殊處理:
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6-Dversion=11.2.0.1.0 -Dpackaging=jar-Dfile=D:\app\hanbin\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar
由於我在maven的conf資料夾下修改了setting.xml檔案:
<localRepository>D:\software\maven\apache-maven-3.3.9\repo</localRepository> 導致安裝的包預設到對應目錄下,而專案對應的reposity資料夾為D:/M2/REPOSITY資料夾內,因此需要將oracle的jar拷到對應的m2資料夾內。
pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.hb</groupId> <artifactId>ssmdemo5</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>ssmdemo5 Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <spring.version>5.0.3.RELEASE</spring.version> <mybatis.version>3.4.4</mybatis.version> </properties> <dependencies> <!-- 單元測試 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- 第一部分:Spring 配置--> <!-- Spring core --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</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-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <!-- Spring DAO --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <!-- Spring mvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</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-test</artifactId> <version>${spring.version}</version> </dependency> <!-- 第二部分:Servlet web --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.4</version> </dependency> <!-- 第三部分:資料庫和mybatis --> <!-- 資料庫 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.1.0</version> </dependency> <!-- 資料庫連線池 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- mybatis-spring整合包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <!-- 第四部分:日誌 --> <!-- 實現slf4j介面並整合 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.1</version> </dependency> </dependencies> <build> <finalName>ssmdemo5</finalName> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.0.0</version> </plugin> <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.20.1</version> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.0</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> </plugins> </pluginManagement> </build> </project>
注意自己的專案的名稱不要錯誤。引入結束後,應該有如下現象:
4、在main資料夾下新建java、resources資料夾,並依次設定為Sources Root、Resources Root。
在java資料夾下新建package為com及com下controller、dao、pojo、service,依次代表控制器即網頁跳轉相關、資料庫對映、資料庫對應的java實體類、所需的服務。在resource下新建mapper、spring資料夾對應放置mybatis對映檔案與spring配置相關檔案。並且在resource資料夾下新建jdbc.properties、log4j.properties、mybatis-congig.xml對應jdbc的一些配置包括資料庫登入相關的資訊、日誌的設定以及mybatis的設定如駝峰轉換等。在WEB-INF下新建jsp資料夾存放網頁jsp檔案。
jdbc.properties內容如下:
jdbc.driver=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl jdbc.username=test jdbc.password=123456
注意使用者名稱密碼不要錯誤。
log4j.properties如下:
log4j.rootLogger=ERROR, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
mybatis-congig.xml如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 配置全域性屬性 --> <settings> <!-- 使用jdbc的getGeneratedKeys獲取資料庫自增主鍵值 --> <setting name="useGeneratedKeys" value="true" /> <!-- 使用列別名替換列名 預設:true --> <setting name="useColumnLabel" value="true" /> <!-- 開啟駝峰命名轉換:Table{create_time} -> Entity{createTime} --> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> </configuration>
開啟駝峰轉化,網上說是避免下劃線“_”的錯誤,目前還沒有遇到。
5、本文部分轉載一下部落格,因此採用的例子與該部落格相同,略有改動。
仿照一個論文管理系統的增刪改查操作。
6、在oracle資料庫建立表
create table PAPER ( PAPER_ID NUMBER(20) not null, PAPERNAME VARCHAR2(100) not null, PAPERNUMBER NUMBER(11) not null, DETAIL VARCHAR2(200) not null )
插入幾條資料:
INSERT INTO paper VALUES (2, '深度學習', 3, 'dldldl'); INSERT INTO paper VALUES (3, '大資料', 4, 'bdbdbd'); 7、在pojo package下新建java實體類Paper,與資料庫表內欄位一一對應:
package com.pojo; public class Paper { private long paperId; private String paperName; private int paperNum; private String paperDetail; public long getPaperId() { return paperId; } public void setPaperId(long paperId) { this.paperId = paperId; } public String getPaperName() { return paperName; } public void setPaperName(String paperName) { this.paperName = paperName; } public int getPaperNum() { return paperNum; } public void setPaperNum(int paperNum) { this.paperNum = paperNum; } public String getPaperDetail() { return paperDetail; } public void setPaperDetail(String paperDetail) { this.paperDetail = paperDetail; } }
idea內alt+insert選擇自動插入setter和getter,setter和getter是必須的,理由還沒看。。。
8、在dao下新建PaperDao介面類:
package com.dao; import com.pojo.Paper; import java.util.List; public interface PaperDao { int addPaper(Paper paper); int deletePaperById(long id); int updatePaper(Paper paper); Paper queryById(long id); List<Paper> queryAllPaper(); }
實現對資料庫表的增刪改查基礎操作。
9、此時配置SSM資料庫與DAO的對映,在spring下新建spring-dao.xml並在mapper下新建PapperMapper.xml檔案,完成資料庫的對映。
spring-dao.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: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"> <!-- 配置整合mybatis過程 --> <!-- 1.配置資料庫相關引數properties的屬性:${url} --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 2.資料庫連線池 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 配置連線池屬性 --> <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <!-- c3p0連線池的私有屬性 --> <property name="maxPoolSize" value="30"/> <property name="minPoolSize" value="10"/> <!-- 關閉連線後不自動commit --> <property name="autoCommitOnClose" value="false"/> <!-- 獲取連線超時時間 --> <property name="checkoutTimeout" value="10000"/> <!-- 當獲取連線失敗重試次數 --> <property name="acquireRetryAttempts" value="2"/> </bean> <!-- 3.配置SqlSessionFactory物件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入資料庫連線池 --> <property name="dataSource" ref="dataSource"/> <!-- 配置MyBaties全域性配置檔案:mybatis-config.xml --> <property name="configLocation" value="classpath:mybatis-config.xml"/> <!-- 掃描pojo包 使用別名 --> <property name="typeAliasesPackage" value="com.pojo"/> <!-- 掃描sql配置檔案:mapper需要的xml檔案 --> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean> <!-- 4.配置掃描Dao介面包,動態實現Dao介面,注入到spring容器中 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 注入sqlSessionFactory --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <!-- 給出需要掃描Dao介面包 --> <property name="basePackage" value="com.dao"/> </bean> </beans>
PapperMapper.xml內容為:
<?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.dao.PaperDao"> <resultMap type="Paper" id="paperResultMap" > <id property="paperId" column="paper_id"/> <result property="paperName" column="papername"/> <result property="paperNum" column="papernumber"/> <result property="paperDetail" column="detail"/> </resultMap> <insert id="addPaper" parameterType="Paper"> INSERT INTO paper(paper_id,papername,papernumber,detail) VALUE (#{paperId},#{paperName}, #{paperNum}, #{paperDetail}) </insert> <delete id="deletePaperById" parameterType="long"> DELETE FROM paper WHERE paper_id=#{paperID} </delete> <update id="updatePaper" parameterType="Paper"> UPDATE paper SET PAPERNAME = #{paperName},PAPERNUMBER = #{paperNum},detail = #{paperDetail} WHERE paper_id = #{paperId} </update> <select id="queryById" resultType="Paper" parameterType="long"> SELECT paper_id,papername,papernumber,detail FROM paper WHERE paper_id=#{paperId} </select> <select id="queryAllPaper" resultMap="paperResultMap"> SELECT paper_id,papername,papernumber,detail FROM paper </select> </mapper>
但是注意,mapper中型別轉換的問題。varchar2可以轉換為java中的String。但是number要根據位數來判斷是integer或long,否則會出現其他正常但是始終查詢結果為空的情況。
10、在service下新建PaperService介面類:
package com.service; import com.pojo.Paper; import java.util.List; public interface PaperService { int addPaper(Paper paper); int deletePaperById(long id); int updatePaper(Paper paper); Paper queryById(long id); List<Paper> queryAllPaper(); }
並在service下新建package impl並在impl下新建
PaperServiceImpl服務實現類:
package com.service.impl; import com.dao.PaperDao; import com.pojo.Paper; import com.service.PaperService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class PaperServiceImpl implements PaperService { @Autowired private PaperDao paperDao; @Override public int addPaper(Paper paper) { return paperDao.addPaper(paper); } @Override public int deletePaperById(long id) { return paperDao.deletePaperById(id); } @Override public int updatePaper(Paper paper) { return paperDao.updatePaper(paper); } @Override public Paper queryById(long id) { return paperDao.queryById(id); } @Override public List<Paper> queryAllPaper() { return paperDao.queryAllPaper(); } } 11、在spring下新建spring-service.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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 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/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 掃描service包下所有使用註解的型別 --> <context:component-scan base-package="com.service" /> <!-- 配置事務管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 注入資料庫連線池 --> <property name="dataSource" ref="dataSource" /> </bean> <!-- 配置基於註解的宣告式事務 --> <tx:annotation-driven transaction-manager="transactionManager" /> </beans>
12、這樣,可以通過呼叫服務呼叫資料相關的操作。在controller下新建
PaperController類:
package com.controller; import com.pojo.Paper; import com.service.PaperService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import java.util.List; @Controller @RequestMapping("/paper") public class PapperController { @Autowired private PaperService paperService; @RequestMapping("/allPaper") public String list(Model model) { List<Paper> list = paperService.queryAllPaper(); model.addAttribute("list", list); return "allPaper"; } @RequestMapping("toAddPaper") public String toAddPaper() { return "addPaper"; } @RequestMapping("/addPaper") public String addPaper(Paper paper) { paperService.addPaper(paper); return "redirect:/paper/allPaper"; } @RequestMapping("/del/{paperId}") public String deletePaper(@PathVariable("paperId") Long id) { paperService.deletePaperById(id); return "redirect:/paper/allPaper"; } @RequestMapping("toUpdatePaper") public String toUpdatePaper(Model model, Long id) { model.addAttribute("paper", paperService.queryById(id)); return "updatePaper"; } @RequestMapping("/updatePaper") public String updatePaper(Model model, Paper paper) { paperService.updatePaper(paper); paper = paperService.queryById(paper.getPaperId()); model.addAttribute("paper", paper); return "redirect:/paper/allPaper"; } }
13、在spring下新建spring-mvc.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: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.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-3.0.xsd"> <!-- 配置SpringMVC --> <!-- 1.開啟SpringMVC註解模式 --> <!-- 簡化配置: (1)自動註冊DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter (2)提供一些列:資料繫結,數字和日期的format @NumberFormat, @DateTimeFormat, xml,json預設讀寫支援 --> <mvc:annotation-driven /> <!-- 2.靜態資源預設servlet配置 (1)加入對靜態資源的處理:js,gif,png (2)允許使用"/"做整體對映 --> <mvc:default-servlet-handler/> <!-- 3.配置jsp 顯示ViewResolver --> <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> <!-- 4.掃描web相關的bean --> <context:component-scan base-package="com.controller" /> </beans>
14、修改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 xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置springMVC需要載入的配置檔案 spring-dao.xml,spring-service.xml,spring-mvc.xml Mybatis - > spring -> springmvc --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-*.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <!-- 預設匹配所有的請求 --> <url-pattern>/</url-pattern> </servlet-mapping> <filter> <filter-name>encodingFilter</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>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
15、至此整個工程構建完畢,構成結構如圖所示:
16、在jsp資料夾下新增allPaper.jsp、addPaper.jsp、updatePaper.jsp三個網頁檔案:
allPaper.jsp:
<%-- Created by IntelliJ IDEA. User: lenovo Date: 2018/4/6 Time: 16:57 To change this template use File | Settings | File Templates. --%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String appPath = request.getContextPath(); %> <html> <head> <title>Paper列表</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 引入 Bootstrap --> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row clearfix"> <div class="col-md-12 column"> <div class="page-header"> <h1> 基於SSM框架的管理系統:簡單實現增、刪、改、查。 </h1> </div> </div> </div> <div class="row clearfix"> <div class="col-md-12 column"> <div class="page-header"> <h1> <small>論文列表 —— 顯示所有論文</small> </h1> </div> </div> </div> <div class="row"> <div class="col-md-4 column"> <a class="btn btn-primary" href="${path}/paper/toAddPaper">新增</a> </div> </div> <div class="row clearfix"> <div class="col-md-12 column"> <table class="table table-hover table-striped"> <thead> <tr> <th>論文編號</th> <th>論文名字</th> <th>論文數量</th> <th>論文詳情</th> <th>操作</th> </tr> </thead> <tbody> <c:forEach var="paper" items="${requestScope.get('list')}" varStatus="status"> <tr> <td>${paper.paperId}</td> <td>${paper.paperName}</td> <td>${paper.paperNum}</td> <td>${paper.paperDetail}</td> <td> <a href="${path}/paper/toUpdatePaper?id=${paper.paperId}">更改</a> | <a href="<%=appPath%>/paper/del/${paper.paperId}">刪除</a> </td> </tr> </c:forEach> </tbody> </table> </div> </div> </div>
addPaper.jsp:
<%-- Created by IntelliJ IDEA. User: lenovo Date: 2018/4/7 Time: 16:45 To change this template use File | Settings | File Templates. --%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <html> <head> <title>新增論文</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 引入 Bootstrap --> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row clearfix"> <div class="col-md-12 column"> <div class="page-header"> <h1> 基於SSM框架的管理系統:簡單實現增、刪、改、查。 </h1> </div> </div> </div> <div class="row clearfix"> <div class="col-md-12 column"> <div class="page-header"> <h1> <small>新增論文</small> </h1> </div> </div> </div> <form action="" name="userForm"> 論文名稱:<input type="text" name="paperName"><br><br><br> 論文數量:<input type="text" name="paperNum"><br><br><br> 論文詳情:<input type="text" name="paperDetail"><br><br><br> <input type="button" value="新增" onclick="addPaper()"> </form> <script type="text/javascript"> function addPaper() { var form = document.forms[0]; form.action = "<%=basePath %>paper/addPaper"; form.method = "post"; form.submit(); } </script> </div>
updatePaper.jsp:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <html> <head> <title>修改論文</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 引入 Bootstrap --> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row clearfix"> <div class="col-md-12 column"> <div class="page-header"> <h1> 基於SSM框架的管理系統:簡單實現增、刪、改、查。 </h1> </div> </div> </div> <div class="row clearfix"> <div class="col-md-12 column"> <div class="page-header"> <h1> <small>修改論文</small> </h1> </div> </div> </div> <form action="" name="userForm"> <input type="hidden" name="paperId" value="${paper.paperId}"/> 論文名稱:<input type="text" name="paperName" value="${paper.paperName}"/> 論文數量:<input type="text" name="paperNum" value="${paper.paperNum}"/> 論文詳情:<input type="text" name="paperDetail" value="${paper.paperDetail }"/> <input type="button" value="提交" onclick="updatePaper()"/> </form> <script type="text/javascript"> function updatePaper() { var form = document.forms[0]; form.action = "<%=basePath %>paper/updatePaper"; form.method = "post"; form.submit(); } </script> </div>
感謝原作者,但是在自己的IDEA跑了好幾個都是404,找了很多部落格最終執行成功!希望接下來能順利完成開發任務!