servlet简介:java服务器小程序,主要用于生成动态web内容。因为web页面基于用户提交数据,web页面数据频繁改变,页面信息来自于数据库,所以我们需要动态创建web页面。

serlvet功能:读取客户端发来的显示信息(表单数据),读取客户端发来的隐式信息(请求头信息),生成相应结果,发送显示xi信息给客户端(html),发送隐式信息给客户端(状态码和请求头信息)。

Servlet 读取表单数据

Servlet 处理表单数据,这些数据会根据不同的情况使用不同的方法自动解析:

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

servlet标注:name是可选属性

@WebServlet(name="MyServlet",urlPatterns={"/my"})

或者

@WebServlet("/MyServlet")

ServletConfig:从Servlet内部获取到初始参数的值

@WebServlet(name = "ServletConfigDemoServlet",
urlPatterns = { "/servletConfigDemo" },
initParams = {
@WebInitParam(name="admin", value="Harry Taciak"),
@WebInitParam(name="email", value="admin@example.com")}
)@WebServlet(name = "ServletConfigDemoServlet",
urlPatterns = { "/servletConfigDemo" },
initParams = {
@WebInitParam(name="admin", value="Harry Taciak"),
@WebInitParam(name="email", value="admin@example.com")}
)

servlet中最常用的方法:getParameter是在ServletRequest中最常用的方法。该方法通常用于返回HTML表单域的值,也可以用于获取查询字符串的值,用下面这个语句,可以通过Servlet内部获取id值。

String id = request.getParameter("id");

默认情况下,PrintWriter对象使用ISO-8859-1编码。

提交表单两种常用方法:

get:将请求参数显示在url中,调用servlet的doGet方法,不安全

post:不在url中显示请求信息,调用servlet的doPostt方法,安全

Servlet生命周期:加载实例化Servlet(创建一个servelt实例)——调用init()方法(仅调用一次)——调用service方法(doPost或者doGet,调用多次,每次请求调用)——调用destroy方法(销毁servlet,tomcat关闭执行)

页面导航3种方式:

1、请求重定向:工程之外,不共享request里面的数据

resp.sendRedirect("http://www.baidu.com");

2、请求转发:设置了共享变量,变量不会传到新页面。比如两个servlet分别设置共享变量“你好”,“你也好”,请求转发到页面只能输出其中一个变量

req.getRequestDispatcher("/Success.html").forward(req, resp);

3、请求包含:包含success页面,如果设置了共享变量,变量会传到新页面输出。比如两个servlet分别设置共享变量“你好”,“你也好”,请求转发到页面两个变量都能输出

req.getRequestDispatcher("/Success.html").include(req, resp);

setvlet3个作用域 :

ServletContext:范围最大,应用程序级别,整个应用程序都能访问

HttpSession:范围次之,会话级别,在当前浏览器中能访问

HttpServletRequest:范围最小,请求级别,请求结束,变量作用域也结束

//请求结束作用域结束
req.setAttribute("R_name", "R_value");
//会话 客户端和服务器断开作用域结束
HttpSession session = req.getSession();
session.setAttribute("S_name", "S_value");
//全局  所有用户共享
ServletContext cxt = this.getServletContext();
cxt.setAttribute("SC_name", "SC_value");

下面写个例子,通过servlet实现页面输出,项目结构图如下

HelloServlet代码

package com.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 HelloServlet extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String url = request.getRequestURI().toString();System.out.println(url);//打印路径//打印输出流PrintWriter out = response.getWriter();out.print("hello servlet");}}

html页面,submit,button,a标签都实现了跳转输出

<!DOCTYPE html>
<html><head><title>helloServlet.html</title><script type="text/javascript">function test(){var f = document.forms[0];f.action="servlet/HelloServlet"f.submit();}</script></head><form action="servlet/HelloServlet"><input type="submit"><!-- button没有提交功能   onclick动作事件调用test() --><input type="button" onclick="test();" value="hello"></form><hr><a href="servlet/HelloServlet">link</a><body></body>
</html>

下面这个是个生命周期小例子,项目结构图如下

html页面代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>             <!-- method有post或者get -->
<form action="servlet/BasicServlet" method="post"><table><tr><td>Name</td><td><input type="text" name="name"></td></tr><tr><td>Password</td><td><input type="Password" name="password"></td></tr><tr><td colspan="2" align="center"><input type="submit"></td></tr></table>
</form>
</body>
</html>

servlet代码

