SpringMVC+Mybatis写调查问卷管理系统

本文介绍了一个使用SpringMVC和Mybatis构建的调查问卷管理系统的过程。从数据库设计、POJO、SQL到页面控制器,详细阐述了每个步骤,并分享了解决中文乱码、WEB-INF目录访问限制等问题的方法。项目源码已上传至GitHub。
摘要由CSDN通过智能技术生成

    最近一直想找点事情做,前几个星期马原老师说要做一份社会调查需要用到调查问卷,然后基本都是网上直接用现成的网站直接做的,我在想自己是不是也能做一个类似简单的管理系统呢。。然后一做就做了半个月,前几天总算是做好了,感觉要是自己勤快一点可能几天就能写好吧,下面是我在写这个调查系统的全部过程和遇到的问题解决方法。

    首先是在脑海中构建整个系统的模型,我是喜欢根据这个模型先写好数据库的脚本,然后再写用到的POJO,和数据库相连接的sql类和mybatis的配置文件,最后将这些东西在jsp页面中拼接起来,SpringMVC算是一个粘合剂将这些东西很好的组合在一起。

    我的构想:

    首先和其他系统一样,应该先有一个账号以便起到多个人使用时使数据分开标识的作用,那么就应该有登录界面和注册账号页面。。这个很简单,随便搞搞就好了。

    那么来到管理者的主界面,应该有创建问卷,查看/进行问卷调查,和查看问卷调查结果的功能,到这里,这个系统的大致模型已经有了。

    再细想,数据库的数据表,首先应该有存放用户账号密码的表,叫user吧,其次应该有一张存放题目信息的表,叫inf吧,然后就是应该再有一张存放对应题目选项的表,叫det,然后每张表里面的数据就按照意思建就好了。

    然后对应每张表,POJO类应该也有三个。。为了偷懒我直接都叫了表的名字。

    下面是我mysql建表的脚本代码:

create database users;
use users;
create table user(
	username varchar(10) primary key,
	pwd varchar(20)
);
create table inf(
  num int,
  username varchar(10),
  des varchar(200),
  foreign key(username) references user(username)
);
create table det(
  num int,
  id int,
  opt varchar(30),
  username varchar(10),
  value int default '0',
  foreign key(username) references user(username)
);

我的num是存题目的编号,id是存选项的编号。

然后就可以开始写POJO的java代码了,还有相应的sql语句,由于整个工程涉及的代码太多,就不一一放上来了,就挑一些重要的放,然后整个工程代码附上github的网址:https://github.com/iunique/IdeaProject

项目基本骨架:


简介:

Dao放着和数据库相连接的代码,entity里放这POJO类,handles里面放的是页面控制器,用于处理页面映射以及起到servlet的作用,处理请求,跳转页面,config.xml放mybatis的基本配置文件,tab.xml放着sql语句,页面我用到的很多,登录界面login,注册界面register,还有相应的登录和注册判断跳转页面,然后index是用户主界面,对应着三个功能的界面,建调查问卷,进行问卷调查,查看调查文件结果。

先记录一下过程中遇到的几大问题:

1.中文乱码问题

2.WEB-INF目录下限制访问问题

3.算法问题,也就是如何用代码实现整个系统

解决方法:

1.中文乱码算是困扰我最久的问题,因为需要改的地方有很多,mysql数据库存储时的编码,解码设置,jsp页面编码解码的设置,以及mybatis配置文件中编码设置,在java代码处理数据时的编码解码设置。。只有全部搞好了才能实现中文在页面中的正常读取和呈现,少一步都不行,因为平时不用中文读取和呈现,基本没发现还有这么大的一个问题。。然后为此搞了一天最后写了博客:https://blog.csdn.net/qq_37497322/article/details/80034487

2.出于安全性考虑,jsp文件最好放在限制访问的WEB-INF目录下,

不用springMVC解决方法:https://blog.csdn.net/qq_37497322/article/details/80027464

