springMVC 调查问卷系统 record

Maven下的依赖包有两个 spring-web和springWebMVC

springwebMVC包含spring-web依赖, 但是spring-web的等级大于Spring-webmvc

 

 

 

 

没有 /src/main/resources

https://www.freesion.com/article/7115386412/

ctrl+ shift +R 输入 .classpath .project 会找到该文件

 

web.xml 文件报错:cvc-id.3: A field of identity constraint ‘web-common-servlet-name-uniqueness‘ matched

https://blog.csdn.net/qq_35091353/article/details/115270974

 

web.xml配置详情

https://www.cnblogs.com/jxldjsn/p/8099101.html

 

spring MVC 五大组件

https://mp.weixin.qq.com/s?src=11&timestamp=1639475475&ver=3496&signature=PWhYmsSilHuWz6joMmgrzX1SyT1IgOaXJ3Ft6GyLWIH5LtRFLH4fKaLCzHScyj2AVJ5d0pBowb7SdB3pevOHODPBptvl76muOq5Tlc8CR8zEIobDtHjYwZyLCgNycNKc&new=1

 

eclipse 中使用maven创建springMVC

https://www.cnblogs.com/daxiang2008/p/9663317.html

 

jxl操作excel

https://www.cnblogs.com/xd502djj/archive/2011/08/15/2139394.html

 

 

xml文件为了代码与配置分离

 

https://blog.csdn.net/jianyuerensheng/article/details/51258942

在web.xml文件中进行配置,在配置中设置springmvc-context.xml的路径

 

Web.xml

<servlet></servlet>标签 是用来配置实现serlvet接口的标签

 

 

 

Servlet-name  类名

Servlet-class 类全名 (包括了包名)

 

 

 

Servlet-mapping   servlet类的路径

 

可以看出dispatcher 是spring依赖中的类

DispatcherServlet 是前端接口控制器,所有请求都经过它来统一分发

 

DispatcherServlet 是通过HanderMapping找到Controller的

具体是通过xml注解, @Controller 和 @RequestMapping

 

 

 

sping-mvc.xml文件中主要的工作是:

1.启动注解;

2.扫描controller包注解;

3.静态资源映射;

4.视图解析(defaultViewResolver);

5.文件上传(multipartResolver);

6.返回消息json配置

 

@RequestMapping(“”)与方法绑定时,该类会被实例化并且执行该方法, 接受对应目录

@RequestParam 接受对应的参数

 

application/json:json字符串部分可以用@RequestBody;url中的?后面参数可以用@RequestParam

 

jsp 在线考试系统

https://blog.csdn.net/weixin_44302370/article/details/103480742

 

${pageContext.request.contextPath } jsp取得绝对路径

 

<input type="button" value="测试" onclick="testJson()" /> 通过button来调用testJson()函数

 

<script type="text/javaScript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>

 

   <script type="text/javaScript">

        function testJson() {

            var name = $("#name").val();

            var password = $("#password").val();

            var age = $("#age").val();

            $.ajax({

                //请求路径

                url : "${pageContext.request.contextPath}/testJson",

                //请求类型

                type : "post",

                //data表示发送的数据

                data : JSON.stringify({

                    name : name,

                    password : password,

                    age : age

                }), //定义发送请求的数据格式为JSON字符串

                contentType : "application/json;charset=utf-8",

                //定义回调响应的数据格式为JSON字符串,该属性可以省略

                dataType : "json",

                //成功响应的结果

                success : function(data) {

                    if (data != null) {

                        alert("输入的用户名:" + data.name + ",密码:" + data.password

                                + ", 年龄:" + data.age);

                    }

                }

            });

        }

</script>

 

 

Jsp

<% %> 内添加代码,并且可以与html组合使用,比如可以将html表单放在while循环内,这样就输出多个表单了

Java代码后面带分号

<%= %> 用于java变量转字符串拼接

${} 得到返回ModelAndView 中的值

Java处理json数据

http://c.biancheng.net/spring_mvc/json.html

 

js

{} 是对象类型

