maven web基于spring+mybatis+springmvc框架搭建选课网站系统

搭建ssm框架,并用它模仿做了个选课系统,适合练手使用
环境的搭建参考了http://blog.csdn.net/gebitan505/article/details/44455235/
1.搭建maven web 平台

然后一直下一步,一直到
然后直接搭建,输入项目名,一直到搭建完成。
2.设置配置文件(这个是重点)
 I》第一步:先配置pom.xml(这就是为啥用maven平台搭建web,不用找jar包,它通过配置自己的环境 变量自动下载需要的jar包。方便项目的移植(不好处就是老是要重新部署,不然找不到新增的方法))

II》 第二步: 配置监听器注入入口applicationContext.xml(我在ssm框架中将他配置为spring-mybatis。作用是一样的)
。然后配置拦截器入口spring-mvc.xml(这个取决于你用的控制层的框架,用的springmvc一般配置这个)
贴上配置文件(spring-mybatis)
<?xml version="1.0" encoding="UTF-8"?>
    xsi:schemaLocation=" http://www.springframework.org/schema/beans
    <!-- 自动扫描 -->  
     <context:component-scan base-package="com.cl.ssm" />  <!!!>
    <!-- 引入配置文件 -->  
    <bean id="propertyConfigurer"  
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="location" value="classpath:jdbc.properties" />  
    </bean>  

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
        destroy-method="close">  
        <property name="driverClassName" value="${driver}" />  
        <property name="url" value="${url}" />  
        <property name="username" value="${username}" />  
        <property name="password" value="${password}" />  
        <!-- 初始化连接大小 -->  
        <property name="initialSize" value="${initialSize}"></property>  
        <!-- 连接池最大数量 -->  
        <property name="maxActive" value="${maxActive}"></property>  
        <!-- 连接池最大空闲 -->  
        <property name="maxIdle" value="${maxIdle}"></property>  
        <!-- 连接池最小空闲 -->  
        <property name="minIdle" value="${minIdle}"></property>  
        <!-- 获取连接最大等待时间 -->  
        <property name="maxWait" value="${maxWait}"></property>  
    </bean>  

    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->  
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  
        <!-- 自动扫描mapping.xml文件 -->  
        <property name="mapperLocations" value="classpath:com/cl/ssm/mapping/*.xml"></property>  
    </bean>  

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
        <property name="basePackage" value="com.cl.ssm.dao" />  
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>  
    </bean>  

    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->  
    <bean id="transactionManager"  
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource" />  
    </bean>  


</beans> 

spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>  
    xmlns:context=" http://www.springframework.org/schema/context"  
    xsi:schemaLocation=" http://www.springframework.org/schema/beans    
                         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
                         http://www.springframework.org/schema/context    
                         http://www.springframework.org/schema/context/spring-context-3.1.xsd    
                         http://www.springframework.org/schema/mvc    
                         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">  
    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->  
    <context:component-scan base-package="com.cl.ssm.controller" />  
    <!--避免IE执行AJAX时,返回JSON出现下载文件 -->  
    <bean id="mappingJacksonHttpMessageConverter"  
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
        <property name="supportedMediaTypes">  
            <list>  
                <value>text/html;charset=UTF-8</value>  
            </list>  
        </property>  
    </bean>  
    <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->  
       <!--  <bean  
            class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
            <property name="messageConverters">  
                <list>  
                    <ref bean="mappingJacksonHttpMessageConverter" /> JSON转换器  
                </list>  
            </property>  
        </bean>   -->
        <!-- 定义跳转的文件的前后缀 ,视图模式配置-->  
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
            <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->  
            <property name="prefix" value="/WEB-INF/jsp/" />  
            <property name="suffix" value=".jsp" />  
        </bean>  

        <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->  
        <bean id="multipartResolver"    
            class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
            <!-- 默认编码 -->  
            <property name="defaultEncoding" value="utf-8" />    
            <!-- 文件大小最大值 -->  
            <property name="maxUploadSize" value="10485760000" />    
            <!-- 内存中的最大值 -->  
            <property name="maxInMemorySize" value="40960" />    
        </bean>   

    </beans>  
jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/checkacourse
username=root
password=123456
#\u5B9A\u4E49\u521D\u59CB\u8FDE\u63A5\u6570 
initialSize=0
#\u5B9A\u4E49\u6700\u5927\u8FDE\u63A5\u6570 
maxActive=20
#\u5B9A\u4E49\u6700\u5927\u7A7A\u95F2
maxIdle=20
#\u5B9A\u4E49\u6700\u5C0F\u7A7A\u95F2
minIdle=1
#\u5B9A\u4E49\u6700\u957F\u7B49\u5F85\u65F6\u95F4
maxWait=60000
log4j.properties(本文没用到)
#\u5B9A\u4E49LOG\u8F93\u51FA\u7EA7\u522B  
log4j.rootLogger=INFO,Console,File  
#\u5B9A\u4E49\u65E5\u5FD7\u8F93\u51FA\u76EE\u7684\u5730\u4E3A\u63A7\u5236\u53F0  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.Target=System.out  
#\u53EF\u4EE5\u7075\u6D3B\u5730\u6307\u5B9A\u65E5\u5FD7\u8F93\u51FA\u683C\u5F0F\uFF0C\u4E0B\u9762\u4E00\u884C\u662F\u6307\u5B9A\u5177\u4F53\u7684\u683C\u5F0F  
log4j.appender.Console.layout = org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n  

#\u6587\u4EF6\u5927\u5C0F\u5230\u8FBE\u6307\u5B9A\u5C3A\u5BF8\u7684\u65F6\u5019\u4EA7\u751F\u4E00\u4E2A\u65B0\u7684\u6587\u4EF6  
log4j.appender.File = org.apache.log4j.RollingFileAppender  
#\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55  
log4j.appender.File.File = logs/ssm.log  
#\u5B9A\u4E49\u6587\u4EF6\u6700\u5927\u5927\u5C0F  
log4j.appender.File.MaxFileSize = 10MB  
# \u8F93\u51FA\u6240\u4EE5\u65E5\u5FD7\uFF0C\u5982\u679C\u6362\u6210DEBUG\u8868\u793A\u8F93\u51FADEBUG\u4EE5\u4E0A\u7EA7\u522B\u65E5\u5FD7  
log4j.appender.File.Threshold = ALL  
log4j.appender.File.layout = org.apache.log4j.PatternLayout  
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
目录结构
接下来就是说最重要的pom.xml
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.cl</groupId>
  <artifactId>ssm</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>ssm Maven Webapp</name>
  <url> http://maven.apache.org</url>
     <properties>  
            <!-- spring版本号 -->  
            <spring.version>4.0.2.RELEASE</spring.version>  
            <!-- mybatis版本号 -->  
            <mybatis.version>3.2.6</mybatis.version>  
            <!-- log4j日志文件管理包版本 -->  
            <slf4j.version>1.7.7</slf4j.version>  
            <log4j.version>1.2.17</log4j.version>  
        </properties>  

        <dependencies>  
            <dependency>  
                <groupId>junit</groupId>  
                <artifactId>junit</artifactId>  
                <version>4.11</version>  
                <!-- 表示开发的时候引入,发布的时候不会加载此包 -->  
                <scope>test</scope>  
            </dependency>  
            <!-- spring核心包 -->  
            <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-core</artifactId>  
                <version>${spring.version}</version>  
            </dependency>  

            <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-web</artifactId>  
                <version>${spring.version}</version>  
            </dependency>  
            <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-oxm</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-webmvc</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-context-support</artifactId>  
                <version>${spring.version}</version>  
            </dependency>  

            <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-test</artifactId>  
                <version>${spring.version}</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.2.2</version>  
            </dependency>  
            <!-- 导入java ee jar 包 -->  
            <dependency>  
                <groupId>javax</groupId>  
                <artifactId>javaee-api</artifactId>  
                <version>7.0</version>  
            </dependency>  
            <!-- 导入Mysql数据库链接jar包 -->  
            <dependency>  
                <groupId>mysql</groupId>  
                <artifactId>mysql-connector-java</artifactId>  
                <version>5.1.30</version>  
            </dependency>  
            <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->  
            <dependency>  
                <groupId>commons-dbcp</groupId>  
                <artifactId>commons-dbcp</artifactId>  
                <version>1.2.2</version>  
            </dependency>  
            <!-- JSTL标签类 -->  
            <dependency>  
                <groupId>jstl</groupId>  
                <artifactId>jstl</artifactId>  
                <version>1.2</version>  
            </dependency>  
            <!-- 日志文件管理包 -->  
            <!-- log start -->  
            <dependency>  
                <groupId>log4j</groupId>  
                <artifactId>log4j</artifactId>  
                <version>${log4j.version}</version>  
            </dependency>  


            <!-- 格式化对象,方便输出日志 -->  
            <dependency>  
                <groupId>com.alibaba</groupId>  
                <artifactId>fastjson</artifactId>  
                <version>1.1.41</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 -->  
            <!-- 映入JSON -->  
            <dependency>  
                <groupId>org.codehaus.jackson</groupId>  
                <artifactId>jackson-mapper-asl</artifactId>  
                <version>1.9.13</version>  
            </dependency>  
            <!-- 上传组件包 -->  
            <dependency>  
                <groupId>commons-fileupload</groupId>  
                <artifactId>commons-fileupload</artifactId>  
                <version>1.2.1</version>  
            </dependency>  
            <dependency>  
                <groupId>commons-io</groupId>  
                <artifactId>commons-io</artifactId>  
                <version>2.4</version>  
            </dependency>  
            <dependency>  
                <groupId>commons-codec</groupId>  
                <artifactId>commons-codec</artifactId>  
                <version>1.9</version>  
            </dependency>  


        </dependencies>  
  <build>
    <finalName>ssm</finalName><!-这是项目名->
  </build>
