Servlet入门

内容纲要

软件结构发展史

  • 单机时代-桌面应用
    • 桌面应用俗称单机应用,软件所有数据都保存在电脑本地硬盘
    • 优点:易于使用,结构简单
    • 缺点:数据难以共享、安全性差、更新不及时
  • 联机时代(Client-Server模式)
    • Client/Server结构(C/S结构)是指客户端和服务器结构
    • 优点:数据方便共享。安全性高
    • 缺点:必须安装客户端、升级与维护困难
  • 互联网时代(Broswer-Server模式)
    • Broswer-Server(B/S)模式即浏览器和服务器架构模式
    • 优点:开发简单、无需安装客户端、数据易于共享
    • 缺点:相对于C/S模式,执行速度与用户体验相对较弱

J2EE

  • J2EE(Java 2 Platform Enterprise Edition)是指"Java 2 企业版"
  • B/S模式开发Web应用就是J2EE最核心的功能

J2EE模块

  • Servlet web服务器小程序
  • JSP 服务器页面
  • JDBC 数据库交互模块
  • XML XML交互模块
  • EJ 企业级Java Bean
  • RMI 远程调用
  • JNDI 目录服务
  • JMS 消息服务
  • JTA 事务管理
  • JavaMail(发送/接受Email
  • JAF 安全架构
  • CORBA CORBA集成
  • JTS CORBA事务监控

Apache Tomcat

  • Tomcat是Apache软件基金会旗下一款免费的开源代码的Web应用服务程序
  • Tomcat是运行Servlet(服务器小程序)的容器

Servlet

  • Servlet(Server Applet)服务器小程序,主要功能用于生成动态Web内容
  • Servlet是J2EE最重要的组成部分,也是我们学习的重点

标准Java Web工程结构

组织结构 描述
tomcat安装目录/webapps Tomcat应用根目录
/web应用目录 Java Web应用目录
/web应用目录/inde.html 或 .jsp 默认首页
/WEB-INF WEB应用的安全目录,用于存放配置文件
WEB-INF/web.xml web.xml是“部署描述符文件”,是该Web项目核心配置文件
WEB-INF/classes 存放编译后的classes文件
WEB-INF/lib 用于存放web应用依赖的jar文件
/META-INF/MANIFEST.MF 包含Web应用的版本等信息

Servlet开发步骤

  • 创建Servlet类,继承HTTPServlet
public class FistServlet extends HttpServlet{
  • 重写service方法,编写程序代码
    • service是请求处理的核心方法,无论是get还是post都会被service()方法处理
//getMethod()可以获取当前的请求方法
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        String html = "<h1 style = 'color:red'>hi,"+name+"!</h1><hr/>";
        System.out.println(html);
        PrintWriter out = response.getWriter();
        out.println(html);
    }
  • 配置web.xml,绑定URL
<servlet>
    <!--创建名字-->
    <servlet-name>fist</servlet-name>
    <servlet-class>Servlet.FistServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>fist</servlet-name>
    <!--绑定URL-->
    <url-pattern>/hi</url-pattern>
  </servlet-mapping>

Servlet访问方法

  • http://ip地址:端口/context-path/url-mapping
  • 远程访问使用IP地址,本地localhost(127.0.0.1)
  • context-path称为"上下文路径",默认为工程名

请求参数

  • 请求参数是指浏览器通过请求向Tomcat提交的数据
  • 请求参数通常是用户输入的数据,待Servlet进行处理
  • 参数名1 =值1 &参数名2 =值2&参数名 n=....

Servlet接受请求参数

  • request.getParameter() - 接收单个参数
  • request.getParameterValues() - 接收多个同名参数(复选框)

Get与Post请求方法

  • Get方式是将数据通过在URL附加数据显性向服务器发送数据。(可读性更强)
    • http://localhost:8080/FirstServlet/sample?name=zhangsan
    • doGet
//处理Get请求
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    response.getWriter().println("<h1 style='color:red'>"+request.getParameter("name")+"</h1>");
}
  • Post方式会将数据存放在”请求体”中隐性向服务器发送数据(更隐秘)
    • http://localhost:8080/FirstServlet/sample
    • 请求体: name= zhangsan
    • doPost()
//处理Post请求
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
    response.getWriter().println("<h1 style='color:green'>"+request.getParameter("name")+"</h1>");
}

如果不重写service的方法,那么他会将不同的请求交给不同的方法处理

Get与Post应用场景

  • Get常用语不包含敏感信息的查询功能
    • 数据查询
    • http: //www.baidu.com/s?wd=imooc&rsv_spt=1;
  • Post用于安全性要求较高的功能或者服务器的“写”操作
    • 敏感信息和数据库写的操作
    • 用户登录
    • 用户注册
    • 更新公司账目

Servlet生命周期

  1. 装载 - web.xml
  2. 创建 - 构造函数
  3. 初始化 - init()
  4. 提供服务 - service()
  5. 销毁 - destroy() - 重启的时候自动执行
    在Servlet服务中有且只有一个Servlet对象提供服务

使用注解简化配置

  • 注解用于简化Web应用程序的配置过程
  • Servlet核心注解:@WebServlet
@WebServlet("/anno")
public class AnnotationServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        resp.getWriter().println("I'm annotation Servlet!");
    }
}

启动时加载servlet

  • web.xml使用设置启动加载
  • 0~9999 0的优先级最高
  • 启动时加载在工作中常用于系统的预处理(可以提前加载一些费事费力的工作,这样就会让程序运行起来更加流畅)
//采用注解方式
@WebServlet(urlPatterns = "/create",loadOnStartup = 2)
//必须在注解中添加一个不冲突的地址
//配置xml
<servlet>
    <servlet-name>create</servlet-name>
    <servlet-class>servlet.CreateServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>
THE END
分享
二维码
< <上一篇
下一篇>>