项目背景:学习完ssm背景,进行的一次项目(选课系统)实践,主要目的为了增强对ssm框架的理解,第二个是练习自己对于项目的熟悉能力,第三是为了增强自己的编程能力
1、ssm框架简单介绍:
- SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架
- Spring就像是整个项目中装配bean的大工厂,它在配置文件中指定使用特定的参数去掉用实体类的构造方法来实例化对象,Spring的核心思想是IoC(控制反转),即不需要我们去“new”一个对象,而这个框架就帮我们完成了这一切,我觉得这个功能非常不错。
- mybatis是对jdbc的封装,对于数据的重要数据的封装和调用,使得数据更加的安全。
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责;在项目的过程中,可能练习的不够深入吧,所以对于SpringMVC这个东西了解的不够深入
2、项目工具介绍
框架使用:Spring SSM
开发环境:Eclipse 10.0
开发语言:Java,js
JDK版本:1.7
服务器运行:Tomcat 7.0
数据库:MySQL
3、项目功能介绍
本次项目主要分为三大模块:学生后台管理,教师后台管理,教务处后台管理,由于对于基础知识掌握的不牢靠,所以在有限的10天内,只完成了学生后台管理,教师后台管理;
共同功能:个人信息模块(不可修改和可修改),修改密码模块
学生功能:
a、完成必修课的查看(课程编号、课程名称、课程学分、代课教师、代课教师编号)
b、完成选修课的选课功能(限制最大人数、选课的当前人数,选择后增加一人,删除时减少一人)
c、选修课的查看,可以对不想学习的课程进行删除
d、成绩查看模块,可以查看必修/选修的分数以及获得的学分
教师功能
a、完成对学生信息的查看功能
b、完成老师对于学习考试之后的打分功能
c、完成查看自己所带的课程名字
4、项目的收获与不足
收获:
a、对于ssm框架有了简单的了解、以及属性
b、相比于第一次项目,能清楚的知道自己想要完成什么样的功能, 以及该怎么完成
c、对于编写代码犯错,没有以前那么恐惧了,逐渐的学会了怎么去找错误
d、学会了要顺着代码的执行顺序去找错误,而不是想当然的、觉得它的执行顺序是什么,就怎么找错误(写分页查询时,应该是先执行action的,在执行action中调用的普通方法,但是,在做的过程中,会想当然的是执行普通方法,在执行action,所以总是报空指针异常,还好,在和伙伴们讨论的时候,明白了错误是在哪里,及时改正了,然后就好了)
不足:
a、相比于第一次,有了计划性,但是不够具体,执行的不够严格
b、写代码的过程中,思路不够清晰,有时候能重复使用的代码,后来还是在写了一次,因为不能确定到底能不能用;另一个就是因为思路不够清晰,所有导致前期浪费时间过多,后期的很多功能,由于时间关系,无法完成
c、遇到困难还是喜欢一个人在哪儿死磕,直到解决不了了才会想着问别人(在规定的时间内,完不成,肯定是你那里有问题的,所以要尽快问问题,打通你的思路,然后更好的理解它,完成它)
5、学到的技术点
a、对于数据在页面和数据库的交互(增删改查),比第一次的项目熟练了许多
b、学会使用previousElementSibling获取上一个标签的值进行传值(这个问题,困扰了一天多的时间才解决,而这个正是体现了对于知识的不牢固)
说一下这个获取值需要注意的问题
1、
<a href="javascript:void(0)"
class=" button border-main
icon-search"
onclick="changesearch()" id="a" name="aa"> 搜索</a></li>
在a连接href=“”中必须加javascript:void(0),这句话的意思是:让超链接去执行一个js函数,而不是去跳转到一个地址,而void(0)表示一个空的方法,也就是不执行js函数
2、可能在传值的过程中会出现乱码问题,解决方式如下:
j<script type="text/javascript" charset="UTF-8">
//搜索
function changesearch() {
var a = document.getElementById("a");
/* nodeName */
var inr = encodeURI(a.previousElementSibling.value);
inr = encodeURI(inr);
location.href = "${pageContext.request.contextPath }/foundstudent.action?INR="
+ inr;
}
</script>```
后台
String inr = request.getParameter("INR");
inr = URLDecoder.decode(inr, "utf-8");
以上解决方案来自网络,有更好的解决方案,欢迎讨论
3、对于分页查询,有了简单的理解,能做到简单的分页