</project>

3.根据表写入数据,pojo,dao,mapping层数据(可自动导入,用逆向工程)参考在文章下面的 使用mybatis配置映射文件比较的麻烦,但是有自动生成jar工具,方便加速开发速度》
注意的是:

4.修改到层成你自己想要的方法及操作
这里就是具体的实现代码功能
Controller代码

package com.cl.ssm.controller;


import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cl.ssm.pojo.Course;
import com.cl.ssm.pojo.Student;
import com.cl.ssm.service.CourseService;
import com.cl.ssm.util.Takepage;


@Controller  
@RequestMapping("course") 
public class CourseController {
@Resource 
    private CourseService courseService;
/**
* 选课
* @param request
* @param va
* @param course
* @return
* @throws Exception
*/
@RequestMapping(params="save")
    public String save(HttpServletRequest request,String va,Course course) throws Exception{
int id = Integer.parseInt(va);
course =  courseService.oneCourse(id);
String coursetype = null;
if(course.getCoursetype()==null||course.getCoursetype()==""){
coursetype="7";
}else{
coursetype = course.getCoursetype();
}
if( course.getCoursesy()<=0){
request.setAttribute("message", "该课程已经选满了,不可以再选!!");
return allcourse(request,coursetype);
}
Map<String,Object> map = new HashMap<String, Object>();
Student student = (Student) request.getSession().getAttribute("student");
int id1 = student.getId();
map.put("id", id1);
List<Course> findlist = courseService.findCourse(map);
for (Course course2 : findlist) {
if(course2.getCoursename().equals(course.getCoursename())&&course2.getCoursetime().equals(course.getCoursetime())){
request.setAttribute("message", "该课程你已经选过,不能重复选!!");
 
return allcourse(request,coursetype);
}
}

course.setCoursesy(course.getCoursesy()-1);
course.setCoursepeople(course.getCoursepeople()+1);
courseService.updateCourse(course);
course.setType(course.getCoursetype());
course.setCoursetype(null);
Student s =(Student) request.getSession().getAttribute("student");
course.getStudents().add(s);
//courseService.save(course);//插入课程到数据库(要先将外键表插入)
    request.setAttribute("message", "添加信息成功");
    return allcourse(request,coursetype);
    }
/**
* 查看全部课程
* @param request
* @param coursetype
* @return
* @throws UnsupportedEncodingException 
*/
@RequestMapping(params="all")
public String allcourse(HttpServletRequest request,String coursetype) {
String pageNo1 = request.getParameter("pageNo");
if(pageNo1==null||pageNo1==""){
pageNo1="1";
}
Map<String, Object> map = new HashMap<String ,Object>();
int pageNo = Integer.parseInt(pageNo1);
Takepage<Course> page = new Takepage<Course>();
page.setPageNo(pageNo);
page.setPageSize(2);
map.put("coursetype", coursetype);
map.put("start", ((page.getPageNo()-1)*page.getPageSize()));
map.put("size", page.getPageSize());
map.put("pagel", page);
List<Course> list = null;
int total=0;
if(coursetype==null||coursetype==""){
return "html";
}else{
if("7".equals(coursetype)){//查找已经选了的课程
Student student = (Student) request.getSession().getAttribute("student");
int id = student.getId();
map.put("id", id);
list  = courseService.findCourse(map);
total=courseService.findCourseTotal(map);
}else{//查找其他全部课程
list  = courseService.selectAllPage(map);
total=courseService.getTotal(map);
}
Takepage<Course> pagelist = (Takepage<Course>) map.get("pagel");
pagelist.setPsize(list.size());
pagelist.setList(list);
pagelist.setTotalRecords(total);
    request.setAttribute("page", pagelist);
    request.setAttribute("pagetype", coursetype);
       int type=Integer.parseInt(coursetype);
if(type==1){
coursetype = "体育任选[体育]";
}if(type==2){
coursetype = "必修";
}if(type==3){
coursetype = "专选";
}if(type==4){
coursetype = "必修分组";
}if(type==5){
coursetype = "专选分组";
}if(type==6){
coursetype = "任选[公选]";
}if(type==7){
coursetype = "已选课程";
}
request.setAttribute("coursetype", coursetype);
       return "courselist";
}
   }
/**
* ajax查找选了重复的课程
* @throws IOException 
*/
@RequestMapping(params="chongfu")
public void oneCourse(HttpServletRequest request,HttpServletResponse response) throws IOException{
String va = request.getParameter("type");
response.setCharacterEncoding("utf-8");
int id = Integer.parseInt(va);
if (id==0){
return ;
}
boolean flage = false;
Course course =  courseService.oneCourse(id);
Student student = (Student) request.getSession().getAttribute("student");
int id1 = student.getId();
Map<String,Object> map = new HashMap<String, Object>();
map.put("id",id1);
List<Course> findlist = courseService.findCourse(map);
for (Course course2 : findlist) {
if(course2.getCoursename().equals(course.getCoursename())&&course2.getCoursetime().equals(course.getCoursetime())){
PrintWriter out = response.getWriter();
out.write("该课程已选过");
flage = true;
break;
}
if(course2.getCoursename().equals(course.getCoursename())==false){
flage = false;
}
}
if(!flage){
PrintWriter out = response.getWriter();
out.write("该课程未选过");
}
}
/*
* 退选课程
*/
@RequestMapping(params="saveout")
public String oneCourse(HttpServletRequest request,String va){
int id = Integer.parseInt(va);
Course course =  courseService.oneCourse(id);
String coursetype = course.getCoursetype();
/*if(course.getType()==null||course.getType()==""){
request.setAttribute("message", "你未选择该课程,不需要退课!!");
return allcourse(request,coursetype);
}*/
Map<String,Object> map = new HashMap<String, Object>();
int courseid = 0;
if(coursetype==null||coursetype==""){
coursetype="7";
String type = course.getType();
map.put("type", type);
List<Course> courselist = courseService.selectAllPage(map);
for (Course course2 : courselist) {
if(course2.getCoursename().equals(course.getCoursename())&&course2.getCoursetime().equals(course.getCoursetime())){
courseid = course2.getId();
break;
}
}
Student student = (Student) request.getSession().getAttribute("student");
int studentsid = student.getId();
map.put("studentsid",studentsid);
map.put("courseid",id);
int delete =courseService.deleteCourseS(map, id);
if(delete==0){
request.setAttribute("message", "课程退选失败");
return allcourse(request,coursetype);
}
course = courseService.oneCourse(courseid);
course.setCoursesy(course.getCoursesy()+1);
course.setCoursepeople(course.getCoursepeople()-1);
courseService.updateCourse(course);
request.setAttribute("message", "课程退选成功");
return allcourse(request,coursetype);

}else{
Student student = (Student) request.getSession().getAttribute("student");
int id1 = student.getId();
map.put("studentsid",id1);
map.put("courseid",id);
List<Course> findlist = courseService.findCourse(map);
for (Course course2 : findlist) {
if(course2.getCoursename().equals(course.getCoursename())&&course2.getCoursetime().equals(course.getCoursetime())){
courseid = course2.getId();
break;
}
}
map.put("courseid",courseid);
if(courseid==0){
request.setAttribute("message", "你未选择该课程,不需要退课!!");
return allcourse(request,coursetype);
}
course.setCoursesy(course.getCoursesy()+1);
course.setCoursepeople(course.getCoursepeople()-1);
courseService.updateCourse(course);
courseService.deleteCourseS(map,courseid);
request.setAttribute("message", "课程退选成功");
return allcourse(request,coursetype);
}

}
}
 

