Spring+Springmvc+Mybatis maven整合ssm框架詳解

1、SSM框架介紹

1.1、Spring

Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。 簡單來說,Spring是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的容器框架。

1.2、SpringMVC

Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裏面。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定製。

1.3、MyBatis

MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名爲MyBatis 。MyBatis是一個基於Java的持久層框架。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。

2、項目環境

本項目的開發基於maven3.4.0,jetty6.1.26,mysql,eclipse,JDK7等

3、SSM整合步驟(超詳細)

首先新建一個maven項目,選擇maven-archetype-webapp,一直下一步就好了
本項目功能:模擬添加課程、刪除課程、查看課程詳情、查看所有課程
項目目錄如下:
Java部分
這裏寫圖片描述
view部分
這裏寫圖片描述

3.1 配置pom.xml

<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>com.lin</groupId>
    <artifactId>ssm_project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <properties>
        <!-- spring版本號 -->
        <spring.version>3.2.8.RELEASE</spring.version>
        <!-- log4j日誌文件管理包版本 -->
        <slf4j.version>1.6.6</slf4j.version>
        <log4j.version>1.2.12</log4j.version>
        <!-- junit版本號 -->
        <junit.version>4.10</junit.version>
        <!-- mybatis版本號 -->
        <mybatis.version>3.2.1</mybatis.version>
    </properties>

    <dependencies>
        <!-- 添加Spring依賴 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</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-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</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-web</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--單元測試依賴 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- 日誌文件管理包 -->
        <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- log end -->

        <!--spring單元測試依賴 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </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.2.0</version>
        </dependency>

        <!-- mysql驅動包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.29</version>
        </dependency>

        <!-- javaee-api包 注意和項目使用的JDK版本對應 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- javaee-web-api包 注意和項目使用的JDK版本對應 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- jstl-->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <!-- <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> 
                    <version>9.2.2.v20160723</version> -->
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.26</version>
                <configuration>
                    <webAppConfig>
                        <contextPath>/</contextPath>
                    </webAppConfig>
                </configuration>
            </plugin>
        </plugins>
        <finalName>springmvcTest</finalName>
    </build>

</project>

3.2 配置web.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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <display-name>Archetype Created Web Application</display-name>
   <!-- 起始歡迎界面 -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!-- 讀取spring配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:application.xml</param-value>
    </context-param>
    <!-- 設計路徑變量值 -->
    <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>springmvc.root</param-value>
    </context-param>


    <!-- Spring字符集過濾器 -->
    <filter>
        <filter-name>SpringEncodingFilter</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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>SpringEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 日誌記錄 -->
    <context-param>
        <!-- 日誌配置文件路徑 -->
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>
    <context-param>
        <!-- 日誌頁面的刷新間隔 -->
        <param-name>log4jRefreshInterval</param-name>
        <param-value>6000</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- springMVC核心配置 -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!--spingMVC的配置路徑  -->
            <param-value>classpath:springmvc/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- 攔截設置 -->
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

3.3 配置 application.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:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="  
           http://www.springframework.org/schema/beans  
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
           http://www.springframework.org/schema/aop  
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
           http://www.springframework.org/schema/context  
           http://www.springframework.org/schema/context/spring-context-3.0.xsd">

     <!-- 引入jdbc配置文件 -->  
     <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
               <value>classpath:properties/*.properties</value>
                <!--要是有多個配置文件,只需在這裏繼續添加即可 -->
            </list>
        </property>
    </bean>

    <!-- 配置數據源 -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <!-- 不使用properties來配置 -->
        <!-- <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
            <property name="url" value="jdbc:mysql://localhost:3306/test" /> 
            <property name="username" value="root" /> 
            <property name="password" value="123456" /> -->
       <!-- 使用properties來配置 -->
        <property name="driverClassName">
            <value>${jdbc_driverClassName}</value>
        </property>
        <property name="url">
            <value>${jdbc_url}</value>
        </property>
        <property name="username">
            <value>${jdbc_username}</value>
        </property>
        <property name="password">
            <value>${jdbc_password}</value>
        </property>
    </bean>

    <!-- 自動掃描了所有的XxxxMapper.xml對應的mapper接口文件,這樣就不用一個一個手動配置Mpper的映射了,只要Mapper接口類和Mapper映射文件對應起來就可以了。 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage"
            value="com.demo.dao" />
    </bean>

    <!-- 配置Mybatis的文件 ,mapperLocations配置**Mapper.xml文件位置,configLocation配置mybatis-config文件位置-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath*:com/demo/mapper/**/*.xml"/>  
    </bean>

    <!-- 自動掃描註解的bean -->
    <context:component-scan base-package="com.demo.service" />

</beans>

3.4 配置spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:p="http://www.springframework.org/schema/p"
  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.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

    <!-- 掃描controller(controller層注入) -->
   <context:component-scan base-package="com.demo.controller"/>

   <!--DispatcherServlet啓用基於annotation的HandlerMapping  -->
    <mvc:annotation-driven/>

   <!-- 靜態資源處理,css,js,imgs -->
   <mvc:resources location="/resources/" mapping="/resources/**" />

   <!-- 對模型視圖添加前後綴 -->
     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
      p:prefix="/WEB-INF/view/" p:suffix=".jsp"/>
