Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之11.Servlet简介

简介:
–为什么需要动态创建Web页面? 
–Servlet 的功能 
–Servlet 相对“传统” CGI的优势 
–Servlet 的相关类和接口 
–Servlet 实例 
• “HelloWorld” Servlet
######################Michael分割线################
• 为什么需要动态创建Web页面? 
–Web页面基于用户提交的数据
 
• 例如,搜索引擎的结果和在线商店的订单确认信息 
–Web 页面的数据频繁改变 
• 例如,天气预报和新闻头条 
–页面信息来自数据库 
• 例如,电子商务网站的每日销售商品的价格清单
• Servlet 的功能 
–读取客户端发来的显示信息(表单数据) 
–读取客户端发来的隐式信息(请求头信息) 
–生成相应结果 
–发送显示信息给客户端(HTML) 
–发送隐式数据到客户端(状态码和响应头信息)
image
• Servlet 相对“传统”CGI的优势 
–效率高 
• 线程取代操作系统的进程 
–方便 
• 大量高级工具类 
–功能强大 
• 共享数据,数据持久性 
–轻便 
• 可以运行在所有操作系统上 
–廉价 
• 有大量的免费或价格较低的服务器 
–安全 
• 没有缓存溢出问题 
–主流
• Servlet 的相关类和接口 
– 包结构 
• javax.servlet 
• javax.servlet.http
image
– Servlet 接口 
• public void init(ServletConfig config) throws ServletException 
• public ServletConfig getServletConfig() 
• public void service(ServletRequest req,ServletResponse res) throws 
ServletException,java.io.IOException 
• public java.lang.String getServletInfo() 
• public void destroy()
image
– ServletConfig 
• public java.lang.String getServletName() 
• public java.lang.String getInitParameter(java.lang.String name) 
• public java.util.Enumeration getInitParameterNames()
– ServletContext 
• public ServletContext getContext(java.lang.String uripath) 
• public RequestDispatcher getRequestDispatcher(java.lang.String path) 
• public void log(java.lang.String msg) 
• public java.lang.String getRealPath(java.lang.String path) 
• public java.lang.String getInitParameter(java.lang.String name) 
• public java.lang.Object getAttribute(java.lang.String name)
– ServletRequest 
• public void setAttribute(java.lang.String name,java.lang.Object o) 
• public void setCharacterEncoding(java.lang.String env) throws java.io.UnsupportedEncodingException 
• public java.lang.String getParameter(java.lang.String name) 
• public java.lang.String[] getParameterValues(java.lang.String name)
– ServletResponse 
• public ServletOutputStream getOutputStream() hrows java.io.IOException 
• public java.io.PrintWriter getWriter() throws java.io.IOException
– GenericServlet 
• public abstract class GenericServlet 
• extends java.lang.Object 
• implements Servlet, ServletConfig, java.io.Serializable
– HttpServlet 
• public abstract class HttpServlet 
• extends GenericServlet 
• implements java.io.Serializable
– HttpServletRequest 
• public interface HttpServletRequest 
• extends ServletRequest
– HttpServletResponse 
• public interface HttpServletResponse 
• extends ServletResponse
– HttpSession 
• public void setAttribute(java.lang.String name,java.lang.Object value) 
• public void invalidate()
• Servlet 实例 
–“HelloWorld” Servlet 
• 创建一个HelloWorldServlet类 
–编写一个类“HelloWorldServlet”继承HttpServlet 
–覆盖HttpServlet中的doGet方法 
–在doGet方法中将“Hello World Servlet”输出
image
• 声明、映射Servlet 
–声明Servlet
image 
–映射Servlet 
image
• 调用Servlet方式 
–URL 
–提交表单 
–超级连接 
–JavaScript脚本 
• 运行结果
image
######################Michael分割线################
URL调用Servlet方法
创建一个MyServlet类  
MyServlet.java
package com.michael.servlet;    

import java.io.IOException;    
import java.io.PrintWriter;    

import javax.servlet.ServletException;    
import javax.servlet.http.HttpServlet;    
import javax.servlet.http.HttpServletRequest;    
import javax.servlet.http.HttpServletResponse;    

public  class MyServlet  extends HttpServlet{    

