Servlet

本文详细介绍了Servlet的概念、实现方法及其生命周期,对比了Servlet与JSP的区别,并提供了配置文件的示例。

Servlet的定义:

Servlet(Server Applet)-全称Java Servlet,是用Java编写的服务器端程序。 其主要功能在于交互式地浏览和修改数据,生成动态Web内容。 Servlet是100%运行在服务器端,为客户端请求作出响应的纯java应用程序。


servlet是一个特殊的Java类,它没有Main方法,它的创建和销毁都是由servlet容器(tomcat等)来管理
servlet和HTTP协议紧密联系

实现方法:

写一个java类,让该类继承自HTTPServlet类,并实现doGet和doPost方法。

主要作用:

1.实现web相应式交互
2.提供http协议接口
3.可以做MVC模式中的控制层
4.生命周期:

  • Servlet 通过调用 init () 方法进行初始化。
  • Servlet 调用 service() 方法来处理客户端的请求。
  • Servlet 通过调用 destroy() 方法终止(结束)。
    最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的
    @Override
    public void init() throws ServletException {
        super.init();
        System.out.println("----init------");

    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.service(req, resp);
    }

    @Override
    public void destroy() {
        super.destroy();
        System.out.println("----destroy------");
    }

/*在HttpServlet的service方法中,更加请求方法类型不同,使用了不同的函数处理
(doPost,dpGet),具体在不同的子类中实现。所以,当我们需要重写doPost等方
法时,就不需要重写service方法了,将其注释掉。

HttpServlet采用了模板方法设计不是,方法只定义了一个大骨架,具体由子类实现
*/

method

5.Servlet三要素:

  • 必须继承自HttpServlet
  • 必须实现doGet()或者doPost()
  • 必须在web.xml中配置Servlet

6.Servlet 处理表单数据:

  • getParameter():调用 request.getParameter() 方法来获取表单参数的值
  • getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。
    favourites=request.getParameterValues("favourite");
  • getParameterNames():如果要得到当前请求中的所有参数的完整列表,则调用该方法。

7.HttpServeltRrequest:请求对象

  • getParameter():获得表单元素的值
  • getAttribute():获得request范围中的属性值
  • setAttribute():设置reqeust范围中的属性值
  • setCharacterEncoding():设置字符编码
  • HttpSerletResponse:相应对象
  • sendRedirect():外部跳转
  • getWriter():获得输出流对象
  • setContentType(“text/html; charset=utf-8”):设置相应内容格式和编码

乱码问题的解决

1.返回浏览器显示的乱码

 response.setContentType(“text/html;charset=utf-8”); 
 response. setCharacterEncoding(“UTF-8”); ---优先级高  

2.超链接时出现乱码(和get方式提交时乱码的解决一样)

String stuname=MyUtil.getNewString(request.getParameter("stuname")); 

3.客户端的Post请求:

request. setCharacterEncoding(“UTF-8”);

4.客户端的get请求:

String stuname = request.getParameter("stuname"); 
String str = new String(stuname.getBytes("ISO-8859-1"),"utf-8");

Servlet与jsp的区别:

1.编译运行方面:
Jsp: Jsp 经过web容器生成*jsp.java文件(HttpServlet的孙类,只生成一次),然后再将该java文件编译成class文件;
Servlet: 自定义的Servlet程序,直接继承httpServlet,直接编译成class文件,访问速度要比jsp要快.

2.响应速度方面:
Jsp经过动态编译后,第一次访问时速度很慢,以后访问速度会有提高;起步就慢与Servlet。 从最终的编译文件来看,同样的程序要是在jsp里面运行,生成的执行代码要比纯java编写的Servlet程序要多, 所以响应速度要慢与Servlet。

3.实现方式区别: 两者的创建方式不一样.
Servlet完全是JAVA程序代码构成,通过映射来访问资源。 擅长于流程控制和事务处理而通过Servlet 来生成动态网页;
JSP由HTML代码和JSP标签构成,可以方便地编写动态网页。

请求方式servlet比jsp更灵活;servlet更适合做控制层。jsp适合做展现层。

配置文件(web.xml):

<servlet> 
    <servlet-name>ServletName</servlet-name> //servlet的名称,可任意命名 
    <servlet-class>org.apche.servlet</servlet-class> //servlet的完全限定名,是完整的类路径 
</servlet> 

<servlet-mapping> 
    <servlet-name>ServletName</servlet-name> 
    <url-pattern>/ServletName</url-pattern> //必须以"/"开头,以表示上下文环境的根目录。 
</servlet-mapping>

Servlet处理流程:

处理流程

  1. 客户端发送HTTP请求,这个请求会首先到达Tomcat内置的web服务器
  2. web服务器接受到请求后,会将请求转发给Servlet容器
  3. Servlet容器接受到请求后会加载servlet,产生servlet实例后,会将其传递表示请求和响应的对象(HttpServletRequest, HttpServletResponse),接着servlet实例使用请求对象获得客户端的请求信息,并进行相应的处理。
  4. 该servlet处理完毕之后,有可能将其转发给其他servlet继续进行处理
  5. 全部处理完毕后,处理结果通过响应对象返回给浏览器

通常我们可以在tomcat的logs目录下:使用命令tail -f catalina.out来监视日志输出

Servlet常用包的介绍

  1. javax.servlet:包含了servlet最基本的接口和类
  2. javax.servlet.http:基于http协议的接口和类
  3. javax.servlet.annotation:servlet的一些注解
  4. javax.servlet.descriptor:主要用于获取JSP和标签库的配置信息
【轴承故障诊断】基于融合鱼鹰和柯西变异的麻雀优化算法OCSSA-VMD-CNN-BILSTM轴承诊断研究【西储大学数据】(Matlab代码实现)内容概要:本文提出了一种基于融合鱼鹰和柯西变异的麻雀优化算法(OCSSA)优化变分模态分解(VMD)参数,并结合卷积神经网络(CNN)与双向长短期记忆网络(BiLSTM)的轴承故障诊断模型。该方法利用西储大学公开的轴承数据集进行验证,通过OCSSA算法优化VMD的分解层数K和惩罚因子α,有效提升信号分解精度,抑制模态混叠;随后利用CNN提取故障特征的空间信息,BiLSTM捕捉时间序列的动态特征,最终实现高精度的轴承故障分类。整个诊断流程充分结合了信号预处理、智能优化与深度学习的优势,显著提升了复杂工况下轴承故障诊断的准确性与鲁棒性。; 适合人群:具备一定信号处理、机器学习及MATLAB编程基础的研究生、科研人员及从事工业设备故障诊断的工程技术人员。; 使用场景及目标:①应用于旋转机械设备的智能运维与故障预警系统;②为轴承等关键部件的早期故障识别提供高精度诊断方案;③推动智能优化算法与深度学习在工业信号处理领域的融合研究。; 阅读建议:建议读者结合MATLAB代码实现,深入理解OCSSA优化机制、VMD参数选择策略以及CNN-BiLSTM网络结构的设计逻辑,通过复现实验掌握完整诊断流程,并可进一步尝试迁移至其他设备的故障诊断任务中进行验证与优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值