package com.cl.ssm.controller;


import java.net.URLEncoder;


import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


import com.cl.ssm.pojo.Student;
import com.cl.ssm.service.StudentService;
import com.cl.ssm.util.MD5;
@Controller  
@RequestMapping("student") 
public class StudentController {
@Resource 
   private StudentService studentService;
public StudentService getStudentService() {
return studentService;
}
public void setStudentService(StudentService studentService) {
this.studentService = studentService;
}

/*
* 跳转到登陆界面
*/
@RequestMapping(params="tologin")
   public String Login(HttpServletRequest request,HttpServletResponse response) throws Exception{
return "index";
}
/*
* 退出登录
*/
@RequestMapping(params="loginout")
   public String LoginOut(HttpServletRequest request,HttpServletResponse response) throws Exception{
request.getSession().removeAttribute("student");
return "index";
}
/*
* 登陆
*/
@RequestMapping(params="to")
   public String toLogin(HttpServletRequest request,HttpServletResponse response) throws Exception{
String studentid=request.getParameter("studentid");
String psw = request.getParameter("password");
if(studentid==null||studentid==""||psw==""||psw==null){
return Login(request,response);
}
String check = request.getParameter("check");
if("y".equals(check)){
Cookie nameCookie = new Cookie("username", URLEncoder.encode(studentid, "UTF-8"));
// nameCookie=URLEncoder.encode(nameCookie,"UTF-8");
// 设置Cookie的有效期为1天
nameCookie.setMaxAge(60 * 60 * 24);
Cookie pwdCookie = new Cookie("password", URLEncoder.encode(psw, "UTF-8"));
pwdCookie.setMaxAge(60 * 60*24);
// 设置Cookie的有效期为1天
response.addCookie(nameCookie);
response.addCookie(pwdCookie);
}
Student student = studentService.getStudnetByName(studentid, psw);
if(student==null){
request.setAttribute("message", "用户名或者密码错误");
//request.setAttribute("totalRe",0);
return "error";
}
request.getSession().setAttribute("student", student);
       return "check";
}
}
service层
package com.cl.ssm.service;


