初识 Spring(24)---(SpringMVC实战--构建学生管理系统(14))

56 篇文章 1 订阅
47 篇文章 1 订阅

SpringMVC实战--构建学生管理系统(14)

(源代码见仓库:https://gitee.com/jianghao233/course

利用 Ajax 技术 避免提交数据库中已存在数据

(解决后台验证数据库数据与中文乱码问题)

修改 TbCourseMapper.java

package com.neuedu.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.neuedu.po.TbCourse;

public interface TbCourseMapper {
    int deleteByPrimaryKey(Integer courseid);

    int insert(TbCourse record);

    int insertSelective(TbCourse record);

    TbCourse selectByPrimaryKey(Integer courseid);

    int updateByPrimaryKeySelective(TbCourse record);

    int updateByPrimaryKey(TbCourse record);
    
    public List<TbCourse> getList(@Param("start") int start,@Param("record")int record);

    public int getCount();
    
    public TbCourse getCourseByName(@Param("coursename") String coursename);   //新增代码

	
}

修改 TbCourseMapper.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.neuedu.mapper.TbCourseMapper" >
  <resultMap id="BaseResultMap" type="com.neuedu.po.TbCourse" >
    <id column="courseid" property="courseid" jdbcType="INTEGER" />
    <result column="coursename" property="coursename" jdbcType="VARCHAR" />
    <result column="hour" property="hour" jdbcType="INTEGER" />
    <result column="score" property="score" jdbcType="DOUBLE" />
    <result column="picurl" property="picurl" jdbcType="VARCHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    courseid, coursename, hour, score, picurl
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from tb_course
    where courseid = #{courseid,jdbcType=INTEGER}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from tb_course
    where courseid = #{courseid,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="com.neuedu.po.TbCourse" >
    insert into tb_course (courseid, coursename, hour, 
      score, picurl)
    values (#{courseid,jdbcType=INTEGER}, #{coursename,jdbcType=VARCHAR}, #{hour,jdbcType=INTEGER}, 
      #{score,jdbcType=DOUBLE}, #{picurl,jdbcType=VARCHAR})
  </insert>
  <insert id="insertSelective" parameterType="com.neuedu.po.TbCourse" >
    insert into tb_course
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="courseid != null" >
        courseid,
      </if>
      <if test="coursename != null" >
        coursename,
      </if>
      <if test="hour != null" >
        hour,
      </if>
      <if test="score != null" >
        score,
      </if>
      <if test="picurl != null" >
        picurl,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="courseid != null" >
        #{courseid,jdbcType=INTEGER},
      </if>
      <if test="coursename != null" >
        #{coursename,jdbcType=VARCHAR},
      </if>
      <if test="hour != null" >
        #{hour,jdbcType=INTEGER},
      </if>
      <if test="score != null" >
        #{score,jdbcType=DOUBLE},
      </if>
      <if test="picurl != null" >
        #{picurl,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.neuedu.po.TbCourse" >
    update tb_course
    <set >
      <if test="coursename != null" >
        coursename = #{coursename,jdbcType=VARCHAR},
      </if>
      <if test="hour != null" >
        hour = #{hour,jdbcType=INTEGER},
      </if>
      <if test="score != null" >
        score = #{score,jdbcType=DOUBLE},
      </if>
      <if test="picurl != null" >
        picurl = #{picurl,jdbcType=VARCHAR},
      </if>
    </set>
    where courseid = #{courseid,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.neuedu.po.TbCourse" >
    update tb_course
    set coursename = #{coursename,jdbcType=VARCHAR},
      hour = #{hour,jdbcType=INTEGER},
      score = #{score,jdbcType=DOUBLE},
      picurl = #{picurl,jdbcType=VARCHAR}
    where courseid = #{courseid,jdbcType=INTEGER}
  </update>
  
  <select id="getList" resultType="TbCourse">
  	select * from tb_course limit #{start},#{record}
  </select>
  
  
  <select id="getCount" resultType="int">
  	select count(*) from tb_course 
  </select>
  
  <select id="getCourseByName" resultType="TbCourse">         //新增代码
  	select * from tb_course where coursename = #{coursename}
  </select>                                                    //新增代码
</mapper>

修改 CourseService.java

package com.neuedu.service;

import java.util.List;

import com.neuedu.po.TbCourse;
import com.neuedu.vo.PageBean;

public interface CourseService {
	void save(TbCourse tbCourse);
	TbCourse getCourseById(Integer courseid);
	void getList(PageBean<TbCourse> pageBean);
	
	void update(TbCourse tbCourse);
	void delete(Integer courseid);
	
	int getCount();
	
	TbCourse getCourseByName(String coursename);       //新增代码
	
}
 

修改 CourseServiceImpl.java

package com.neuedu.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.neuedu.commons.Commons;
import com.neuedu.mapper.TbCourseMapper;
import com.neuedu.po.TbCourse;
import com.neuedu.service.CourseService;
import com.neuedu.vo.PageBean;

@Service
public class CourseServiceImpl implements CourseService {
	
	@Autowired
	private TbCourseMapper courseMapper;

	@Override
	public void save(TbCourse tbCourse) {
		courseMapper.insertSelective(tbCourse);
	}

	@Override
	public void getList(PageBean<TbCourse> pageBean) {
		
		//通过计算计算出从第几条开始查询
		int start = (pageBean.getNowPage() - 1) * pageBean.getRecord();
		List<TbCourse> list = courseMapper.getList(start,pageBean.getRecord());
		pageBean.setList(list);
		
		int count = courseMapper.getCount(); //总记录数
		pageBean.setCount(count);
		
	}

	@Override
	public TbCourse getCourseById(Integer courseid) {
		
		return courseMapper.selectByPrimaryKey(courseid);
	}

	@Override
	public void update(TbCourse tbCourse) {
		courseMapper.updateByPrimaryKeySelective(tbCourse);		
	}

	@Override
	public void delete(Integer courseid) {
		courseMapper.deleteByPrimaryKey(courseid);		
	}

	@Override
	public int getCount() {		
		return courseMapper.getCount();
	}

	@Override                                                 //新增代码
	public TbCourse getCourseByName(String coursename) {
		
		return courseMapper.getCourseByName(coursename);
	}                                                        //新增代码

	

}

修改 courseAdd.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>
<html>
	<head>
		<meta charset="UTF-8">
		<title>课程添加</title>
	</head>
	<body>
		<div id="form-div">
			<form action="${pageContext.request.contextPath}/course/save" method="post" enctype="multipart/form-data">
				<!-- 有文件上传必须将enctype设为multipart -->
				课程名称:<input type="text" id='coursename'name="coursename" onchange="checkCoursename()"/>
				<span id="coursenamespan"></span><br />
				课程学时:<input type="text" name="hour"/><br />
				课程学分:<input type="text" name="score"/><br />
				<input type="submit" value="提交" />
			</form>
		</div>
	</body>
</html>
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/jquery.js"></script>
<script type="text/javascript">
function checkCoursename(){              //新增代码
	//通过jquery的post方法发送ajax请求
	//该方法中有四个参数,1:请求的url地址 2:要传递的参数 3:回调函数 4:从controller中返回数据的格式
	var coursename = $('#coursename').val();

	$.post('${pageContext.request.contextPath }/course/checkByName',{coursename:coursename},function(data){
		$('#coursenamespan').html(data);		
	},'html');                             //新增代码
	
}
</script>

修改  CourseController.java

package com.neuedu.controller;

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

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 org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.neuedu.commons.Commons;
import com.neuedu.po.TbCourse;
import com.neuedu.service.CourseService;
import com.neuedu.vo.PageBean;
import com.sun.javafx.css.CssError.InlineStyleParsingError;

@Controller
@RequestMapping("/course")
public class CourseController {
	
	@Autowired
	private CourseService courseService;
	
	@RequestMapping({"/","/list"})
	public String list(@RequestParam(value="nowPage",required=false,defaultValue="1")
									Integer nowPage,Model model) {
		//查询课程列表
		
		PageBean<TbCourse> pageBean = new PageBean<>(nowPage,Commons.RECORD);
		
		courseService.getList(pageBean);
		
		model.addAttribute("pageBean", pageBean);
	
		return "admin/courseManager";
	}
	
	///显示添加页面
	@RequestMapping("/showAdd")
	public String showAdd() {
		return "admin/courseAdd";
	}
	
	@RequestMapping("/checkByName")               //新增代码
	@ResponseBody
	public String checkByName(String coursename) {
		TbCourse courseByName = courseService.getCourseByName(coursename);
		if(courseByName != null) {
			
			return "the course name is exists";
		}
		return "";
	}                                             //新增代码
	
	
	
	//保存课程信息
	@RequestMapping("/save")
	public String save(TbCourse tbCourse) {
		/*TbCourse courseByName = courseService.getCourseByName(tbCourse.getCoursename());
		if(courseByName != null) {
			
			return "admin/courseAdd";
		}*/
		//调用service保存课程信息
		courseService.save(tbCourse);
		return "redirect:/course/";
	}
	
	//显示修改页面
	@RequestMapping("/showModify")
	public String showModify(Integer courseid,Map<String,Object> map) {
		TbCourse tbCourse = courseService.getCourseById(courseid);
		map.put("c", tbCourse);
		
		return "admin/courseModify";
	}
	
	
	@RequestMapping("/modify")
	public String modify(TbCourse tbCourse) {
		courseService.update(tbCourse);
		return "redirect:/course/";
		
	}
	
	@RequestMapping("/delete")
	public String delete(Integer courseid) {
		courseService.delete(courseid);
		return "redirect:/course/";
	}
	
	
	

}

输出:进入课程管理页面--点击添加---当输入数据库中已存在数据时---显示 the course name is exists

在不刷新页面的情况下,动态的改变局部信息----Ajax(解决局部刷新)

想让提示语为中文会导致乱码问题(提示语修改为 该课程名已存在 ),解决乱码问题,修改代码

修改 springmvc.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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
		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-4.2.xsd">
	<!-- springmvc 只负责 controller层 -->
	<context:component-scan base-package="com.neuedu.controller"></context:component-scan>
	<!-- 配置视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">	
		<property name="prefix" value="/WEB-INF/views/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
	
	<mvc:annotation-driven>
		<mvc:message-converters>
		<!-- 消息转换器 -->          //新增代码
		<bean class="org.springframework.http.converter.StringHttpMessageConverter">
			<property name="supportedMediaTypes">
				<list>
					<!-- 将消息转换器中的属性设置为 utf-8 -->
					<value>text/plain;charset=utf-8</value>
					<value>text/html;charset=UTF-8</value>
				</list>
			</property>
		</bean>                 
	</mvc:message-converters>              //新增代码
	
	</mvc:annotation-driven>
	<!-- 映射静态资源 -->
		
		<!-- 配置拦截器 -->
		<mvc:interceptors>
			<mvc:interceptor>
				<!-- 配置拦截路径(所有路径) -->
				<mvc:mapping path="/**"/>
				<!-- 配置不拦截路径(不拦截static和login下的路径) -->
				<mvc:exclude-mapping path="/static/**"/>
				<mvc:exclude-mapping path="/login/**"/>
				<bean id="check" class="com.neuedu.interceptor.CheckInterceptor"></bean>
			</mvc:interceptor>
		</mvc:interceptors>
		
	<mvc:resources location="/static/" mapping="/static/**"></mvc:resources>
	<!-- url地址为static开头的,全部映射到 static文件夹下,里面存储静态页面的样式;
	不用经过spring映射,因为spring映射会将外部网络引用的文件全部拦截 -->
	
	<!-- 多部件文件上传解析器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	 	<!-- 上传文件的最大内存为5M -->
	 	<property name="maxUploadSize" value="5000000"></property>
	 	<!-- 上传文件的编码格式为utf-8 -->
	 	<property name="defaultEncoding" value="utf-8"></property>	 
	 </bean>
</beans>

输出:提示信息成功输出为中文,乱码问题解决

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值