【Java Web】Java Web 基础实战

Java Web基本概念

Java Web,是用Java技术来解决相关Web (Web就是在Http协议基础之上,利用浏览器进行访问的网站)互联网领域的技术总和。

Web包括Web服务器Web客户端两部分:

1、 Java在客户端的应用有java applet: Java Applet就是用Java语言编写的小应用程序,可以直接嵌入到网页中,并能够产生特殊的效果,不过使用得很少。

2、 Java在服务器端的应用非常的丰富,比如Servlet, JSP和第三方框架等等。

  • Servlet是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序。

  • JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计。它实现了Html语法中的java展(以<%%>形式) 。

JSP与Servlets一样,是在服务器端执行的。JSP与Servlet在服务端执行的结果通常以HTML文本的格式返回给客户端,因此客户端只要有浏览器就能浏览。

servlet与servlet容器

Java Servlet (Java服务器小程序)是一个基于Java技术的Web组件,运行在服务器端,它由Servlet容器所管理,用于生成动态的内容。

Servlet容器也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分, Servlet没有main方法,不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用Servlet的方法(如doGet()和doPost()) , Servlet容器在Servlet的生命周期内包容和管理Servlet。

在JSP技术推出后,管理和运行Servlet/JSP的容器也称为Web容器

在这里插入图片描述

servlet(服务程序)是干什么的?

浏览器发送一个HTTP请求,HTTP请求由Web容器分配给特定的Servlet进行处理,Servlet的本质是一个Java对象,这个对象拥有一系列的方法来处理HTTP请求。常见的方法有doGet(),doPost()等。

Web容器中包含了多个Servlet,特定的HTTP请求该由哪一个Servlet来处理是由Web容器中的web.xml来决定的。

Servlet 本质就是javax.servlet包下的一个接口,广义上来说包含其子接口与实现类 ,像我们自己写的什么BaseServlet,LoginServlet;SpringMVC的Dispatcherservlet;Tomcat的HttpServlet都是Servlet。

servlet 的工作原理

工作原理就是反射+回调。目前所有的MVC框架的Controller基本都是这么个模式。

Servlet的执行是其容器如Tomcat通过web.xml的配置反射出Servlet对象后回调其service方法。

web服务器习惯处理静态页面,所以需要一个程序来帮忙处理动态请求(如当前时间)。Web服务器程序会将动态请求转发给帮助程序,帮助程序处理后,返回处理后的静态结果给web服务器程序。这样就避免了web服务器程序处理动态页面。Servlet的本质是一个帮助程序

JSP本质上就是Servlet,Web服务器把每个被访问的JSP文件先翻译成对应的Servlet,然后再编译运行。

  • Servlet 必须在Web Server这个容器下运行 ;

  • Servlet具有平台独立性,Java Servlets are 100% pure Java;

  • Servlet可以直接与Web服务程序对话,Servlet之间也可以共享数据。

Servlet的工作流程

  • 客户端发送请求至服务器端
  • 服务器将请求信息发送至 Servlet
  • Servlet 读取客户端发送的数据,获取客户请求(request)中所包含的信息产生响应结果,并将结果包含到一个文件中,比如HTML文件中设置HTTP响应参数,比如告诉浏览器,文件类型为HTML。并将其传给服务器。(响应内容动态生成,通常取决于客户端的请求)
  • 服务器将响应(文件)返回给客户端

在这里插入图片描述

RestTemplate

介绍

传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。

Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端比如 Android或者第三方服务商都是使用 RestTemplate 请求 restful 服务

简单使用方法

定义一个简单的restful接口

@RestController
public class TestController
{
    @RequestMapping(value = "testPost", method = RequestMethod.POST)
    public ResponseBean testPost(@RequestBody RequestBean requestBean)
    {
        ResponseBean responseBean = new ResponseBean();
        responseBean.setRetCode("200");
        responseBean.setRetMsg("success");
        return responseBean;
    }
}

使用RestTemplate访问该服务


        //请求地址
        String url = "http://localhost:8080/testPost";
        //入参
        RequestBean requestBean = new RequestBean();
        requestBean.setTest1("1");
        requestBean.setTest2("2");
        requestBean.setTest3("3");

        RestTemplate restTemplate = new RestTemplate();
        ResponseBean responseBean = restTemplate.postForObject(url, requestBean, ResponseBean.class);

从这个例子可以看出,使用restTemplate访问restful接口非常的简单粗暴无脑。(url、requestMap、ResponseBean.class)这三个参数分别代表 请求地址、请求参数、HTTP响应转换被转换成的对象类型。

RestTemplate方法的名称遵循命名约定,第一部分指出正在调用什么HTTP方法,第二部分指示返回的内容。本例中调用了restTemplate.postForObject方法,post指调用了HTTP的post方法,Object指将HTTP响应转换为您选择的对象类型。

具体可参考:
restTemplate的介绍和使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值