package com.basic;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 BasicServlet extends HttpServlet {//构造方法public BasicServlet() {System.out.println("BasicServlet");}/*//service里判断是doget方法还是都post方法,会覆盖dopost和doget@Overrideprotected void service(HttpServletRequest arg0, HttpServletResponse arg1)throws ServletException, IOException {super.service(arg0, arg1);}*/public void destroy() {System.out.println("destroy");}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {PrintWriter out = response.getWriter();out.println("include");String name = request.getParameter("name");if(name!=null&&name.equals("kaite")){request.getRequestDispatcher("/index.jsp").forward(request, response);}else{response.sendRedirect("http://www.baidu.com");}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {PrintWriter out = response.getWriter();out.println("include");     String password = request.getParameter("password");if(password!=null&&password.equals("qaqa")){//请求包含request.getRequestDispatcher("/BasicService.html").include(request, response);}else{request.getRequestDispatcher("/index.jsp").forward(request, response);}}//初始化一个方法public void init() throws ServletException {// 从配置文件里读取全局参数                 最大作用域String bigname = this.getServletContext().getInitParameter("context");System.out.println(bigname);//从配置文件里读取局部参数String name = this.getInitParameter("name");System.out.println(name);System.out.println("init");}}

配置文件里配置了一个全局变量和一个局部变量

<servlet><servlet-name>BasicServlet</servlet-name><servlet-class>com.basic.BasicServlet</servlet-class><init-param><param-name>name</param-name><param-value>anwser</param-value></init-param></servlet><servlet-mapping><servlet-name>BasicServlet</servlet-name><url-pattern>/servlet/BasicServlet</url-pattern></servlet-mapping> 

控制台输出

Servlet入门——1、servlet基础相关推荐

  1. Java Web之Servlet入门

    Java Web之Servlet入门 ​ 上世纪90年代,随着Internet和浏览器的飞速发展,基于浏览器的B/S模式变得火爆起来. 最初,用户使用浏览器向WEB服务器发送的请求都是请求静态的资源, ...

  2. WebDay08 Servlet入门

    Servlet入门 一 Servlet概述 二 Servlet快速入门 2.1 代码编写 2.2 执行原理 三 Servlet相关API 3.1 生命周期方法 3.1.1 思想介绍 3.1.2 代码演 ...

  3. Servlet入门1

    Servlet入门1  1.1 关于Servlets Servlets是JAVA 2.0中新增的一个全新功能.JAVA Servlets 是运行在请求/面向请求服务器上的模块,比如一个Java-ena ...

  4. Java Servlet系列之Servlet入门

    什么是Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服 ...

  5. java day37【web相关概念回顾 、web服务器软件:Tomcat 、Servlet入门学习】

    第一章  web相关概念回顾 1. 软件架构 1. C/S:客户端/服务器端 2. B/S:浏览器/服务器端 2. 资源分类 1. 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资 ...

  6. JavaWeb Tomcat服务器与Servlet入门以及简单登录功能的实现

    Day12 一.Tomcat服务器 1.web资源 2.服务器 3.Tomcat服务器 4.idea 与tomcat 的整合 二.Servlet入门 1. servlet的三种实现方式 2.servl ...

  7. Servlet入门 学习

    思维导图 导学 在本节课程中需要了解什么是b/s架构模式,浏览器与服务器.掌握servlet初步开发技巧,掌握servlet开发原理. 软件结构发展史 B/S模式的执行流程 什么是服务器 服务器:向终 ...

  8. tomcat和servlet入门

    今日内容 1. web相关概念回顾 2. web服务器软件:Tomcat 3. Servlet入门学习 web相关概念回顾 1. 软件架构1. C/S:客户端/服务器端2. B/S:浏览器/服务器端2 ...

  9. servlet入门与进阶

    servlet入门与进阶 1.servlet基础认知 Servlet(Server Applet):全称Java Servlet,是用Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据, ...

  10. Servlet入门学习笔记

    Servlet入门 基本概述 Servlet(Server Applet),全称Java Servlet,未有中文译文.是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态W ...

最新文章

  1. 社交媒体如何破坏了你的生活? | 大咖来了
  2. C语言-求字符串长度-strlen()与sizeof()
  3. 什么是故事板?(故事图、Storyboard)(软件显示效果的视觉草图,用于视频创作和广告设计,表达作者的创意)
  4. 【Tools】MarkDown教程(七)-Typora详细教程
  5. linux apache中文名称图片,Apache、NGINX支持中文URL图片、文件名的终极解决方案
  6. Eclipse右下角一直提示Computing additional info解决办法
  7. 怎样在IIS下配置PHP
  8. vue项目打包,生成dist文件夹,如何修改文件夹的名字
  9. java基础总结08-集合
  10. python库之SnowNLP(自然语言处理)
  11. 我读《非暴力沟通》- 马歇尔 *卢森堡 - 让爱融入生活
  12. ❤️1000道《计算机基础知识》汇总上----(建议收藏)❤️
  13. mysql查询财两个人信息_MYSQL学习与数据库综合实验—数据查询实验
  14. Google Safe Browsing API的实施
  15. [爱奇艺]校招笔试(2017/9/11)
  16. uefi启动解析:由原理到实例
  17. wireshark过滤器使用
  18. 【R】随机模拟计算定积分
  19. 计算机的基础组成部分
  20. 码云的一些总结(普通用户版本仓库大于500M上传受限制)

热门文章

  1. python 调试 pdb_python pdb调试
  2. PYTHON---利息计算
  3. Java五子棋全代码-增加了人机对战功能
  4. php网站批量上传图片,php简单实现批量上传图片的方法
  5. CAN总线多帧发送方式
  6. 26岁的超经典音乐播放器Winamp归来!UI彻底重构:支持iOS/安卓
  7. apdu 移动sim_中国移动手机支付业务及关键技术
  8. couchdb 自动生成html,CouchDB 安装
  9. 后勤管理系统—预防性维护管理
  10. 《当幸福来敲门》之精采对白