import java.util.List;
import java.util.Map;


import javax.annotation.Resource;
import org.springframework.stereotype.Service;


import com.cl.ssm.dao.CourseMapper;
import com.cl.ssm.pojo.Course;


@Service("courseService")
public class CourseService {
@Resource 
private CourseMapper courseDao;

/*
* 分页查看各类型的全部课程
*/
public List<Course> selectAllPage(Map<String,Object>map){
return courseDao.pageAll(map);
}
/*
* 查看各类型课程的总数
*/
public int getTotal(Map<String,Object>map){
return courseDao.getTotal(map);
}
/*
* 分页查看已选的课程
*/
public List<Course> findCourse(Map<String,Object>map){
return courseDao.findCourse(map);
}
/*
* 记录已选课程总数
*/
public int findCourseTotal(Map<String,Object> map){
return courseDao.findCoursetotal(map);
}
/*
* 查看具体的一个课程
*/
public Course oneCourse(int id){
return courseDao.oneCourse(id);
}
/*
* 退课
*/
public int deleteCourseS(Map<String,Object> map,int id){
if(courseDao.deleteCourseS(map)!=0){//不等于0代表删除表间的联系成功
return courseDao.deleteByPrimaryKey(id);
}
return 0;
}
/**
* 退课后对课程进行更新
*/
public int updateCourse(Course course){
return courseDao.updateCourse(course);
}


}
package com.cl.ssm.service;


import javax.annotation.Resource;


import org.springframework.stereotype.Service;


import com.cl.ssm.dao.StudentMapper;
import com.cl.ssm.pojo.Student;


@Service("studentService")
public class StudentService {
@Resource  
private StudentMapper StudentDao;
public Student getStudnetByName(String studentid,String password){
if(StudentDao.getStudentByName(studentid).getPsw().equals(password)){
return StudentDao.getStudentByName(studentid);
}
return null;
}


}

dao层
package com.cl.ssm.dao;


import java.util.List;
import java.util.Map;


import com.cl.ssm.pojo.Course;
public interface CourseMapper {




List<Course> pageAll(Map<String,Object> map);

int getTotal(Map<String,Object> map);

List<Course> findCourse(Map<String,Object>map);
 
int findCoursetotal(Map<String,Object> map);

Course oneCourse(int id);

int deleteByPrimaryKey(Integer id);

int deleteCourseS(Map<String,Object> map);

int updateCourse(Course course);
}
package com.cl.ssm.dao;




import com.cl.ssm.pojo.Student;


public interface StudentMapper {
    int deleteByPrimaryKey(Integer id);


    int insert(Student record);


    int insertSelective(Student record);


    Student selectByPrimaryKey(Integer id);


    int updateByPrimaryKeySelective(Student record);


