Servlet

概念:

一、通用网关接口(CGI):接收客户端浏览器发送的请求,主要用来处理网页提交的数据,比如form提交的数据,比如ajax的一些数据。不是专门为网页编程设计的,c,java,vb都可以编写

二、什么是servlet

a)servlet是一个CGI程序,使用java语言开发

b)servlet技术是使用java servlet应用程序设计接口(API)及相关类和方法的jaava程序。java script API定义servlet和java服务器之间的一个标准接口,这使得servlet具有了跨服务器平台的特性

C)servlet通过创建一个框架来扩展服务器的功能,以提供在web上进行请求和响应的服务

d)当客户端发送请求到服务器时,服务器可以将请求信息转发给servlet,并使用servlet建立返回给客户端的响应(有跳转的重定向转发,无跳转的ajax)当启动web服务器或客户端第一次向服务器提出请求时,可以自动装入servlet,装入后,servlet将继续进行运行直到其他客户机发出请求,servlet给出响应为止。

三、servlet的作用

a)创建并返回一个包含基于客户端请求性质的动态内容的完整的HTML页面

b)创建可嵌入到现有HTML页面中的一部分HTML页面(HTML片段)

c)与其他服务器资源(包括数据库和基于java的应用程序)进行通信

d)使用多个服务端进行连接,接收多个客户端的输入,并将结果广播到多个客户端上。例如,Servlet可以为多参与者的游戏服务器服务

e)对特殊的处理采用MIME类型过滤数据,例如图像转换或者Word文档转换等

f)将定制的处理提供给所有服务器的标准例行程序。例如,Servlet可以修改如何认值用户等

四、servlet的生命周期

Servlet的生命周期:装载、初始化(创建、初始化)、服务和销毁
1.装载:在服务器启动时装载web.xml中配置的所有Servlet,所以tomcat也叫Servlet容器
2.初始化:第一次请求当前ServletURL时执行,并只执行一次
3.服务:每一次请求都会执行的内容,调用此方法时会传递request和response对象
4.销毁:服务器关闭时,执行的操作,一般销毁进行一些关闭操作

五、servlet的技术特点

a)采用servlet技术,服务器可以完全授权对本地资源的访问(如数据库),并且servlet自身将会控制外部用户的访问数量及访问性质

b)servlet可以是其他服务的客户端程序。例如,它们可以是用于分布式开发的应用系统中

c)可以从本地硬盘,或者通过网络远程控制硬盘激活servlet

d)servlet可被链接(chain),及一个servlet可以调用激活另一个或一系列servlet

e)采用servlet tag即使,可以在web页面中动态调用

f)servlet api 与协议无关

六、servlet的技术实现

三种创建方式 xml和注解

七、servlet的调用方式

八、Servlet三大域对象:

ServletContext:范围最大,应用范围!

HttpSession :会话范围!

HttpServletRequest:请求范围!

Servlet的实现方法
第一种servlet实现方法

i>在servlet包下创建一个servletFirst类

ii>实现Servlet接口

package servlet;

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

//Servlet:Service Applet
/*
其实servlet就是jsp翻译之后的那个类
但是。。。
Servlet是一个类,而页面之间的跳转通过路径(Url)来走的
它就需要具备类的基本特质,而且还需绑定一个网址(url)来调用这个类
*/
//第一种Servlet的实现方式
public class FirstServlet implements Servlet {
    //第一次请求时执行
    public FirstServlet(){
        System.out.println("First构造器");
    }
    //初始化方法
    //第一次请求时执行
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("firstInit");
    }

    //获取config对象方法
    public ServletConfig getServletConfig() {
        return null;
    }

   //关键方法,服务方法
    //请求一次,执行一次
    public void service(ServletRequest req, ServletResponse resp)
            throws ServletException, IOException {
        System.out.println("firstService");

    }

    //获取到servlet信息方法
    public String getServletInfo() {
        return "first";
    }

   //销毁方法
    //服务器关闭时执行
    public void destroy() {
        System.out.println("firstDestroy");
    }
}

在web.xml下进行配置

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!-- 配置servlet:给每个servlet起一个URL-->
  <servlet>
    <servlet-name>first</servlet-name><!--名字 -->
    <servlet-class>servlet.FirstServlet</servlet-class>  <!-- 包下的类-->
  </servlet>
  <servlet-mapping>
    <servlet-name>first</servlet-name>   <!-- 进行绑定,将类与url绑定-->
    <url-pattern>/first</url-pattern>   <!--  /代表根目录,first网络路径,通过/first网址找到servlet.FirstServlet的类-->
  </servlet-mapping>
