10-16/10-17 JavaWeb入门/servlet

JavaWeb

现实生活中的互联网项目都是javaWeb项目, 包含网络, 多线程, 展示: HTML等其他的前端技术, 界面窗体展示(Swing包,AWT包 窗体), C#,

JAVAWeb架构:(面试重点:要求记忆)
  • B/S: 浏览器/服务器

    优点: 以浏览器作为客户端, 使用这个软件, 用户不需要下载客户端, 程序更新,不需要更新客户端

    缺点: 通信协议固定: https(http+安全策略) http, 安全性相对比较低, 一直改善 (javaWeb大部分是B/S)

  • C/S 客户端/服务器: 客户端,服务器都是软件提供商开发的, 用户需要下载客户端, 客户端更新, 用户也需要更新客户端

    优点: 安全性高, 通信协议自定义, 窃取数据难度加大

资源

服务器存放的文件都称为资源, 代码,js,css,html,图片, 视频,音频, txt….

  • 静态资源

  • 动态资源

image-20231016092303803

资源访问: URL

URL组成部分:

协议(http(开发阶段)/https)://服务器ip:端口/资源路径

服务器ip:

  1. 直接写真实ip

  2. 如果是本地访问, 真实ip, localhost, 127.0.0.1

  3. 如果是远程, 买/租域名,来绑定服务器ip, 通过域名访问

端口:

http通信协议默认端口: 80

https通信协议默认端口: 443

web服务器

硬件服务器: 类似一台电脑

软件服务器: 程序(发布项目, 接收请求, 响应)

web软件服务器:

  • Tomcat(Apache):Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开源的,免费的 学习

  • JBoss(JBOSS):大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

  • Weblogic(Orcale):大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

  • Websphere(IBM):IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

tomcat的使用 (软件)

  1. 下载: apache官网下载 Apache Tomcat® - Welcome!

  1. 安装

    免安装版, 解压就可以使用, tomcat目录不要包含中文

启动tomcat: 在命令行的方式(了解),

在启动Tomcat之前,我们必须要配置环境变量 :

  • JAVA_HOME:必须先配置JAVA_HOME,因为Tomcat启动需要使用JDK;

  • CATALANA_HOME:如果是安装版,那么还需要配置这个变量,这个变量用来指定Tomcat的安装路径,例如:D: tomcat apache-tomcat-8.5.59。

启动:进入%CATALANA_HOME% bin目录,找到startup.bat,双击即可;

关闭:进入%CATALANA_HOME% bin目录,找到shutdown.bat,双击即可;

idea 整合tomcat 重点

idea2020之上, web项目删除了, 只能使用maven的方式

image-20231016101023299

Servlet

接收前端请求, 处理请求, 响应结果

 创建Servlet的方式

  1. 实现javax.servlet.Servlet接口

  2. 继承javax.servlet.GenericServlet抽象类

  3. 继承javax.servlet.http.HttpServlet抽象类(实际开发都使用该方式), 专门处理Http请求

Servlet类编写由程序员完成, Servlet对象创建, 方法的调用 不需要程序员手动创建与调用

Servlet对象创建由web服务器创建(tomcat),保存tomcat容器中

调用servlet的方法, 通过访问url调用

Servlet开发

1.编写一个类实现Servlet接口,重写抽象方法 

package com.fs.servlet;

import javax.servlet.*;
import java.io.IOException;

/**
* Servlet创建方式1
*  实现javax.servlet.Servlet接口
*  service 服务
*  servlet
*/
public class AServlet implements Servlet {
   /**
    * 生命周期方法  由tomcat调用
    *  创建该Servlet对象, 之后马上调用    初始化方法, 进行初始化操作
    * @param servletConfig
    * @throws ServletException
    */
   @Override
   public void init(ServletConfig servletConfig) throws ServletException {
       System.out.println("AServlet~创建成功了");
   }
   /**
    * 生命周期方法  由tomcat调用
    *  服务方法, 当前端发送请求该Servlet的url, 该方法就调用
    *  接收前端请求, 处理请求, 响应结果
    *  每请求一次,调用一次
    * @param servletRequest
    * @param servletResponse
    * @throws ServletException
    */
   @Override
   public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
       System.out.println("AServlet为您服务....");
   }

   /**
    * 生命周期方法  由tomcat调用
    *  该AServlet对象被销毁之前调用该方法  释放资源
    * @throws ServletException
    */
   @Override
   public void destroy() {
       System.out.println("AServlet正在死亡....");
   }

   /**
    * 获取ServletConfig对象(Servlet的配置),
    * @return
    */
   @Override
   public ServletConfig getServletConfig() {
       return null;
   }


   /**
    * 获取ServletInfo信息(Servlet描述信息)
    * 没有什么意义
    * @return
    */
   @Override
   public String getServletInfo() {
       return "AServlet是一个快乐的Servlet";
   }


}
2.

  1. 在web.xml文件中配置Servlet, 后期使用注解替换