    int updateByPrimaryKey(Student record);
    Student getStudentByName(String studentid);
}
mapping层(因为我未对教师进行操作所以dao层跟controller层我就不贴出来,但因为教师对象跟学生对象是多对多,跟课程是一对多逻辑关系,所以贴出mapping)
<?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.cl.ssm.dao.CourseMapper" >
  <resultMap id="CourseMap" type="com.cl.ssm.pojo.Course" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="coursename" property="coursename" jdbcType="VARCHAR" />
    <result column="courseclass" property="courseclass" jdbcType="VARCHAR" />
    <result column="coursetime" property="coursetime" jdbcType="VARCHAR" />
    <result column="coursebord" property="coursebord" jdbcType="REAL" />
    <result column="coursecount" property="coursecount" jdbcType="INTEGER" />
    <result column="coursesy" property="coursesy" jdbcType="INTEGER" />
    <result column="coursepeople" property="coursepeople" jdbcType="INTEGER" />
    <result column="cotein" property="cotein" jdbcType="VARCHAR" />
    <result column="coursetype" property="coursetype" jdbcType="VARCHAR" />
    <result column="type" property="type" jdbcType="VARCHAR" />
    <association property="teacher" javaType="com.cl.ssm.pojo.Teacher">  <!--教师与课程是一对多关系-->
           <id column="id" property="id" jdbcType="INTEGER" />
   <result column="teacherid" property="teacherid" jdbcType="VARCHAR" />
   <result column="name" property="name" jdbcType="VARCHAR" />
   <result column="nameclass" property="nameclass" jdbcType="VARCHAR" />
   <result column="picture" property="picture" jdbcType="VARCHAR" /> 
        </association> 
  </resultMap>
  <resultMap id="StudentCourseMap" type="com.cl.ssm.pojo.Course" extends="CourseMap" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="studentid" property="studentid" jdbcType="VARCHAR" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="psw" property="psw" jdbcType="VARCHAR" />
    <result column="studentclass" property="studentclass" jdbcType="VARCHAR" />
    <result column="date" property="date" jdbcType="VARCHAR" />
    <result column="sex" property="sex" jdbcType="VARCHAR" />
  </resultMap>
  <!-- 分页查看待选课程 -->
  <select id = "pageAll" resultMap ="StudentCourseMap" parameterType="Map">
  select * from t_course
        <where>
            <if test="coursetype!=null and coursetype!=''">
               coursetype like #{coursetype}
            </if>
            <if test="type!=null and type!=''">
                and coursetype like #{type}
            </if>
        </where>
        <if test="start!=null and size!=null">
            limit #{start},#{size}
        </if>
    </select>
  <!--   查看该分类的课程总数 -->
    <select id="getTotal" parameterType="Map" resultType="Integer">
        select count(*) from t_course
        <where>
            <if test="coursetype!=null and coursetype!='' ">
                and coursetype like #{coursetype}
            </if>
        </where>
    </select>
    <!-- 记录该学生总的选课数 -->
    <select id="findCoursetotal" parameterType="Map" resultType="Integer">
    select count(*) from t_course c left  
        join t_course_student cs  on c.id=cs.courseid left join t_student s on  
        cs.studentsid=s.id 
         <where>
            <if test="id!=null and id!=''">
               and s.id = #{id}
            </if>
        </where>
    </select>
    <!-- 查看分页的全部课程 -->
    <select id="findCourse" parameterType="Map" resultMap ="StudentCourseMap">
    select c.* from t_course c left  
        join t_course_student cs  on c.id=cs.courseid left join t_student s on  
        cs.studentsid=s.id 
         <where>
            <if test="id!=null and id!=''">
               and s.id = #{id}
            </if>
        </where>
         <if test="start!=null and size!=null">
            limit #{start},#{size}
        </if>
    </select>
   <!--  查看具体一门课程 -->
   <select id="oneCourse" parameterType="int" resultMap ="StudentCourseMap">
   select * from t_course where id=#{id}
   </select>
   <!-- 多对多,先删除他们的联系 -->
    <delete id="deleteCourseS" parameterType="Map">  
        delete from t_course_student  
        <where>  
            <if test="studentsid!=null||studentsid!=''">studentsid=#{studentsid}</if>  
            <if test="courseid!=null || courseid!=''">and courseid=#{courseid}</if>  
        </where>  
    </delete>  
   <!-- 退课,删除选了课的记录 -->
   <delete id="deleteByPrimaryKey" parameterType="int" >
    delete from t_course where id = #{id,jdbcType=INTEGER}
  </delete>
  <update id="updateCourse" parameterType="com.cl.ssm.pojo.Course" >
    update t_course
    set coursename = #{coursename,jdbcType=VARCHAR},
      courseclass = #{courseclass,jdbcType=VARCHAR},
      coursetime = #{coursetime,jdbcType=VARCHAR},
      coursebord = #{coursebord,jdbcType=REAL},
      coursecount = #{coursecount,jdbcType=INTEGER},
      coursesy = #{coursesy,jdbcType=INTEGER},
      coursepeople = #{coursepeople,jdbcType=INTEGER},
      cotein = #{cotein,jdbcType=VARCHAR},
      coursetype = #{coursetype,jdbcType=VARCHAR},
      type = #{type,jdbcType=VARCHAR},
      courseteacherid = #{courseteacherid,jdbcType=INTEGER}
    where id = #{id,jdbcType=INTEGER}
  </update>
