JavaWeb开发中Setvlet的部署以及应用

简介:     JavaScript 和 Java  Applet  是运行在客户端浏览器中。Servlet是运行在服务器端的程序 ,他不像 JSP有有辅助工具辅助编码,所以说 Servlet的开发效率是比较低的  但是他对程序员的水平的要求要比JSP程序员的要求高很多 ,因为Servlet中涉及到很多底层的东西,一种典型的开发模式就是  MVC开发模式 利用Setvlet进行流程的控制 。

    JavaScript 和 Java  Applet  是运行在客户端浏览器中。Servlet是运行在服务器端的程序 ,他不像 JSP有有辅助工具辅助编码,所以说 Servlet的开发效率是比较低的

 但是他对程序员的水平的要求要比JSP程序员的要求高很多 ,因为Servlet中涉及到很多底层的东西,一种典型的开发模式就是  MVC开发模式 利用Setvlet进行流程的控制 。

实际上我们的 JSP页面其实是先编译成Servlet 然后再转换成对应的字节码文件  所以说 我们每个JSP页面和  Servlet都是一一对应的 。

Servelt由web服务器编译执行,当客户端访问Servlet的时候,服务器会自动分配一个线程来处理Servlet  此Servlet非 CGI的进程,相对CGI技术相对内存消耗较少  。

由于是再服务器端运行的Servlet也受到防火墙的保护所以所以安全性是比较好的 。

 

Servlet的生命周期分为三个过程  :

1、实际Servlet是一个类,当第一次客户请求的时候 ,那么 服务器首先生成一个Servlet的对象 ,然后 调用init()进行初始化  在整个服务器的生命周期的init只进行一次 。。

2、调用service() 方法来响应 客户端的请求

3、当下次客户进行请求的时候 直接从内存中取出servlet对象  直接使用  当服务器关闭的时候 那么将调用destroy方法来清除 此对象

 

所以说整个周期初始化工作只进行一次。。。

其实 使用Servlet和 JavaBean的部署类似,我们都是使用Java编写的一个类  

首先看下面的一个Servlet代码

 import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet
{
 public void init(ServletConfig config)throws ServletException
 {
  super.init() ; 
 }
 public void service(HttpServletRequest req, HttpServletResponse resp) throws  ServletException,IOException
 {  
  resp.setContentType("text/html;charset=GB2312");
  PrintWriter out=resp.getWriter();
  out.print("接收到了一次请求!<br>");
  out.print ("请求IP是"+req.getRemoteAddr()+"<br>");
 }

}
编译成class文件

然后再Tomcat根目录下建立

WEB-INF文件夹

在其下建立 lib文件夹和

classes文件夹 并吧class文件放在其中

然后再web.xml中写下如下设置

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
    <servlet-name>firstServlet</servlet-name>
    <servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>firstServlet</servlet-name>
    <url-pattern>/firstServlet</url-pattern>
</servlet-mapping>
 <display-name>
 ch08</display-name>
 <welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>default.html</welcome-file>
  <welcome-file>default.htm</welcome-file>
  <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
</web-app>

 

然后启动 Tomcat在 浏览器输入   http://local:8080/firstServlet       ....然后看结果 。。是不是跟我们平时在JSP页面提交的时候不一样呢 

 

以前我们在处理表单提交的时候一切操作 是再JSP页面下进行的  但是现在 我们是在底层完成  也就是Servlet中实现

 

 

 

 

目录
相关文章
|
2天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
16天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
89 26
|
3天前
|
安全 算法 Java
Java CAS原理和应用场景大揭秘:你掌握了吗?
CAS(Compare and Swap)是一种乐观锁机制,通过硬件指令实现原子操作,确保多线程环境下对共享变量的安全访问。它避免了传统互斥锁的性能开销和线程阻塞问题。CAS操作包含三个步骤:获取期望值、比较当前值与期望值是否相等、若相等则更新为新值。CAS广泛应用于高并发场景,如数据库事务、分布式锁、无锁数据结构等,但需注意ABA问题。Java中常用`java.util.concurrent.atomic`包下的类支持CAS操作。
21 2
|
12天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
72 13
|
17天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
52 10
|
10天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
48 2
|
20天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
3天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
3天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。