</beans>

3.5 配置jdbc.properties

jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/test
jdbc_username=root
jdbc_password=123456

3.6 配置log4j.properties

log4j.rootLogger=DEBUG,Console,Stdout

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG 

log4j.appender.Stdout = org.apache.log4j.DailyRollingFileAppender  
log4j.appender.Stdout.File = E://logs/log.log  
log4j.appender.Stdout.Append = true  
log4j.appender.Stdout.Threshold = DEBUG   
log4j.appender.Stdout.layout = org.apache.log4j.PatternLayout  
log4j.appender.Stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n  

4.業務代碼編寫

model層:Course.java

package com.demo.model;
public class Course {
    private Integer id; //課程id

    private String cname; //課程名稱

    private String teacher; //代課老師

    private String description; //課程說明

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCname() {
        return cname;
    }

    public void setCname(String cname) {
        this.cname = cname == null ? null : cname.trim();
    }

    public String getTeacher() {
        return teacher;
    }

    public void setTeacher(String teacher) {
        this.teacher = teacher == null ? null : teacher.trim();
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description == null ? null : description.trim();
    }
}

Course實體對應的xml:CourseMapper.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.demo.dao.CourseDao" >
  <resultMap id="BaseResultMap" type="com.demo.model.Course" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="cname" property="cname" jdbcType="VARCHAR" />
    <result column="teacher" property="teacher" jdbcType="VARCHAR" />
    <result column="description" property="description" jdbcType="VARCHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    id, cname, teacher, description
  </sql>

  <!--查看課程  -->
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from t_course
    where id = #{id,jdbcType=INTEGER}
  </select>

  <!--查看課程 列表 -->
  <select id="getAllCourse" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from t_course
  </select>

  <!--刪除課程 -->
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from t_course
    where id = #{id,jdbcType=INTEGER}
  </delete>

  <!-- 插入課程 -->
  <insert id="insert" parameterType="com.demo.model.Course" >
    insert into t_course (id, cname, teacher, 
      description)
    values (#{id,jdbcType=INTEGER}, #{cname,jdbcType=VARCHAR}, #{teacher,jdbcType=VARCHAR}, 
      #{description,jdbcType=VARCHAR})
  </insert>
  <insert id="insertSelective" parameterType="com.demo.model.Course" >
    insert into t_course
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        id,
      </if>
      <if test="cname != null" >
        cname,
      </if>
      <if test="teacher != null" >
        teacher,
      </if>
      <if test="description != null" >
        description,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        #{id,jdbcType=INTEGER},
      </if>
      <if test="cname != null" >
        #{cname,jdbcType=VARCHAR},
      </if>
      <if test="teacher != null" >
        #{teacher,jdbcType=VARCHAR},
      </if>
      <if test="description != null" >
        #{description,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.demo.model.Course" >
    update t_course
    <set >
      <if test="cname != null" >
        cname = #{cname,jdbcType=VARCHAR},
      </if>
      <if test="teacher != null" >
        teacher = #{teacher,jdbcType=VARCHAR},
      </if>
      <if test="description != null" >
        description = #{description,jdbcType=VARCHAR},
      </if>
    </set>
    where id = #{id,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.demo.model.Course" >
    update t_course
    set cname = #{cname,jdbcType=VARCHAR},
      teacher = #{teacher,jdbcType=VARCHAR},
      description = #{description,jdbcType=VARCHAR}
    where id = #{id,jdbcType=INTEGER}
  </update>

</mapper>

Dao層:編寫CRUD操作CourseDao.java

package com.demo.dao;
import java.util.List;
import com.demo.model.Course;

public interface CourseDao {
      int deleteByPrimaryKey(Integer id);

        int insert(Course record);

        int insertSelective(Course record);

        Course selectByPrimaryKey(Integer id);

        int updateByPrimaryKeySelective(Course record);

        int updateByPrimaryKey(Course record);

        List<Course> getAllCourse(); 

}

Service業務接口:CourseService.java

package com.demo.service;
import java.util.List;
import com.lin.model.Course;

public interface CourseService {
    /**
     * 添加課程
     * @param course 要添加的課程信息
     * @return
     */
    int insert(Course course);

    /**
     * 刪除課程
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Integer id); 

    /**
     * 根據課程號查看課程詳情
     * @param id 課程號 
     * @return
     */
    Course selectByPrimaryKey(Integer id);
    /**
     * 查看所有課程
     * @return 返回課程列表
     */
    List<Course> getAllCourse();



}

service實現: CourseServiceImpl.java

package com.demo.service;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.demo.dao.CourseDao;
import com.demo.model.Course;
@Service
public class CourseServiceImpl implements CourseService {

    @Resource
    private CourseDao courseDao;

    public int insert(Course course) {
        return courseDao.insert(course);
    }

    public int deleteByPrimaryKey(Integer id) {
        return courseDao.deleteByPrimaryKey(id);
    }

    public List<Course> getAllCourse() {
        return courseDao.getAllCourse();
    }

    public Course selectByPrimaryKey(Integer id) {
        return courseDao.selectByPrimaryKey(id);
    }

}

controller控制層:CourseController.java

package com.demo.controller;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.demo.model.Course;
import com.demo.service.CourseService;

@Controller
@RequestMapping("/course")
public class CourseController {

    @Resource
    private CourseService courseService;

    /**
     * 查看所有課程
     * @param request
     * @param model
     * @return
     */
    @RequestMapping("/list") 
    public ModelAndView getAllCourse(HttpServletRequest request,Model model) {
        ModelAndView mav = new ModelAndView("course-list"); 
         List<Course> courses = courseService.getAllCourse(); 
         System.out.println(courses);
         for(Course cou:courses){
             System.out.println(cou.getCname());
         }
         mav.addObject("courses", courses); 
        return mav;  
    }

    /**
     * 查看課程詳情
     * @param request
     * @param model
     * @param id 課程id
     * @return
     */
    @RequestMapping("/detail") 
    public ModelAndView getCourseDetail(HttpServletRequest request,Model model,Integer id) {
        ModelAndView mav = new ModelAndView("course-detail"); 
         Course course = courseService.selectByPrimaryKey(id); 
         System.out.println(course);
         mav.addObject("course", course); 
        return mav;  
    }

    /**
     * 添加課程
     * @param request
     * @param model
     * @return
     */
    @RequestMapping("/add") 
    public ModelAndView addCourse(HttpServletRequest request,Model model) {
        ModelAndView mav = new ModelAndView("course-edit"); 
        return mav;  
    }

    /**
     * 保存課程
     * @param course 課程信息
     * @return
     */
    @RequestMapping("/save") 
    public ModelAndView saveCourse(Course course) {
        ModelAndView mav = new ModelAndView("course-list"); 
        courseService.insert(course);
        List<Course> courses = courseService.getAllCourse(); 
        mav.addObject("courses", courses); 
        return mav;  
    }

    /**
     * 刪除課程
     * @param id 課程id
     * @return
     */
    @RequestMapping("/delete") 
    public ModelAndView deleteCourse(Integer id) {
        courseService.deleteByPrimaryKey(id);
        ModelAndView mav = new ModelAndView("course-list"); 
        List<Course> courses = courseService.getAllCourse(); 
        mav.addObject("courses", courses); 
        return mav;  
    }

}

5.view層

5.1 course-list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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>所有課程列表</title>
<link href="/resources/css/common.css" rel="stylesheet">
</head>
<div><input class="add-btn" type="button" value="新增"
    onclick="addCourse()"></div>
<body>
    <div class="grid">
        <table class="grid-table">
            <thead>
               <tr>
                <th>課程ID</th>
                <th>課程名稱</th>
                <th>代課老師</th>
                <th>課程說明</th>
                <th>刪除</th>
                <th>查看詳情</th>
               </tr>
            </thead>

            <tbody>
                <c:forEach var="course" items="${courses}">
                    <%--用EL表達式調用list對象的屬性循環輸出對象的各個屬性值--%>
                    <tr>
                        <td>${course.id}</td>
                        <td>${course.cname}</td>
                        <td>${course.teacher}</td>
                        <td>${course.description}</td>
                        <td><input type="button" value="刪除課程"
                            onclick="deleteCourse('${course.id}')"></td>
                        <td><input type="button" value="查看詳情"
                            onclick="getCourseDetail('${course.id}')"></td>
                    </tr>

                </c:forEach>
            </tbody>
        </table>
    </div>

    <script src="/resources/js/course-list.js" type="text/javascript"></script>
</body>
</html>

course-list.js

function  deleteCourse(id){   
    window.location.href='/course/delete?id='+id;
 } 

function  getCourseDetail(id){   
    window.location.href='/course/detail?id='+id;
} 

function  addCourse(){   
    window.location.href='/course/add';
}

5.2 course-detail.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<h3>課程詳情:</h3>
課程id: ${course.id}<br>
 課程名稱:${course.cname}<br>
代課老師: ${course.teacher}<br>
 課程說明:${course.description}<br>
</body>
</html>

5.3 course-edit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<!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>新增課程</title>
<link href="/resources/css/common.css" rel="stylesheet">
</head>
<body>
<form action="<%=request.getContextPath()%>/course/save" method="post">
  <!-- 課程編號:<input type="text" id="id" name="id"/><br/> -->
  課程名稱:<input class="input-text" type="text" id="cname" name="cname"/><br/><br/>
  代課老師:<input class="input-text" type="text" id="teacher" name="teacher"/><br/><br/>
  課程說明:<textarea id="description" class="input-text" name="description" rows="5" cols="25"></textarea><br/>
<input class="add-submit" type="submit" value="提交" />
</form>

</body>
</html>

6.項目部署:

右鍵項目maven build–jetty:run就可以了,在瀏覽器輸入:**
localhost:8080/course/list
這裏寫圖片描述
趕緊動手做起來把

發佈了92 篇原創文章 · 獲贊 29 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章