个人对servlet的理解、动态网站安装配置以及简单例子解读

Servlet是使用Java Servlet应用程序设计接口(API)及相关类和方法的Java程序,除了Java Servlet API,它还可以用于扩展和添加API的Java类软件包。Java语言能够实现的功能,Servlet基本都能实现(除了图形界面外)。Servlet主要处理客户端传来的HTTP请求,并返回一个响应。通常所说的Servlet就是指HttpServlet,能够处理的请求有,doGet()、doPost()和service()等方法。在开发Servlet时,可以直接继承javax.servlet.HttpServlet。

Servlet技术具有高效、方便、跨平台、功能强大、灵活性和可扩展性、共享数据、安全的特点,Servlet部署在容器中生命周期由容器管理,可概括为一下几个阶段:加载实例化、初始化(调用init()方法)、提供服务(调用service()方法)、根据请求执行doGet()或doPost()等方法、销毁(调用destroy()方法)。

JDK(Java开发工具包)下载和安装 Http://www.oracle.com/index.html

设置JDK环境变量:计算机→属性→高级系统设置→环境变量→系统变量中的新建,变量名:JAVA_HOME,变量值:JDK所在路径,双击系统变量中的Path,在原有的变量值最前面添加.;JAVA_HOME%\bin;

确认环境变量是否设置成功:点开始,在运行中输入cmd,点击确定,在出现的界面中输入javac。

Tomcat服务器下载、安装 Http://tomcat.apache.org

tomcat→bin→startup.bat

确认Tomcat是否配置成功:浏览器中地址栏输入:http://localhost:8080

Eclipse下载、安装 http://www.eclipse.org

以下为创建一个名称为first的动态网站项目示例以及代码注释:

在WebContent中的WEB-INF创建一个名为NewFile.xml的xml文件,代码注释如下

<?xml version="1.0" encoding="UTF-8"?> <!-- 说明是XML文档,指定其版本为1.0,编码格式为UTF-8 -->
<!-- 定义XML文档的根元素web-app,并设置其属性xmlns:xsi、xmlns、xmlns:web、xsi:schemaLocation、id、version-->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>servlet</display-name>
  <!-- welcome-file-list元素可指定显示的默认文件 -->
  <welcome-file-list>
    <!-- 如果用户键入的URL不包含servlet名称、JSP页面或其他资源,则找不到index.html、index.htm文件,这时就会显示index.jsp文件 -->
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <!-- 如果用户键入的URL不包含servlet名称、JSP页面或其他资源,则找不到default.html、default.htm文件,这时就会显示default.jsp文件 -->
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
 <!-- 注册两个servlet,Sample和JspSample -->
  <servlet>
    <!-- 描述信息 -->
    <description>第一个例子</description>
    <!-- servlet显示的的名称为servletSample -->
    <display-name>servletSample</display-name>
    <!-- servlet的名称为Sample -->
    <servlet-name>Sample</servlet-name>
    <!-- servlet类的完整类名jp.co.nttdata.servlet.Sample -->
    <servlet-class>jp.co.nttdata.servlet.Sample</servlet-class>
  </servlet>
  <!-- Sample印射 -->
  <servlet-mapping>
    <!-- servlet的名称为Sample -->
    <servlet-name>Sample</servlet-name>
    <!-- 访问Sample的URL地址为/servlet/Sample -->
    <url-pattern>/servlet/Sample</url-pattern>
  </servlet-mapping>
  <servlet>
    <!-- 描述信息 -->
    <description>第二个例子</description>
    <!-- servlet显示的的名称为servletJspSample -->
    <display-name>servletJspSample</display-name>
    <!-- servlet的名称为JspSample -->
    <servlet-name>JspSample</servlet-name>
    <!-- servlet类的完整类名jp.co.nttdata.servlet.JspSample -->
    <servlet-class>jp.co.nttdata.servlet.JspSample</servlet-class>
  </servlet>
  <!-- JspSample印射 -->
  <servlet-mapping>
    <!-- servlet的名称为JspSample -->
    <servlet-name>JspSample</servlet-name>
    <!-- 访问JspSample的URL地址为/servlet/JspSample -->
    <url-pattern>/servlet/JspSample</url-pattern>
  </servlet-mapping>
</web-app>

在WebContent中添加两个JSP文件,名称为index.jsp、response.jsp,当然这两个文件也可以建在WebContent下的单独的文件夹中,代码注释如下

