发表于: 2021-04-19 18:13:17
3 1157
一,今天完成的事情
任务二5-7
1,补充昨天我json-taglib能使用是因为pom.xml中加入了
<dependency>
<groupId>atg.taglib.json</groupId>
<artifactId>json-taglib</artifactId>
<version>0.4.1</version>
</dependency>
我这里可以正常通过maven管理下载这个dependency
2,用Postman或者dhc测试接口文档,返回数据是否成功。
不用写Form 表单,使用 Postman。不仅可以调试简单的css、html、脚本等简单的网页基本信息,它还可以发送几乎所有类型的HTTP请求。
展示不同输入,输出方式。
测试删除前id 10的情况
测试用代码
//@RequestParam gets id。获取查询参数。即url?id=这种形式. return restful
@RequestMapping(value = "/delete", method = RequestMethod.DELETE)
@ResponseBody
public Map<String, Object> deleteStudent(@RequestParam(value = "id", defaultValue="0") long id) {
System.out.println( id );
if (null == studentService.getStudent( id )) {
return Restful.set(400, messageSource.getMessage("id.null", null, null));
} else {
studentService.deleteStudent( id );
return Restful.set(200, "deletedSuccessfully");
}
}
Postman删除测试结果。截图第一行按照代码,输入id,基本类型。一般我不习惯用这个annotation
@RequestParam
如果用了GET等等,不是SpringMVC REST指定的DELETE,405
使用DELETE,成功
add用
@RequestBody
接受。用
@ResponseBody
返回
成功POST
查看目前状态。id 10在DELETE被删除。通过POST,不带id自增增加了3个条目
测试PUT更改
//@ResponseBody返回数据。@RequestBody接收
@RequestMapping(value = "/update", method = RequestMethod.PUT)
@ResponseBody
public Map<String, Object> updateStudent(@RequestBody Student student) {
//student cannot be null
if (null == studentService.getStudent(student.getId())) {
return Restful.set(400, messageSource.getMessage("id.null", null, null));
} else {
studentService.updateStudentById(student.getId());
return Restful.set(200, "updated successfully", student);
}
}
更正正常,PUT
GET的也正常
//使用model来保存数据到前台.@PathVariable获取路径参数。即url/{id}这种形式
@RequestMapping (value = "/getbyid/{id}", method = RequestMethod.GET)
public String getStudentById(Model model, @PathVariable(name = "id") long id){
Student student = studentService.getStudent( id );
model.addAttribute("student", student);
return "model";
}
平时我一般不用@PathVariable。
测试GET成功
之前的json tag-lib还有用过,交互数据。
// request来保存数据
@RequestMapping("/jsontaglib")
public String testJsonTaglib(HttpServletRequest request, HttpServletResponse response)
3,在服务器开发环境部署Resin,用"document-directory"的方式配置好War包,用浏览器访问任意查询接口,判断是否可以正确返回数据
在Linux服务器部署Resin
制造文件夹,到文件夹下
官方网站下载 .tar.gz,上传
安装环境
gcc c++安装好,把文件夹解压
找到java环境变量
vim /etc/profile,编辑成如下
source /etc/profile
报错。
我发现我的openJDK中没有上图的第二行的include开始的文件,所以换装JDK。目前的JDK肯定达不到Resin的要求。还是到JDK现在运营的Oracle去下载,这次我选择1.0.8系列版本安装。
移除resin
rm -rf /目录名,我这次是resin包解压后上面浅蓝色的那个目录
下载.tar.gz包,解压,
vim /etc/profile,编辑成如下
#set java environment
JAVA_HOME=/usr/local/java/jdk1.8.0_281
JRE_HOME=$JAVA_HOME
CLASS_PATH=.:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
source /etc/profile
再安装Resin
同目录下
make
make install
查看目录
打开文件配置,/usr/local/resin/conf
在host - web-app加入<web-app id="/ssm_student" document-directory="/usr/local/jarwar/ssm_student" archive-path="/usr/local/jarwar/ssm_student.war"/>
上面的id就是访问的时候希望用的名字,和roo-directory区分,不冲突,默认使用/就可以访问
设置8070端口,避免3个服务器冲突。app.http
开启云服务器端口
启动Resin
访问成功
把ssm_student.war放到我放包的地方
成功访问
4,用Tomcat,Jetty分别重复以上的部署方式,弄清楚三者之间的差别
4-1,Linux配置TOMCAT
创建文件夹,换位置到文件夹
Apache下载包,使用
解压
查看8080端口是否被占用
解压后到bin,启动成功。
ps -ef查看启动情况
访问有tomcat
把war包放入tomcat的webapps中
网页访问成功
tomcat我没改文件,默认使用8080端口,防火墙任务一的时候我验证没开,至今没开,所有云服务器都需要设置8080端口。
4-2,Linux配置Jetty
jetty下载包
文件夹
编辑端口,不和其它2个重复
改成8090
启动jetty
可以访问
把包放在合适位置
启动成功
可以成功访问8090jetty
jetty的包。可以在合适的地方建立合适的目录,不如/work,让war包解压,不被CentOS定期清理/tmp
4-3,Tomcat,Jetty, Resin区别
1,tomcat和jetty:
性能比较
Jetty和Tomcat性能方面差异不大
Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。
Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。
Jetty默认采用NIO结束在处理I/O请求上更占优势,在处理静态资源时,性能较高
少数非常繁忙;Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。
Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。
2,tomcat和resin的区别
特征 | Tomcat | Resin |
用户数 | 多 | 少 |
可参考文档 | 多 | 少 |
部署环境启动 | 臃肿 | 人性化 |
开发环境热部署支持 | 较好,可根据需要配置。修改Jsp或java文件时,可配置是否重启服务 | 较差,更新class及jsp文件,系统都会自动重新部署,并重启,配置了Session会话时开发比较麻烦 |
生产环境下热部署支持 | 一般。更新配置文件时,必须手动重启。更新其他文件时,大部分不用重启。但一次性更新太多文件时,经常会造成Tomcat重启失败。 | 较好。更新配置文件时,Resin会自动重启。 |
集群部署 | 支持 | 支持 |
部署是否需要jdk
tomcat,打不开
resin,无法生产work文件,无法访问网页
jetty,无影响
二,今天问题:
安装Resin的时候报错,按照报错信息,原来我的
xml/ns/javaee
Resin不能解析。改变web.xml的web-app描述成
http://java.sun.com
的。
Resin能接受。
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
三,今天的收获:
Postman测试。Resin,Tomcat,Jetty在linux服务器上部署,访问。
代码很快乐。
四,明天的计划:
任务2,条目8-11
评论