绑定一个能够访问它的url

         <servlet>
          <!--servlet-name: 名字, 一般就是类名-->
          <servlet-name>AServlet</servlet-name>
          <!--servlet-class: 对应Servlet类, 全限定名-->
          <servlet-class>com.fs.servlet.AServlet</servlet-class>
      </servlet>

      <servlet-mapping>
          <servlet-name>AServlet</servlet-name>
          <!--绑定url 一般使用 /开头-->
          <url-pattern>/AServlet</url-pattern>
      </servlet-mapping>

提交方式:

  1. get请求: 超链接, 浏览器地址栏输入, form的method=“get”

请求参数通过url传递 , 安全性低

get请求无法提交文件数据

get请求请求参数大小限制

  1. post请求 form的method=“post”

请求参数通过请求体, url看不到, 安全性高

post请求,传递文件

  1. put请求

  2. delete请求

Http状态码:

100~500

200: 成功

404: 资源不存在

405: 方法不支持

500: 服务器内部出错, 后台抛出异常

 HttpServlet执行流程:

Servlet细节

Servlet中包含其他接口

ServletConfig Servlet的配置信息

  1. 获取Servlet的初始化参数, 固定参数, 在Servlet配置的时候,进行参数配置

  <servlet>
          <!--servlet-name: 名字, 一般就是类名-->
          <servlet-name>AServlet</servlet-name>
          <!--servlet-class: 对应Servlet类, 全限定名-->
          <servlet-class>com.fs.servlet.AServlet</servlet-class>

          <!--初始化参数-->
          <init-param>
              <param-name>name</param-name>
              <param-value>AServlet</param-value>
          </init-param>
          <init-param>
              <param-name>encoding</param-name>
              <param-value>UTF-8</param-value>
          </init-param>
      </servlet>

  1. 获取ServletContext对象

        getServletContext()

  1. ServletContext: 域对象, Servlet的上下文, Servlet运行环境 当前Servlet运行项目

一个Tomcat部署多个项目, 每一个项目在tomcat启动的时候, 产生对应的项目的ServletContext

ServletContext: 一个项目只能有一个, tomcat启动的时候, 就会创建该项目ServletContext对象,

ServletContext销毁在Tomcat关闭的时候

                

ServletContext 全局的存放数据容器, javaWeb中,把这个容器称为 域对象:

ServletContext对象称为: Application域, 全局共享的, 任何客户端,任何请求,访问任何资源, 都可以共享同一个ServletContext对象的数据

域对象: 动态资源之间的数据传递, 一定有下面几个:

  • 存数据

setAttribute(String name, Object value);

name唯一的, 如果调用setAttribute()方法存数据, key如果存在, 覆盖value

  • 取数据

Object getAttribute(String name) 如果name不存在,返回null

  • 删除数据

removeAttribute(String name)

  • 获取所有的属性名

Enumeration<String> getAttributeNames()

JavaWeb中有四大域:

  • page域: 当前某个动态资源有效

  • request域: 在同一次请求内有效

  • session域: 在同一次会话中有效, 同一次会话,包含N个请求, 分用户

  • Application域: 全局共享

案例: 统计网站的访问量

访问网站任何动态资源, 访问量+ 1

访问量数据, 使用容器保存, 域对象, 使用Application域存放数据

得到ServletContext对象

  • ServletConfig接口: getServletContext()

  • 如果继承HttpServlet, HttpServlet实现 ServletConfig接口, this.getServletContext()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb是一种用Java语言来开发动态网页的技术栈。它包括了Servlet和JSP两个主要的技术组件。JavaWeb的开发速度很快,功能也很强大,并且具有跨平台的特点。 JavaWeb可以用来开发静态网页和动态网页。静态网页是指提供给所有人看的数据始终不会发生变化,而动态网页是指提供给所有人看的数据会随着时间和地点的不同而发生变化。大部分网站都属于动态网页。在Java中,动态网页开发的技术统称为JavaWebJavaWeb采用B/S架构,即浏览器和服务器之间的交互。相比之下,C/S架构是客户端和服务器之间的交互。JavaWeb被广泛使用,因为它可以处理高并发、高性能和高可用性的问题,并且语法类似于ASP。 如果你想快速入门JavaWeb,你可以首先学习Servlet和JSP的基本语法和用法。ServletJavaWeb中的核心组件,用于处理请求和响应。JSP则是一种在HTML中嵌入Java代码的技术,可以方便地生成动态内容。你可以通过学习这两个组件的基础知识,了解JavaWeb的基本工作原理和开发流程。然后,你可以进一步学习JavaWeb框架,如Spring MVC和Struts,以提高开发效率和代码质量。还可以学习数据库连接和操作、前端技术等相关知识,以完善你的JavaWeb开发技能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [JavaWeb入门](https://blog.csdn.net/Massimo__JAVA/article/details/124496596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值