<!-- 使用页面指令page,并指定其语言为java,contentType属性中MIME为text/html 字符编码为windows-31j,编码格式为windows-31j -->
<%@ page language="java" contentType="text/html; charset=windows-31j"
    pageEncoding="windows-31j"%>
<!-- 文档类型为html -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- 存放HTML文档信息 -->
<head>
<!-- 用meta指定了文件为html文件,且使用windows-31j编码 -->
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<!-- 文档的标题为Insert title here -->
<title>Insert title here</title>
</head>
<!-- 页面中的内容 -->
<body>
    <!-- 在页面中插入表单,表单名称为 loginForm,表单提交的URL地址为/servlet/servlet/JspSample,表单提交方式为POST,POST方式更安全-->
 <form name="loginForm" action="/servlet/servlet/JspSample" method="POST">
     <!-- 页面可直接显示出此内容 -->
  index
  <!-- 表单输入标记,可以向页面添加单行、多行文本或按钮等 -->
  <!-- 此处 -->
  <input name="loginId" type="text" />
  <input name="loginName" type="text" value="${loginName}"/>
  <input type="submit" value="sub" />
 </form>
</body>
</html>
 <!-- 注释与index.jsp页面类似 -->
<%@ page language="java" contentType="text/html; charset=windows-31j"
    pageEncoding="windows-31j"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
</head>
<body>
 <form name="loginForm" action="/servlet/servlet/JspSample" method="POST">
  response
  <input name="loginId" type="text" />
  <input name="loginName" type="text" value="${loginName}"/>
  <input type="submit" value="sub" />
 </form>
</body>
</html>

在Java Resource中的src中新建两个类,名称为Sample.java、JspSample.java,代码注释如下

//打包成名称为jp.co.nttdata.servlet
package jp.co.nttdata.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;
//继承 HttpServlet的公共类Sample
public class Sample extends HttpServlet {
    /**
     * serialVersionUID
     */
    /*
     * 根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,如果你没有考虑到兼容性问题时,就把它关掉,Window ==>
     * Preferences ==> Java ==> Compiler ==> Error/Warnings ==> Potential
     * programming problems 将Serializable class without
     * serialVersionUID的warning改成ignore即可
     */
    private static final long serialVersionUID = -1936901196555528367L;
    // Servlet 初始化,输出This is
    // initMethod,默认初始有参初始化法,如果没有有参初始化方法,才调用无参初始化。如果传递ServletConfig对象失败,则会发生ServletException异常,Servlet将不能正常工作
    public void init() throws ServletException {
        System.out.println("This is initMethod");
    }
    // 处理GET类型的Http请求。继承HttpServlet的servlet必须有public void
    // doGet(HttpServletRequest req,HttpServletResponse resp)方法
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // 输出This is doGet
        System.out.println("This is doGet");
        // 设置resp的contentType属性中MIME为text/html 字符编码为UTF-8
        resp.setContentType("text/html;charset=UTF-8");
        // 从resp中获取PrintWriter对象
        PrintWriter out = resp.getWriter();
        // 向客户端发送字符数据
        out.println("<html>");
        out.println("<body>");
        out.println("This is Servlet");
        out.println("</body>");
        out.println("</html>");
    }
    // 处理POST类型的Http请求,如果失败,则抛出ServletException, IOException异常
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // 调用doGet( )方法
        doGet(req, resp);
    }
    // 销毁servlet对象,释放资源
    public void destroy() {
        // 释放HttpServlet类占用的资源
        super.destroy();
        // 输出This is destroy
        System.out.println("This is destroy");
    }
}
 //注释类似Sample.java
package jp.co.nttdata.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class JspSample extends HttpServlet {
    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = 1751356779488685371L;
    public void init() throws ServletException {
        System.out.println("This is initMethod");
    }
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("This is doGet");
        resp.setContentType("text/html;charset=UTF-8");
        // 获取loginId参数值
        String loginId = req.getParameter("loginId");
        // 将loginId放置于req范围中
        req.setAttribute("loginId", loginId);
        // 将loginName更改为nttdata
        req.setAttribute("loginName", "nttdata");
        // 获取RequestDispatcher对象,请求转发到/response.jsp页面
        req.getRequestDispatcher("/response.jsp").forward(req, resp);
    }
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req, resp);
    }
    public void destroy() {
        super.destroy();
        System.out.println("This is destroy");
    }
}
时间: 2024-10-07 17:33:33

