当前位置: 首页 > news >正文

『Java』Servlet 最简教程

为什么80%的码农都做不了架构师?>>>   hot3.png

Jva Servlet 的简单教程。不定时更新……

 

Servlet 根接口 

public interface Servlet{ public void init(ServletConfig config) throws ServletException; 
// servlet装载时调用。  public void ServletConfig getServletConfig(); 
// 返回ServletConfig对象,含有servlet的初始化参数和启动参数。  public String getServletInfo(); 
//返回servlet相关信息,例如作者、版本、版权声明等。 
// 所有客户端发出的请求都会被servlet容器软件通过service的两个参数传来与传出。 
// service()的主要职责便是处理客户端送出的HTTP请求,并根据该请求中所含属性产生HTTP回应。 
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; public void destroy();
 // servlet卸载时调用。 
}

 

 

 

Servlet HelloWorld import javax.servlet.*; import javax.servlet.http.*; import java.io.*; // 一般来说,一个URL代表一个servlet public calss ServletsRule extends HttpServlet{ int i = 0; public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.print("<HEAD><TITLE>"); out.print("A server-side strategy"); out.print("</TITLE></HEAD><BODY>"); out.print("<H1>Servlets Rule! " + i++); out.print("</H1></BODY>"); out.close(); } }

 

 

Servlet 表单处理 // 处理HTTP Form表单 // 一旦表单被提交到servlet,便会建构HttpServletRequest并将表单内的数据填入HttpServletRequest中。 import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public calss EchoForm extends HttpServlet{ public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ res.setContentType("text/html"); PrintWriter out = res.getWriter(); Enumeration flds = req.getParameterNames(); if(!flds.hasMoreElements()){ // 如果表单内没有数据,我们为了测试,就在下面加入了一个表单数据项。 out.print("<html>"); out.print("<form method=\"POST\"" + " action=\"EchoForm\">"); for(int i = 0; i < 10; i++){ out.print("..."); out.print("..."); }else{ // 如果表单内有数据, out.print(“<H1>Your form contained:</H1>”); while(flds.hasMoreElements()){ String field = (String)flds.nextElement(); String value = req.getParameter(field); out.print(field + " = " + value + "<br />"); } } out.close(); } } }

 

 

Servlet 线程安全 // 使用synchronized子句达到线程安全的目的。 import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class ThreadServlet extends HttpServlet{ in i; public void service(HttpServletResponse res, HttpServletRequest req){ res.setContentType("text/html"); PrintWriter out = res.getWriter(); synchronized(this){ try{ Thread.currentThread().sleep(5000); }catch(InterruptedException e){ System.err.println("Interrupted"); } } out.print("<H1>Finished " + i++ + "</H1>"); out.close(); } }

 

 

Servlet Session处理 // Session。 import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class SessionPeek extends HttpServlet{ in i; public void service(HttpServletResponse res, HttpServletRequest req){ HttpSession session = req.getSession(); // res.setContentType("text/html"); PrintWriter out = res.getWriter(); Integer ival = (Integer)session.getAttribute("SessionPeek.cntr", ival); // ... session.setAttribute("SessionPeek.cntr", ival.intValue() + 1) // ...  Enumeration sesNames = session.getAttributeNames(); while(sesNames.hasMoreElements()){ String name = sesNames.nextElement().toString(); Object value = session.getAttribute(name); /... } session.getId(); session.isNew(); session.getCreationTime(); session.getLastAccessedTime(); sssion.getMaxInactiveInterval(); req.getRequestedSessionId(); req.isRequestedSessionIdFromCookie(); req.isRequestedSessionIdFromURL(); req.isRequestedSessionIdValid(); out.close(); } }

 

转载于:https://my.oschina.net/skyler/blog/706113

相关文章:

  • 获取微信openid
  • Obsolete此API即将移除
  • Colorful Image Colorization 的环境配置
  • 上下左右滚动插件
  • TableViewCell重影问题
  • HDU1048 The Hardest Problem Ever
  • CentOS下配置Hadoop集群:java.net.NoRouteToHostException: No route to host问题的解决
  • Linux 下vsftp配置文件
  • Flymeos插桩适配教程
  • 在liunx中构建DNS主从服务器的配置文档
  • httpd搭建虚拟主机、设置访问认证以及https相关的用法
  • 百度编辑器(Ueditor)最新版(1.4.3.3)插入锚点失败原因分析及BUG修复
  • Restore Volume 操作 - 每天5分钟玩转 OpenStack(60)
  • jsp页面实现局部刷新
  • k8s如何管理Pod
  • co模块的前端实现
  • IDEA常用插件整理
  • JS专题之继承
  • Making An Indicator With Pure CSS
  • MySQL数据库运维之数据恢复
  • Redis中的lru算法实现
  • select2 取值 遍历 设置默认值
  • SQLServer之创建数据库快照
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 如何设计一个比特币钱包服务
  • 使用agvtool更改app version/build
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • "无招胜有招"nbsp;史上最全的互…
  • # 数论-逆元
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #QT(串口助手-界面)
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (13)Hive调优——动态分区导致的小文件问题
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (理论篇)httpmoudle和httphandler一览
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • .axf 转化 .bin文件 的方法
  • .net 使用ajax控件后如何调用前端脚本
  • @RequestParam详解
  • [ 数据结构 - C++]红黑树RBTree
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [C++]类和对象【下】
  • [idea]关于idea开发乱码的配置
  • [IE6 only]关于Flash/Flex,返回数据产生流错误Error #2032的解决方式
  • [IE编程] 了解Urlmon.dll和Wininet.dll
  • [java] 23种设计模式之责任链模式
  • [Java性能剖析]Sun JDK基本性能剖析工具介绍
  • [jquery]this触发自身click事件,当前控件向上滑出
  • [js] 正则表达式
  • [leetcode]_Symmetric Tree
  • [LeetCode系列]3元素最近和问题的O(n^2)解法