1.maven:管理项目的构建,在pom.xml中添加依赖即可,不兼容时会报错。有目录规范,使得目录结构统一。有依赖管理、消除了构建的重复、项目信息管理等。
2.ssm:spring就是一个大工厂,可以实例化对象,也可以成为是粘合剂。springmvc拦截用户请求核心是dispatcherservlet.mybatis围绕sqlsessionfactory展开,关联了查询数据库的mapper文件。实现了模糊查询,还有起别名的方便。
3.springmvc-servlet;启动MVC注解,静态资源处理,文件上传的大小和格式
web.xml;几家在spring配置文件,过滤器处理字符集,监听spring容器,配置springMVC配置文件的路径
applicationcontext。cml:扫描业务层注解,数据库连接信息,配置数据源加载mapper文件,自动扫描dao接口,使用实例工厂的方法注入对象。事务管理:一系列对数据库的操作进行统一的提交和回滚,防止数据库设计出现问题。
4.上传图片:选择后点击确认---调用ajax访问control层,进行业务处理后将图片存在Tomcat部署的项目中。
5.开发流程:maven项目----搭建框架---写业务访问层---根据控制类的返回界面编写前端页面----之后就是数据处理层service,dao,mapper,----完善功能,写工具类,分页等,最后前端加上框架。
1.@ResponseBody作用:@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用,即返回的数据是json格式。
2.StringUtils类isEmpty方法用来判断字符串是否为空;
StringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理
3.setViewName方法中的参数是页面的名称
4.@Repository:该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。
5.自己调试的时候:log.debug("bug!");如果log4j的配置中设置了debug级别,那么就可以输出其他debug的日志,在日志中标记为[DEBUG].
在自己做项目调试和System.out.println()方法差不多。
但现在项目中都推荐使用日志形式输出调试信息而不使用System.out.println()方法,因为这些方法是要在程序中修改的.
6..启动服务器时实体类报java.io.NotSerializableException:异常,但程序能正常运行,在实现Serializable接口后就不报错了
序列化:便于存储,便于处理。会将不同类型的属性转化为字节传输
7.试卷的随机生成:根据选择的不同题型的数量,去数据库查找对应条数的记录,来速记除去题目。
8.试题是有管理员生成后发给大家?还是管理员只负责有几道题,在用户点击试卷考试的时候来随机生成?
管理员创建了试卷,这是题量已经确定。当学生考试时会触发考试事件,这时随机生成试卷并显示---ajax异步,减少页面抖动。
9.后台验证码是怎么实现了?调用一个工具类CpachaUtil,由数字、字母、感染线组成,这里不区分大小写。页面从controller中异步得到验证码图片,通过文本框输入信息与随机生成的验证码vcode来比较。
10.数据库中的实现难点:
11.HSSFWorkbook在上传文件的时候创建Excel对象,HSSFSheet sheetAt在webbook中添加一个sheet,对应Excel文件中的sheet。
12.日志登录功能:在触发后台用户login请求的时候,会获取当前用户信息,logServise业务处理进行日志添加。
13.echarts成绩统计没有显示:debug报错Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Constructor threw exception; nested exception is java.lang.OutOfMemoryError: PermGen space,查资料说是拦截器问题,将web.xml中版本改为3.0就ok---解决了报错,但还是没有显示。去官网查询api文档----原来是没有加入echarts.min.js插件,加上后可以正确显示。
14.学生考试的实现流程:学生查看考试信息,在有发布了考试的情况下,点击考试----通过ajax异步获取判断是否可以生成试卷----生成后就可以考试---考完点击交卷进行后续的处理(提交到数据库 显示结果)
15.多选题的提交:中期找老师检查完善的时候,老师问了我一个问题:你的多选题如果选择顺序不是按照选项顺序提交的话,那和数据库里字符串不匹配会判断成错的吧?我想了一会理解了这个从来没有考虑过的问题,因为我是根据属性过滤器,选择值为checked的进行提交,过滤的时候是从上到下开始遍历,所以没有问题,就没有进行排序。
16.权限问题:用户登录时通过获取其id找到该角色,找不到说明该用户不存在。找到后连表查询【mybatis的connection和associate标签】,通过字段值roled来区分,权限的id来判断有哪些功能权限menuid。老师在中期检查时说可以用拦截器实现,这个没有尝试
17.分页的实现:每次查询的时候获取一下总条数,通过每页大小pagesize和偏移量offest【当前页第一个偏移量=前面有几页*每页条数】-----------拓展:limit a;limit a,b;limt a offset b的区别
18.学生端的菜单是通过js事件实现的;后台的菜单栏是通过权限动态添加的,并且根据一级菜单的id来获取二级菜单,在menu表中有对应关系。根据当前菜单的id来查询menu表中parentid等于当前id的,遍历显示出来
19.service层与dao层写的一样,有什么区别?service依赖于dao层来获取数据,在service中注入dao。因为面向接口更灵活。
20.上传图片:点击上传图片选择图片后,将路径保存下来,在控制类处理:将这种MultipartFile格式传进来,判断其格式,创建或者定义要保存的图片的位置,即将路径保存并用transto方法写入磁盘。给下一个文本框追加
未解之谜:
1.多选题提交如果正确选项是DB,而数据库中保存的是BD,在数据库里好像没法识别,都按照对来处理
2.添加手机验证码调用接口------尝试了。
3.用springMVC对数据库中试题的某些标签进行转义,避免显示的时候乱码。
4.MD5进行数据库加密