JavaWeb(华清远见)

JavaWeb(华清远见)

JavaWeb,是通过使用Java技术来解决相关web互联网领域的技术总和。web包括web服务器和web客户端两部分。

web开发相关知识:
  • web,表示网页的意思,用于表示Internet主机上供外界访问的资源
  • Internet上供外界访问的web资源分为:
    • 静态web资源(如html页面):值web页面中供人们浏览的数据始终是不变的。
    • 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间访问web页面,浏览的数据都不同。
  • 静态web资源开发技术:jsp/Servlet、ASP、PHP等

web发展:静态和动态

静态web:

在这里插入图片描述

在静态WEB程序中,客户端使用WEB浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给WEB服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过WEB服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效果。

静态WEB中存在以下几个缺点:
  • web页面中的内容无法动态更新,所有的用户每时每刻看见的内容和最终效果都是一样的。
    • 为了可以让静态的WEB的显示更加好看,可以加入了JavaScript以完成一些页面上的显示特效,但是这些特效都是在客户端上借助于浏览器展现给用户的,所以在服务器上本身并没有任何的变化。实现静态WEB客户端动态效果的手段:
      • JavaScript(在实际的开发中JavaScript使用得最多。)
      • VBScript
  • 静态WEB无法连接数据库,无法实现和用户的交互。
动态WEB

在这里插入图片描述

动态WEB中,程序依然使用客户端和服务端,客户端依然使用浏览器(IE、FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Request),现在的所有请求都先经过一个WEB Server Plugin(服务器插件)来处理,此插件用于区分是请求的是静态资源(.htm或者是.htm)还是动态资源。

如果WEB Server Plugin发现客户端请求的是静态资源(.htm或者是.htm),则将请求直接转交给WEB服务器,之后WEB服务器从文件系统中取出内容,发送回客户端浏览器进行解析执行。

如果WEB Server Plugin发现客户端请求的是动态资源(.jsp、.asp/.aspx、.php),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。

web应用程序:

WEB应用程序指供浏览器访问的程序,通常也简称为web应用。例如a.html 、b.html……多个web资源,这多个web资源用于对外提供服务,此时应把这多个web资源放在一个目录中,以组成一个web应用(或web应用程序)

一个web应用由多个静态web资源和动态web资源组成,如:html、css、js文件,Jsp文件、java程序、支持jar包、配置文件等等。

虚似目录的映射:Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射

Servlet

Servlet是sun公司制定的一种用于扩展web服务器功能的组件规范,包含与Web应用相关的一系列接口,是Web应用实现方式的宏观解决方案。而具体的Servlet容器负责提供标准的实现。

  • web服务器通常只能处理静态的资源(html , css , img , js…) , 为了解决一些动态的处理数据 ,就需要对web服务器的功能进行扩展,servlet就是用于处理动态数据的组件规范。
  • 组件: 符号一定规范 ,完成部分功能的软件模块。这些软件模块需要放在容器中进行运行。比如:servlet , jsp就属于组件, tomcat就属于容器。 servlet必须放在tomcat容器中进行运行。
    • 必须先启动tomcat, 然后才能访问到servlet , jsp.
  • 容器:符号一定规范 , 能够运行组件的一种软件。 比如:tomcat …
  • servlet规范: 使用servlet的时候,自定义的类是HttpServlet的子类 ,那么就是符合servlet的规范。

Servlet作为服务器端的一个组件,它的本意是“服务器端的小程序”。Servlet的实例对象由Servlet容器负责创建;Servlet的方法由容器在特定情况下调用;Servlet容器会在Web应用卸载时销毁Servlet对象的实例。

简单可以理解为 Servlet就是用来处理客户端的请求的.

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