        @Override    
         protected  void doGet(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {    
                PrintWriter out = response.getWriter();    
                out.println( "My blog is http://redking.blog.51cto.com");    
        }    

        @Override    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    
                doGet(request,response);    
        }    

image
申明、映射Servlet
web.xml
<? xml  version ="1.0"  encoding ="UTF-8" ?>    
< web-app  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 >    
                 < servlet-name >王乾De技术Blog[爱生活,爱学习] </ servlet-name >    
                 < servlet-class >com.michael.servlet.MyServlet </ servlet-class >    
         </ servlet >    
        <!--  映射Servlet -->    
         < servlet-mapping >    
                 < servlet-name >王乾De技术Blog[爱生活,爱学习] </ servlet-name >    
                 < url-pattern >/servlet/michael.do </ url-pattern >    
         </ servlet-mapping >    
</ web-app > 
image
测试
image
######################Michael分割线################
提交表单调用Servlet方法
增加一个login.html页面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >    
< html >    
     < head >    
         < title >login.html </title>    
         < meta  http-equiv ="keywords"  content ="keyword1,keyword2,keyword3" >    
         < meta  http-equiv ="description"  content ="this is my page" >    
         < meta  http-equiv ="content-type"  content ="text/html; charset=gbk" >    
         <! --<link rel="stylesheet" type="text/css" href="./styles.css">-->    

     </head>    
     < body >    
         < form  action ="/Servlet_Info/servlet/michael.do"  method ="post" >    
             < table  border ="0" >    
                 < tr >    
                     < td >帐号: </td>    
                     < td > < input  type ="text"  name ="user"  id ="login" > </td>    
                 </tr>    
                 < tr >    
                     < td >密码: </td>    
                     < td > < input  type ="password"  name ="password"  id ="password" > </td>    
                 </tr>    
                 < tr >    
                     < td  colspan ="2"  align ="center" > < input  type ="submit"  value ="登录" > </td>    
                 </tr>    
             </table>    
         </form>    
     </body>    
</html> 
image
测试
image
image
image
######################Michael分割线################
超链接调用Servlet方法
image
测试
image
######################Michael分割线################
JavaScript脚本调用Servlet方式
login.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >    
< html >    
     < head >    
         < title >login.html </title>    
         < meta  http-equiv ="keywords"  content ="keyword1,keyword2,keyword3" >    
         < meta  http-equiv ="description"  content ="this is my page" >    
         < meta  http-equiv ="content-type"  content ="text/html; charset=gbk" >    
         <! --<link rel="stylesheet" type="text/css" href="./styles.css">-->    

         < script  type ="text/javascript" >    
                function invoke(){    
                        var myForm = document.getElementById("michaelForm");    
                        myForm.action = "/Servlet_Info/servlet/michael.do";    
                        myForm.submit();    
                }    
         </script>    
     </head>    
     < body >    
             < a  href ="/Servlet_Info/servlet/michael.do" >click me!!! </a>    
         < form  id ="michaelForm"  action ="/Servlet_Info/servlet/michael.do"  method ="post" >    
             < table  border ="0" >    
                 < tr >    
                     < td >帐号: </td>    
                     < td > < input  type ="text"  name ="user"  id ="login" > </td>    
                 </tr>    
                 < tr >    
                     < td >密码: </td>    
                     < td > < input  type ="password"  name ="password"  id ="password" > </td>    
                 </tr>    
                 < tr >    
                     < td  colspan ="2"  align ="center" > < input  type ="submit"  value ="登录" > </td>    
                     < input  type ="button"  value ="JS Submit"  onclick ="invoke()" > < br > < br >    
                 </tr>    
             </table>    
         </form>    
     </body>    
</html> 
image
测试
image
image
######################Michael分割线################










本文转自redking51CTO博客,原文链接:http://blog.51cto.com/redking/167478,如需转载请自行联系原作者

相关文章
|
5月前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。
|
7月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
1232 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
7月前
|
云安全 数据采集 安全
阿里云热门云安全产品简介:Web应用防火墙与云防火墙产品各自作用介绍
在阿里云的安全类云产品中,Web应用防火墙与云防火墙是用户比较关注的两款安全产品,二者在作用上各有侧重,共同构成了阿里云强大的安全防护体系。本文将对Web应用防火墙与云防火墙产品各自的主要作用进行详细介绍。
|
7月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
11月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
330 63
|
10月前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
12月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
242 0
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
116 1
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)