</mapper>
<?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.cl.ssm.dao.StudentMapper" >
  <resultMap id="StudentMap" type="com.cl.ssm.pojo.Student" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="studentid" property="studentid" jdbcType="VARCHAR" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="psw" property="psw" jdbcType="VARCHAR" />
    <result column="studentclass" property="studentclass" jdbcType="VARCHAR" />
    <result column="date" property="date" jdbcType="VARCHAR" />
    <result column="sex" property="sex" jdbcType="VARCHAR" />
  </resultMap>
  <resultMap type="com.cl.ssm.pojo.Student" id="CourseStudentMap" extends="StudentMap"><!--跟课程是多对多-->
  <id column="id" property="id" jdbcType="INTEGER" />
    <result column="coursename" property="coursename" jdbcType="VARCHAR" />
    <result column="courseclass" property="courseclass" jdbcType="VARCHAR" />
    <result column="coursetime" property="coursetime" jdbcType="VARCHAR" />
    <result column="coursebord" property="coursebord" jdbcType="REAL" />
    <result column="coursecount" property="coursecount" jdbcType="INTEGER" />
    <result column="coursesy" property="coursesy" jdbcType="INTEGER" />
    <result column="coursepeople" property="coursepeople" jdbcType="INTEGER" />
    <result column="cotein" property="cotein" jdbcType="VARCHAR" />
    <result column="coursetype" property="coursetype" jdbcType="VARCHAR" />
    <result column="type" property="type" jdbcType="VARCHAR" />
    <result column="courseteacherid" property="courseteacherid" jdbcType="INTEGER" />
  </resultMap>
  <select id="getStudentByName" resultMap="CourseStudentMap" parameterType="java.lang.String" >
    select *
    from t_student
    where studentid = #{studentid}
  </select>
</mapper>
<?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.cl.ssm.dao.TeacherMapper" >
  <resultMap id="BaseResultMap" type="com.cl.ssm.pojo.Teacher" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="teacherid" property="teacherid" jdbcType="VARCHAR" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="nameclass" property="nameclass" jdbcType="VARCHAR" />
    <result column="picture" property="picture" jdbcType="VARCHAR" />
    
     <collection property="courses" ofType="com.cl.ssm.pojo.Course" column="courseteacherid">  
            <id column="id" property="id" jdbcType="INTEGER" />
   <result column="coursename" property="coursename" jdbcType="VARCHAR" />
   <result column="courseclass" property="courseclass" jdbcType="VARCHAR" />
   <result column="coursetime" property="coursetime" jdbcType="VARCHAR" />
   <result column="coursebord" property="coursebord" jdbcType="REAL" />
   <result column="coursecount" property="coursecount" jdbcType="INTEGER" />
   <result column="coursesy" property="coursesy" jdbcType="INTEGER" />
   <result column="coursepeople" property="coursepeople" jdbcType="INTEGER" />
   <result column="cotein" property="cotein" jdbcType="VARCHAR" />
   <result column="coursetype" property="coursetype" jdbcType="VARCHAR" />
   <result column="type" property="type" jdbcType="VARCHAR" /> 
        </collection>
  </resultMap>
接下来就是pojo层了
package com.cl.ssm.pojo;


import java.util.List;


public class Course {
    private Integer id;


    private String coursename;


    private String courseclass;


    private String coursetime;


    private Float coursebord;


    private Integer coursecount;


    private Integer coursesy;


    private Integer coursepeople;


    private String cotein;


    private String coursetype;


    private String type;


    private Integer courseteacherid;
    
    private List<Student> students;
    
    private Teacher teacher;


    public Integer getId() {
        return id;
    }


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


    public String getCoursename() {
        return coursename;
    }


    public void setCoursename(String coursename) {
        this.coursename = coursename == null ? null : coursename.trim();
    }


    public String getCourseclass() {
        return courseclass;
    }


    public void setCourseclass(String courseclass) {
        this.courseclass = courseclass == null ? null : courseclass.trim();
    }


    public String getCoursetime() {
        return coursetime;
    }


    public void setCoursetime(String coursetime) {
        this.coursetime = coursetime == null ? null : coursetime.trim();
    }


    public Float getCoursebord() {
        return coursebord;
    }


    public void setCoursebord(Float coursebord) {
        this.coursebord = coursebord;
    }


    public Integer getCoursecount() {
        return coursecount;
    }


    public void setCoursecount(Integer coursecount) {
        this.coursecount = coursecount;
    }


    public Integer getCoursesy() {
        return coursesy;
    }


    public void setCoursesy(Integer coursesy) {
        this.coursesy = coursesy;
    }


    public Integer getCoursepeople() {
        return coursepeople;
    }


    public void setCoursepeople(Integer coursepeople) {
        this.coursepeople = coursepeople;
    }


    public String getCotein() {
        return cotein;
    }


    public void setCotein(String cotein) {
        this.cotein = cotein == null ? null : cotein.trim();
    }


    public String getCoursetype() {
        return coursetype;
    }