Servlet开发步骤
  • 新建符合java web项目的工程

  • servlet 类 继承 HttpServlet

    • 重写service方法
    • service(HttpServletRequest request , HttpServletResponse response)
      • HttpServletRequest(请求) : 该接口是ServletRequest接口的子接口,封装了HTTP请求的相关信息,由Servlet容器创建其实现类对象并传入service(ServletRequest req, ServletResponse res)方法中。
      • HttpServletResponse (响应):该接口是ServletResponse接口的子接口,封装了HTTP响应的相关信息,由Servlet容器创建其实现类对象并传入service(ServletRequest req, ServletResponse res)方法中。
  • java web工程中的web.xml文件

    • web.xml 的文件名不能修改(tomcat找web.xml)
    • 将java的类 和 浏览器访问的地址做一个映射
    • 浏览器没法办法直接访问java类中的方法 , 所以需要java类映射到一个浏览器能访问的url地址。
  • 打包(idea帮助完成)

    • 把web项目运行需要的文件内容按指定文件结构保存。
  • 部署(在idea中可以完成)

    • 把打包好的web程序放到tomcat容器中,然后运行tomcat容器的时候,才能访问我们的web程序。
  • 启动容器, 然后可以通过浏览器访问访问web程序。

Http协议和Servlet的执行

Http协议

在这里插入图片描述

Servlet的执行
在这里插入图片描述

浏览器的缓存

在这里插入图片描述

servlet的url映射方式

tomcat 优先查找servlet ,如果没有符合的servlet ,那么就找静态资源,如果也没有静态资源被找到,
就404.

  • /life : 精确地址 ,没有扩展名, 以/开始
  • /life.do: 精确地址, 有扩展名, 以 / 开始
  • *.do , 通配符 + 扩展名, 所有以.do结尾的请求,都会被拦截, 不能以/开始。
  • / , 拦截所有请求, 但不拦截jsp*
  • / *, 拦截所有请求
servlet的生命周期

在这里插入图片描述

  • Servlet的生命周期为init->service->doGet/doPost->destroy
  • init只在容器启动或是第一次访问servlet时调用,destroy在关闭容器时调用
  • Servlet每次被访问的时候,反复执行service(doGet/doPost)
Servlet的参数
  • Servlet级的参数

    <servlet>
        <servlet-name>arg</servlet-name>
        <servlet-class>action.ArgusServlet</servlet-class>
    <!--    初始化参数的配置: servlet标签内部配置的参数,只在当前servlet有效。-->
        <init-param>
          <param-name>dbname</param-name>
          <param-value>empdb</param-value>
        </init-param>
        <init-param>
          <param-name>dbtable</param-name>
          <param-value>emp</param-value>
        </init-param>
      </servlet>
    
     @Override
      protected void service(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
         
        // --- 从web.xml中,servlet中配置的参数,获取到这些参数,然后在程序中使用。
        System.out.println(this.getInitParameter("dbname"));
        System.out.println(this.getInitParameter("dbtable"));
     }
    
  • conext级参数

    <!--  全局参数(context级别) , 任何servlet中 都可以使用-->
      <context-param>
        <param-name>count</param-name>
        <param-value>100</param-value>
      </context-param>
    
    @Override
      protected void service(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
         
     
        ServletContext servletContext = this.getServletContext();
        String count = servletContext.getInitParameter("count");
        System.out.println("count:" + count);
     }
    
tomcat 服务器

服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息;

java web项目运行,需要运行在支持java web项目的服务器上,常见的java web服务器:

  • tomcat
  • JBoss
  • Resin
  • Jetty

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Maven-Repository(存储库)

Maven Repository/存储库,顾名思义是一个存储JAR文件的仓库,Maven根据项目中pom.xml文件中提供的jar包依赖信息,从存储库中查找并获取需要的jar包,Maven搜索依赖项时,会按照:本地库、中央库和远程库的顺序进行。

Maven Repository有3种类型:

  • Local Repository – 本地库
  • Central Repository – 中央库
  • Remote Repository – 远程库

bmi(身体质量指数):

​ Servlet:

  • import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    public class BmiServlet extends HttpServlet {
         
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
         
            //1、设置中文编码
            resp.setContentType("text/html;charset=UTF-8");
            req.setCharacterEncoding("UTF-8");
            //2、获取参数
            String weight = req.getParameter("weight");
            String high = req.getParamet
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值