发表于: 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,tomcatjetty

性能比较

JettyTomcat性能方面差异不大

Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。

Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。

Jetty默认采用NIO结束在处理I/O请求上更占优势,在处理静态资源时,性能较高

少数非常繁忙;Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。

Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。

2tomcatresin的区别

特征

Tomcat

Resin

用户数

可参考文档

部署环境启动

臃肿

人性化

开发环境热部署支持

较好,可根据需要配置。修改Jspjava文件时,可配置是否重启服务

较差,更新classjsp文件,系统都会自动重新部署,并重启,配置了Session会话时开发比较麻烦

生产环境下热部署支持

一般。更新配置文件时,必须手动重启。更新其他文件时,大部分不用重启。但一次性更新太多文件时,经常会造成Tomcat重启失败。

较好。更新配置文件时,Resin会自动重启。

集群部署

支持

支持


部署是否需要jdk

tomcat,打不开

resin,无法生产work文件,无法访问网页

jetty,无影响


二,今天问题:

安装Resin的时候报错,按照报错信息,原来我的

xml/ns/javaee

Resin不能解析。改变web.xmlweb-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



返回列表 返回列表
评论

    分享到