</web-app>
第二种servlet的实现方法:

继承Genericservlet类

package servlet;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;

//第二种Servlet实现方式
public class SecondServlet extends GenericServlet {
    @Override
    public void service(ServletRequest req, ServletResponse resp)
            throws ServletException, IOException {
        System.out.println("第二种servlet的实现方法");

    }
}

在web.xml下进行配置

注意:servlet写在一起,servler-mapping写在一起

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!-- 配置servlet:给每个servlet起一个URL-->
  <servlet>
    <servlet-name>first</servlet-name><!--名字 -->
    <servlet-class>servlet.FirstServlet</servlet-class>  <!-- 包下的类-->
  </servlet>
  <servlet>
    <servlet-name>second</servlet-name><!--名字 -->
    <servlet-class>servlet.SecondServlet</servlet-class>  <!-- 包下的类-->
  </servlet>


  <servlet-mapping>
    <servlet-name>first</servlet-name>   <!-- 进行绑定,将类与url绑定-->
    <url-pattern>/first</url-pattern>   <!--  /代表根目录,first网络路径,通过/first网址找到servlet.FirstServlet的类-->
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>second</servlet-name>   <!-- 进行绑定,将类与url绑定-->
    <url-pattern>/second</url-pattern>   <!--  /代表根目录,first网络路径,通过/first网址找到servlet.FirstServlet的类-->
  </servlet-mapping>
</web-app>
第三种servlet的实现方法:

继承HttpServlet类

package servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//第三种,最常用的servlet实现方式
public class ThreeServlet extends HttpServlet {

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("servlet的post");
    }

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("servlet的get");
    }
}

在web.xml下进行配置

Servlet的生命周期
Servlet的生命周期:装载、初始化(创建、初始化)、服务和销毁
1.装载:在服务器启动时装载web.xml中配置的所有Servlet,所以tomcat也叫Servlet容器
2.初始化:第一次请求当前ServletURL时执行,并只执行一次
3.服务:每一次请求都会执行的内容,调用此方法时会传递request和response对象
4.销毁:服务器关闭时,执行的操作,一般销毁进行一些关闭操作
标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是一个基于51系列单片机(一种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是一款集成三轴加速度计和三轴陀螺仪的六自由度传感器,广泛应用于运动控制和姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计和陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机和MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性和角速度。文件名“51-DMP-NET”可能表示这是一个与51单片机及DMP相关的网络资源或代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具或IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机与MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线和控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式和数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数或欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格
MathorCup高校数学建模挑战赛是一项旨在提升学生数学应用、创新和团队协作能力的年度竞赛。参赛团队需在规定时间内解决实际问题,运用数学建模方法进行分析并提出解决方案。2021年第十一届比赛的D题就是一个典型例子。 MATLAB是解决这类问题的常用工具。它是一款强大的数值计算和编程软件,广泛应用于数学建模、数据分析和科学计算。MATLAB拥有丰富的函数库,涵盖线性代数、统计分析、优化算法、信号处理等多种数学操作,方便参赛者构建模型和实现算法。 在提供的文件列表中,有几个关键文件: d题论文(1).docx:这可能是参赛队伍对D题的解答报告,详细记录了他们对问题的理解、建模过程、求解方法和结果分析。 D_1.m、ratio.m、importfile.m、Untitled.m、changf.m、pailiezuhe.m、huitu.m:这些是MATLAB源代码文件,每个文件可能对应一个特定的计算步骤或功能。例如: D_1.m 可能是主要的建模代码; ratio.m 可能用于计算某种比例或比率; importfile.m 可能用于导入数据; Untitled.m 可能是未命名的脚本,包含临时或测试代码; changf.m 可能涉及函数变换; pailiezuhe.m 可能与矩阵的排列组合相关; huitu.m 可能用于绘制回路图或流程图。 matlab111.mat:这是一个MATLAB数据文件,存储了变量或矩阵等数据,可能用于后续计算或分析。 D-date.mat:这个文件可能包含与D题相关的特定日期数据,或是模拟过程中用到的时间序列数据。 从这些文件可以推测,参赛队伍可能利用MATLAB完成了数据预处理、模型构建、数值模拟和结果可视化等一系列工作。然而,具体的建模细节和解决方案需要查看解压后的文件内容才能深入了解。 在数学建模过程中,团队需深入理解问题本质,选择合适的数学模
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值