    public void setCoursetype(String coursetype) {
        this.coursetype = coursetype == null ? null : coursetype.trim();
    }


    public String getType() {
        return type;
    }


    public void setType(String type) {
        this.type = type == null ? null : type.trim();
    }


    public Integer getCourseteacherid() {
        return courseteacherid;
    }


    public void setCourseteacherid(Integer courseteacherid) {
        this.courseteacherid = courseteacherid;
    }


public List<Student> getStudents() {
return students;
}


public void setStudents(List<Student> students) {
this.students = students;
}


public Teacher getTeacher() {
return teacher;
}


public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}


@Override
public String toString() {
return "Course [id=" + id + ", coursename=" + coursename
+ ", courseclass=" + courseclass + ", coursetime=" + coursetime
+ ", coursebord=" + coursebord + ", coursecount=" + coursecount
+ ", coursesy=" + coursesy + ", coursepeople=" + coursepeople
+ ", cotein=" + cotein + ", coursetype=" + coursetype
+ ", type=" + type + ", courseteacherid=" + courseteacherid
+ ", students=" + students + ", teacher=" + teacher + "]";
}

    
}
package com.cl.ssm.pojo;


import java.util.List;


public class Student {


    private Integer id;


    private String studentid;


    private String name;


    private String psw;


    private String studentclass;


    private String date;


    private String sex;
    private List<Course> courses;


    public Integer getId() {
        return id;
    }


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


    public String getStudentid() {
        return studentid;
    }


    public void setStudentid(String studentid) {
        this.studentid = studentid == null ? null : studentid.trim();
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }


    public String getPsw() {
        return psw;
    }


    public void setPsw(String psw) {
        this.psw = psw == null ? null : psw.trim();
    }


    public String getStudentclass() {
        return studentclass;
    }


    public void setStudentclass(String studentclass) {
        this.studentclass = studentclass == null ? null : studentclass.trim();
    }


    public String getDate() {
        return date;
    }


    public void setDate(String date) {
        this.date = date == null ? null : date.trim();
    }


    public String getSex() {
        return sex;
    }


    public void setSex(String sex) {
        this.sex = sex == null ? null : sex.trim();
    }


public List<Course> getCourses() {
return courses;
}


public void setCourses(List<Course> courses) {
this.courses = courses;
}


@Override
public String toString() {
return "Student [id=" + id + ", studentid=" + studentid + ", name="
+ name + ", psw=" + psw + ", studentclass=" + studentclass
+ ", date=" + date + ", sex=" + sex + ", courses=" + courses
+ "]";
}
    
}
package com.cl.ssm.pojo;


import java.util.List;


public class Teacher {
    private Integer id;


    private String teacherid;


    private String name;


    private String nameclass;


    private String picture;
    
    private List<Course> courses;


    public Integer getId() {
        return id;
    }


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


    public String getTeacherid() {
        return teacherid;
    }


    public void setTeacherid(String teacherid) {
        this.teacherid = teacherid == null ? null : teacherid.trim();
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }


    public String getNameclass() {
        return nameclass;
    }


    public void setNameclass(String nameclass) {
        this.nameclass = nameclass == null ? null : nameclass.trim();
    }


    public String getPicture() {
        return picture;
    }


    public void setPicture(String picture) {
        this.picture = picture == null ? null : picture.trim();
    }


public List<Course> getCourses() {
return courses;
}


public void setCourses(List<Course> courses) {
this.courses = courses;
}
    
}
util
package com.cl.ssm.util;


import java.util.List;
/*
 * 实现分页功能
 */
public class Takepage<T> {


private int totalRecords;// 总记录数
private List<T> list;// 当前集合类型
private int pageNo;// 当前页码
private int pageSize;// 每页要显示的数据数
private int psize;//记录当前界面数据
/*
* 得到总页数
*/
public int getTotalPageNo(){
return (totalRecords+pageSize-1)/pageSize;
}
/*
* 得到第一页
*/
public int getPageNoOne() {
return 1;
}


/*
* 得到最后一页
*/
public int getPageNoOver() {
return getTotalPageNo()==0?1:getTotalPageNo();
}
/*
* 得到上一页
*/
public int getPageNoFrist(){
if(pageNo<=1){
return 1;
}
return pageNo-1;

}
/*
* 得到下一页
*/
public int getPageNoLast(){
if(pageNo>=getTotalPageNo()){
return getPageNoOver();
}
return pageNo+1;

}


//get set方法
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPsize() {
return psize;
}
public void setPsize(int psize) {
this.psize = psize;
}



}
然后就是直接https://localhost:8080/ssm运行了。界面如下


自己随笔记载,方便以后自己回顾,有问题的也可以直接留言咨询谢谢害羞



  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值