一开始我是没用springMVC的,全部是用上面的方法+大量的web.xml配置映射+十几个servlet。。。代码量大大增加而且很复杂,最后我还是屈服了,花了一两天把代码改成了springMVC版的,映射文件和servlet全交给Controller处理。。才体会到了springMVC的强大,还有自带的表单自动填补POJO类的功能。。。简直不要太强

3.这个问题感觉是长期积累的代码感觉。。。想了一会实现方法,就写出来了,这东西感觉不好表达,或许是一年多的acm经验带来的加成吧,下面贴代码

首先是我的config.xml,也就是mybatis的配置文件,需要注意连接的时候加上字符集,url处最后加上

useUnicode=true&characterEncoding=UTF-8
的字样可以解决写入数据库时的编码问题:
<?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>
    <!-- 和Spring整合后environment配置都会被干掉 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事务管理,目前由mybatis来管理 -->
            <transactionManager type="JDBC" />
            <!-- 数据库连接池,目前由mybatis来管理 -->
            <dataSource type="POOLED"><!--有关于mysql数据库的各种信息-->
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/users?useUnicode=true&characterEncoding=UTF-8"/>
                <property name="username" value="root" />
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--将操作配置文件User.xml系添加进mapper-->
        <mapper resource="tab.xml" />
    </mappers>
</configuration>

然后是tab.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="dom">
    <resultMap type="entity.det" id="det">
        <result column="num" property="num" javaType="int"/>
        <result column="id" property="id" javaType="int"/>
        <result column="opt" property="opt" javaType="string"/>
        <result column="value" property="value" javaType="int"/>
        <result column="username" property="username" javaType="string"/>
    </resultMap>
    <resultMap type="entity.user" id="user">
        <result column="username" property="username" javaType="string"/>
        <result column="pwd" property="pwd" javaType="string"/>
    </resultMap>
    <resultMap type="entity.inf" id="inf">
        <result column="num" property="num" javaType="int"/>
        <result column="username" property="username" javaType="string"/>
        <result column="des" property="des" javaType="string"/>
    </resultMap>
    <!--查询用户是否存在-->
    <select id="findUser" parameterType="java.lang.String" resultType="java.lang.Integer">
        select COUNT(*) from user where username = '${value}'
    </select>
    <!--返回用户密码-->
    <select id="findPwd" parameterType="java.lang.String" resultType="java.lang.String">
        
  • 27
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
Spring+Spring MVC+MyBatis(简称SSM)是一种常见的开发框架组合,用来构建图书馆管理系统非常适用。 Spring框架是一个轻量级的容器,它提供了一种方便的方式来管理Java对象的生命周期和依赖关系。在图书馆管理系统中,可以使用Spring来实现依赖注入和IoC(控制反转),从而方便地管理和组织各个模块。 Spring MVC是基于Spring框架的一个Web开发框架,它可以帮助开发人员快速构建出高效且易于维护的Web应用程序。在图书馆管理系统中,可以使用Spring MVC来处理用户请求、响应和数据渲染等任务,同时还可以实现灵活的URL映射和请求转发,提供良好的用户体验。 MyBatis是一个优秀的持久层框架,它通过XML或注解提供了灵活且强大的数据库访问能力。在图书馆管理系统中,可以使用MyBatis来进行数据库的增删改查操作,通过定义相应的SQL语句来完成各种数据访问需求。同时,MyBatis还提供了缓存机制来提高系统的性能和效率。 综合使用SSM框架组合可以实现图书馆管理系统的各项功能,比如图书的借阅与归还、读者的注册和登录、图书的查询和排序等。通过Spring的IoC容器管理各个模块,通过Spring MVC处理用户请求和渲染结果,通过MyBatis与数据库进行交互,可以提高系统的可扩展性、灵活性和性能。同时,SSM框架组合还提供了一系列的工具和插件,如事务处理、日志记录、异常处理等,能够更好地支持系统的开发和维护。 总而言之,SSM框架组合在图书馆管理系统中的应用是非常合适的,它能够帮助开发人员快速构建出高效、易于维护的系统,提高开发效率和用户满意度。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值