个人对servlet的理解、动态网站安装配置以及简单例子解读的相关文章

asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

原文:asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionless的学习做下笔记! Exceptionless是什么?能做什么呢? “Exceptionless”这个词的定义是:没有异常.Exceptionless可以为您的ASP.NET.We

部署LNMP动态网站和配置PHP服务

部署LNMP动态网站: 第一步:上传文件,解压文件 cd /usr/local/src tar xzvf FileName.tar.gz cd cmake-2.8.11.2/ ./config make&make install cd .. useradd mysql -s /sbin/nologin mkdir -p /usr/local/mysql/var chown -Rf mysql:mysql /usr/local/mysql 解压.编译.安装MySQL数据库服务程序 删除/etc目录

Weka安装和一简单例子入门

Download from http://www.cs.waikato.ac.nz/ml/weka for Windows, Mac, Linux 安装,可改路径 安好,如下 运行 点开erxplore,出现 点open file,打开数据文件 安装目录下又点数据文件,如下图的data文件夹里,也可讲其复制到常用的文件夹里,方便每次使用. 打开数据文件夹的一个数据文件为例,如weather.nominal 之后这样的界面,多观察看看各种属性和标签按钮,慢慢熟悉 点击edit按钮,出现如下数据的表

安卓安装配置以及简单的输出Helloworld

一.安装配置 1.软件下载: (1)打开网页,搜索http://pan.baidu.com进入百度云,登录百度账号(账号:15567067134 密码:qs19941025).进入之后有个安卓应用的文件夹,双击进入,有个安卓工具和jdk,再分别双击进入这两个文件夹,将里面的所有东西都下载下来.(最好都下载到同一个文件夹里,方便以后使用) 2.安装: (2)将eclipse解压缩,进入eclipse文件夹,打开eclipse.保存到开放盘里即可(最好和之前下载的文件放在一起,便于以后使用).打开后

InteliiJ IDEA的安装配置与简单使用

小Alan前段时间一直在家里搬砖,已经很久没有接触技术了,从今天开始重拾技术,工欲善其事,必先利其器,以前在做Java开发的时候最常用的IDE就是Eclipse莫属了,不过随着岁月的流逝,在2016年的时候有一款IDE,InteliiJ IDEA实现了对Eclipse的反超,其实大概从12年开始InteliiJ IDEA就开始慢慢流行了,那时候小Alan都还没有参加工作呢,那时候貌似小Alan在读计算机专业,还学过C语言,不过后来还是选择了走Java开发路线,所以如今最主流,甚至以后主流的IDE

Redis的安装配置及简单集群部署

最近针对中铁一局项目,跟事业部讨论之后需要我们的KF平台能够接入一些开源的数据库,于是这两天研究了一下Redis的原理. 1. Redis的数据存储原理及简述 1.1Redis简述 Redis是一个基于内存且支持持久化的key-value的NoSQL数据库,其中每个key和value都是使用对象表示的,具有以以下特征:多样数据类型.持久化.主从同步.它支持存储的value类型包括string(字符串).list(链表).hash(哈希).set(集合)和zset(有序集合).这些数据类型都支持p

【Mac + Appium + Java1.8学习(三)】之IOS自动化环境安装配置以及简单测试用例编写(模拟器、真机)

前提条件: =========================================== 1.Xcode版本为Xcode10及以上2.Appium版本必须为1.9及以上,因为Xcode为10.0 3.appium-desktop4.安装所需依赖库,包括: a.Homebrew b.Git c.node (brew install node) d.npm (brew install npm)e.carthage (brew install carthage)f.libimobiledev

mongodb的安装配置与简单使用过程

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引. MongoDB是NoSQL中的一种,随着越来越多公司产品使用,已经开始逐步取代一些高性能查询的地位了. 它的特点是高性能.易部署.易使用,存

Saltstack 安装配置 及 简单操作示例

Saltstack 介绍 通过部署 Saltstack环境,可以在成千上万台服务器上批量执行命令.对于不同的业务进行集中管理.分发文件.采集数据.软件包管理等,有利于运维人员提高工作效率,规范业务配置和操作. Saltstack由 Master和 Minion构成, Master是服务端,表示一台服务器; Minion是客户服务端,表示多台服务器.在 Master上发送命令给符合条件的 Minion, Minion就会执行相应的命令, Master和 Minion之间是通过 Zeromq(消息队