$(document).ready(function(){

当 DOM(文档对象模型) 已经加载,并且页面(包括图像)已经完全呈现时,会发生 ready 事件

不然的话jquery 会将函数报

 

@RequestBody注解实现接收http请求的json数据,将json数据转换为java对象进行绑定。

 

springMVC.xml 万能头,我吐了,为啥我没早知道这玩意

https://blog.csdn.net/xiao_shixiong/article/details/102742722

 

使用阿里的fastjson解析工具,非常方便

springMVC 与json交互,将json字符串解析成对象,并且直接返回对象就是返回json给前端,非常方便

http://c.biancheng.net/spring_mvc/json.html

springmvc利用fastjson返回json字符串

https://www.cnblogs.com/peiyangjun/p/8178692.html

 

<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>fastjson</artifactId>

    <version>1.2.62</version>

</dependency>

从前端传来的json字符串,可以被解析成对象,并且不需要是可序列化对象。

但是需要绑定对象实体,并且json的key 与属性名对应,可以是私有属性

 

 

 

如果绑定类少了属性对应的key,不会报错,相应的也会形成的对象也会少相应的属性

 

 

 

 

 

上面是fastjson 将字符串对象json转换为对象的,如果从对象取值,非常麻烦

下面是接收json字符串对象,通过JSONObject得到值的

https://www.cnblogs.com/xujie09/p/8119130.html

@Controller

public class TeacherController {

    @RequestMapping("/score")

    @ResponseBody

    public ModelAndView testJson(@RequestBody String jsonstr) {

        ModelAndView mv = new ModelAndView("ScoreView");//指定视图     //向视图中添加所要展示或使用的内容,将在页面中使用

        JSONObject jsonObject = JSONObject.parseObject(jsonstr);

       

        String t1 = (String) jsonObject.get("t1");//获取属性

        mv.addObject("score",String.valueOf(jsonObject.size()));

        return mv;

    }

   

}

 

size() 获得元素的数量

 

String 对象与 字面常量比较时,要用equals() ,不能用==,因为==是比较地址的

C#用String.Compare(,)

 

我对java的目录真是服了,当前目录竟然不是和java文件同级目录,吐了

File file = new File("a.txt"); //此时a.txt是在与src目录同级的地方

File file = new File(".\\a.txt");//此时a.txt是在与src目录同级的地方 

File file = new File(".\\excle\\a.txt");  与src同级的目录,excle目录下的a.txt

Windows用\\

我累了,当我把它用在tomcat下读取文件时,一直找不到文件,后面一想,既然找不到,那就生成一个吧,结果发现它在文件生成在tomcat顶层目录,java有病吗,不取当前目录你去顶层目录干嘛,靠,我整整调2个多小时的代码

 

吐了

Jxl 在spring4已经不支持了,

 

曙光:使用POI读取EXCEL

https://blog.csdn.net/a327071315/article/details/101951906

https://blog.csdn.net/heshengfu1211/article/details/103451380

java操纵excel文件常用的有jxl和poi两种方式

其中最主要的区别在于jxl不支持.xlsx,而poi支持.xlsx

 

这里介绍的使用poi方式(XSSFWorkbook),实际上poi提供了HSSFWorkbook和XSSFWorkbook两个实现类。区别在于HSSFWorkbook是针对.xls文件,XSSFWorkbook是针对.xslx文件。

和jxl的方式差不多简单

 

绝望到finally

尝试了XSSFWorkbook , 发现不行,当我已经打算放弃时,我看到一篇博客,让我重新燃起了希望

 

 

 

当我尝试着实现HSSFWorkbook , 200!!!!

https://blog.csdn.net/weixin_30375247/article/details/97459001

 

路径问题

 

 

 

当我将windos下的war 移到tomcat时,又出现500了

原因是 我centos7下的tomcat 是docker下的,我目录只挂载了webapps,conf, log; 所以我在centos下创建excel文件是没有用的,因为docker下是没有挂载到该目录的

所以我将excel目录放在了webapps下

 

        //windos下的路径

        //File file = new File(".\\excel\\"+excelFileName+".xls");//创建workbook

        //centos7下的路径

        File file = new File("./webapps/excel/"+excelFileName+".xls");//创建workbook

 

应该是这样,在一个jsp页面中,springMVC只能一个页面(请求)与一个@requestmapping绑定

但是对应js来说,一个页面可以向服务器发送多个请求来得到 响应的数据

 

所以我要把 springMVC controler分为放回页面和数据,以及只返回数据

 

 

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)

 

XMLHttpRequest 对象用于与服务器交互数据

可以在不重新加载页面的情况下向服务器发送请求,得到服务器响应数据,然后更新网页

 

 

 

发现ajax本身就有得到响应数据

            success : function(data,) {

                console.log(data);

                score=data;

                status=true;

            }

 

 

 

 

 

Target:

springMVC和redis数据库进行交互,不将分数存于redis,而是存30 60 90 之间的四个分段

提交后,服务器返回 score字符串,前端得到score,拼接url(${pageContext.request.contextPath}url+score),转到url中动态显示你的分数以及调查问卷分布情况(饼状图)

 

/exam =>> /Teacher发送json数据,返回score,拼接/ScoreView?score=成绩,并直接跳转

 

添加这个@RequestBody 服务器接受的请求一定要带有请求体,不然就会发送 400错误

 

数据可视化

https://echarts.apache.org/examples/zh/editor.html?c=pie-simple

 

我将tomcat与redis都部署在了docker下,所以在tomcat对redis进行访问得到数据库数据时,是在docker的内网

查看docker容器ip地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' redis

 

HSSX 获取excle的数字时是用double获取的

A_Score=cell.getNumericCellValue();

 

 

需要更改的地方:

ExamView.jsp  TeacherControl需要改ip地址

InitTestPaper.java  需要改windos还是liunx的tomcat,因为路径的写法会不一样

 

爱死这篇文章了,在最后给我了help

https://www.cnblogs.com/code1992/p/13686833.html

 

 

 

Ip转发没有打开,所以无法访问docker 镜像

 

 

 

 

Redis未设密码被黑,并注入脚本

Redis.auth(“whataredoing”);

最好禁用config危险命令

 

posted @ 2022-01-04 13:20  binbin_cloud  阅读(122)  评论(0编辑  收藏  举报