Java Web Servlet知识点讲解(二)

一、定义Servlet:

public class HelloServlet extends HttpServlet {

@Override  protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

System.out.println("get method invoke");

PrintWriter out=response.getWriter();

out.print("hello, HTTP GET method!");

}

@Override  protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

System.out.println("post method invoke");

PrintWriter out=response.getWriter();

out.print("hello, HTTP POST method!");

}

}

 二、发布Servlet:


方法一:注解方式

@WebServlet(name = "HelloServlet", urlPatterns = {"/hello","/greeting"})

@WebServlet注解属性:



  方法二:web.xml配置方式  


<servlet>


<description>This is a hello greeting servlet</description>


<display-name>Hello Servlet</display-name>


   <servlet-name>HelloServlet</servlet-name>


</servlet>


<servlet-mapping>


   <servlet-name>HelloServlet</servlet-name>


   <url-pattern>/greeting</url-pattern>


   <url-pattern>/hello</url-pattern>


</servlet-mapping>


web.xml配置标签:  


<!--指示服务器在收到引用一个目录名而不是文件名的URL时,使用哪个文件-->
<welcome-file-list>
    <!--用于指定欢迎页面的路径-->
    <welcome-file></welcome-file>
</welcome-file-list>


<!--服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName。 但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素-->
<servlet-mapping>
    <!--用于指定上文配置的servlet的名称-->
    <servlet-name></servlet-name>
<!--描述用于解析URL的模式-->
    <url-pattern></url-pattern>
</servlet-mapping>


<!--如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。可通过使用HttpSession的setMaxInactiveInterval方法明确设置单个会话对象的超时值,或者可利用session-config元素制定缺省超时值-->
<session-config>
    <!--用于session的超时时间-->
    <session-timeout></session-timeout>
</session-config>


<!--在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet元素就是用来完成此项任务的-->
<servlet>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
    <!--指定应用的大图标和小图标-->
    <icon></icon>
    <!--用于指定servlet的一些初始化参数-->
    <init-param></init-param>
    <!--用于指定一个jsp页面来对该servlet进行初始化-->
    <jsp-file></jsp-file>
<!--用于指定应用启动时加载的优先级-->
    <load-on-startup></load-on-startup>
    <!--该元素指定了该web应用程序运行时所需用的运行身份-->
    <run-as></run-as>
<!--该元素将 <security-role> 定义的安全角色名链接到使用Servlet逻辑进行硬编码的备用角色名。使用此附加提取层,可以在部署时配置Servlet,且不必更改Servlet 代码-->
    <security-role-ref></security-role-ref>
    <!--用于指定当前servlet对应的类的路径-->
    <servlet-class></servlet-class>
    <!--用于对当前servlet取一个名称,以便在后面的映射时使用-->
    <servlet-name></servlet-name>
</servlet>


<!--该元素声明一个对Web服务的引用-->
<service-ref>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
<!--元素为端口组件声明处理器。它包含一个必需的handler-name和handlerclass和可选的init-param,soap-header,soap-role和port-name元素。handler-name元素定义了处理器的名称(在web.xml中是唯一的)。handler-class定义了处理器所实现类的完全限定名-->
    <handler></handler>
    <!--指定应用的大图标和小图标-->
    <icon></icon>
<!--该元素包含将WSDL定义映射到服务终端接口和服务接口的那个文件的位置-->
    <jaxrpc-mapping-file></jaxrpc-mapping-file>
<!--该元素声明了一个在容器中解析服务终端接口到一个WSDL端口的客户端依赖关系。它使用一个特别的端口组件选择性地关联服务终端接口-->
    <port-component-ref></port-component-ref>
    <!--该元素指定Web应用所依赖的JAX-RPC完全限定接口名-->
    <service-interface></service-interface>
<!--该元素与其两个子元素(namespaceURI和localpart)声明了正在引用的WSDL服务元素。如果不指定wsdl-file元素或者WSDL文件只包含一个服务-->
    <service-qname></service-qname>
<!--该元素定义的Web服务(与java:comp/env上下文对应的)-->
    <service-ref-name></service-ref-name>
<!--该元素包含Web服务描述语言文件的位置(相对于Web应用程序的根目录)。这个文件必须放在WEB-INF/wsdl目录中-->
    <wsdl-file></wsdl-file>
</service-ref>


<!--给出安全角色的一个列表,这些角色将出现在servlet元素内的security-role-ref元素的role-name子元素中。分别地声明角色可使高级IDE处理安全信息更为容易-->
<security-role>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义那些安全角色可以访问在此安全约束中定义的资源-->
    <role-name></role-name>
</security-role>


<!--制定应该保护的URL。它与login-config元素联合使用-->
<security-constraint>
    <!--用于定义那些组或委托人可以访问此安全约束内定义的web资源集合-->
    <auth-constraint></auth-constraint>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
    <!--用于定义客户端如何与服务器进行通信-->
    <user-data-constraint></user-data-constraint>
    <!--用于定义用此安全约束的web应用程序的区域-->
    <web-resource-collection></web-resource-collection>
</security-constraint>


<!--声明一个资源工厂使用的外部资源-->
<resource-ref>
    <!--声明描述信息-->
    <description></description>
    <!--用于指定资源由Application或Container来许可-->
    <res-auth></res-auth>
    <!--用于指定资源名称 -->
    <res-ref-name></res-ref-name>
    <!--用于指定资源是否可以共享.默认值为 Shareable -->
    <res-sharing-scope></res-sharing-scope>
    <!--用于指定资源种类-->
    <res-type></res-type>
</resource-ref>


<!--声明与资源相关的一个管理对象-->
<resource-env-ref>
    <!--声明描述信息-->
    <description></description>
<!--指定资源环境引用的名称,其它值为web应用程序代码中使用的环境条目名称。名称是相对于java:comp/env上下文的JNDI名称,该名称在web应用程序中必须唯一-->
    <resource-env-ref-name></resource-env-ref-name>
    <!--指定资源环境引用的类型,它是java语言的类或者接口的完全限定名称-->
    <resource-env-ref-type></resource-env-ref-type>
</resource-env-ref>


<!--如果Web应用具有想到特殊的文件,希望能保证给他们分配特定的MIME类型,则mime-mapping元素提供这种保证-->
<mime-mapping>
    <!--用于指定其扩展名名称-->
    <extension></extension>
    <!--用于指定MIME的格式-->
    <mime-type></mime-type>
</mime-mapping>


<!--用于指出将引用与web.xml中声明资源相关联的信息地址-->
<message-destination-ref>
    <!--声明描述信息-->
    <description></description>
<!--用来连接对一个目标消息的引用。它的值必须通过web.xml文件或者在同一个J2EE应用单元的部署描述文件中message-destination元素的message-destination-name子元素来声明-->
    <message-destination-link></message-destination-link>
<!--定义一个信息地址引用的JNDI名(相对于java:comp/env上下文)。在web.xml中,这个名称必须唯一-->
    <message-destination-ref-name></message-destination-ref-name>
<!--素声明了目标的类型,可以是javax.jms.Queue或javax.jms.Topic-->
    <message-destination-type></message-destination-type>
<!--说明引用所指定的目标信息的使用情况。它的值指出是使用目标信息中的消息,还是产生目标信息,亦或两者兼有(有效值为Consumes,Produces或ConsumesProduces)-->
    <message-destination-usage></message-destination-usage>
</message-destination-ref>


<!--元素指定了一个逻辑目标消息,后者映射到服务器特有部署描述文件中的物理目标信息-->
<message-destination>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
    <!--指定应用的大图标和小图标-->
    <icon></icon>
    <!--为一个目标信息指定一个唯一的名称(仅限于web.xml中)-->
    <message-destination-name></message-destination-name>
</message-destination>


<!--指定服务器应该怎样给试图访问受保护页面的用户授权。它与sercurity-constraint元素联合使用-->
<login-config>
    <!--指定对用户身份验证的方法。可能值:
BASIC:使用浏览器进行身份验证(默认),
FORM:使用用户编写的HTML表单-->
    <auth-method></auth-method>
<!--指定必需相对于文档根目录的web资源的URI,用于对用户进行身份验证。这个可以是HTML页面、JSP或者HTTP Servlet,且必须返回-->
    <form-login-config></form-login-config>
    <!--用于对用户凭据进行身份验证时所引用的领域名称-->
    <realm-name></realm-name>
</login-config>


<!--该元素用来设置各种Locale和字符集编码之间的映射关系的集合-->
<locale-encoding-mapping-list>
    <!--该元素用来设置各种Locale和字符集编码之间的映射关系-->
    <locale-encoding-mapping>
        <!--该元素用来指定其Locale的名称,如:zh-CN-->
        <locale></locale>
        <!--该元素用来指定其编码方式-->
        <encoding></encoding>
    </locale-encoding-mapping>
</locale-encoding-mapping-list>


<!--servlet API的版本2.3增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或servlet环境时得到通知。Listener元素指出事件监听程序类-->
<listener>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
    <!--指定应用的大图标和小图标-->
    <icon></icon>
    <!--用于指定监听器的类(完整路径)-->
    <listener-class></listener-class>
</listener>


<!--该元素主要用来设定JSP的相关配置-->
<jsp-config>
    <!--定义了一组JSP的特性。这些特性实际上对应JSP的page directive定义的特性-->
    <jsp-property-group>
        <!--声明描述信息-->
        <description></description>
        <!--用于定义Web应用的名称-->
        <display-name></display-name>
        <!--若为true,表示不支持EL语法-->
        <el-ignored></el-ignored>
        <!--指定应用的大图标和小图标-->
        <icon></icon>
        <!--设置JSP网页的结尾,扩展名为.jspf -->
        <include-coda></include-coda>
        <!--设置JSP网页的抬头,扩展名为.jspf -->
        <include-prelude></include-prelude>
<!--如果节点值为:true则表示这个文件为jsp文档(xml格式),如果为false,则表示为标准的jsp文件-->
        <is-xml></is-xml>
        <!--设定JSP网页的编码-->
        <page-encoding></page-encoding>
        <!--若为true表示不支持<%scription%>语法-->
        <scripting-invalid></scripting-invalid>
        <!--设定值所影响的范围,如:/CH2 或者/*.jsp -->
        <url-pattern></url-pattern>
    </jsp-property-group>
    <!--用来设定JSP网页用到的Tag Library路径-->
    <taglib>
        <!--用于指定TLD文件对应Web站台的存放位置-->
        <taglib-location></taglib-location>
<!--用于指定TLD文件的URI,JSP网页的taglib指令可以由这个URI存取到TLD文件-->
        <taglib-uri></taglib-uri>
    </taglib>
 </jsp-config>


<!--Web应用图标:指出IDE和GUI工具用来表示Web应用的大图标和小图标-->
<icon>
    <!--用于指定大图标-->
    <large-icon></large-icon>
    <!--用于指定小图标-->
    <small-icon></small-icon>
</icon>


<!--一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联-->
<filter-mapping>
<!--该元素有四个可能的值:即REQUEST(默认),FORWARD,INCLUDE和ERROR,可以在一个<filter-mapping>元素中加入任意数目的<dispatcher>,使得filter将会作用于直接从客户端过来的request,通过forward过来的request,通过include过来的request和通过<error-page>过来的request。如果没有指定任何< dispatcher >元素,默认值是REQUEST -->
    <dispatcher></dispatcher>
    <!--用于指定上文定义的filter名称-->
    <filter-name></filter-name>
    <!--用于指定上文定义的servlet名称-->
    <servlet-name></servlet-name>
    <!--描述用于解析URL的模式-->
    <url-pattern></url-pattern>
</filter-mapping>


<!--过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联-->
<filter>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
    <!--用于指定当前filter对应的类的路径-->
    <filter-class></filter-class>
    <!--用于对当前filter取一个名称,以便在后面的映射时使用-->
    <filter-name></filter-name>
    <!--指定应用的大图标和小图标-->
    <icon></icon>
    <!--用于指定当前filter的一些初始化参数-->
    <init-param></init-param>
</filter>


<!--在返回特定HTTP状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面-->
<error-page>
    <!--用于指定Http的错误代码-->
    <error-code></error-code>
    <!--用于指定程序中的异常(异常的完整路径)-->
    <exception-type></exception-type>
    <!--用于指定程序出现错误时,跳转到的页面-->
    <location></location>
</error-page>


<!--声明Web应用的环境项-->
<env-entry>
    <!--声明描述信息-->
    <description></description>
<!--一个相对于java:comp/env环境JNDI名-->
    <env-entry-name></env-entry-name>
<!--(java.lang程序包中一个类型的完全限定类名,java.lang.Boolean、java.lang.String等)组成-->
    <env-entry-type></env-entry-type>
<!--用于指定环境条目的值-->
    <env-entry-value></env-entry-value>
</env-entry>


<!--声明一个EJB的主目录的引用-->
<ejb-ref>
    <!--声明描述信息-->
    <description></description>
<!--当前bean从一个不同jar包中引用另外一个bean的名称。通过ejb-link元素定义的名称必须使用"#"和bean注册名与Web应用程序中war文件的位置相关联-->
    <ejb-link></ejb-link>
    <!--java:comp/env的对应的EJB引用名-->
    <ejb-ref-name></ejb-ref-name>
    <!--用于声明实体或会话的bean类型-->
    <ejb-ref-type></ejb-ref-type>
    <!--用于指定EJB Home接口的完全限定名称-->
    <home></home>
    <!--bean的remote接口的完全限定名称-->
    <remote></remote>
</ejb-ref>


<!--声明一个EJB的本地主目录的应用-->
<ejb-local-ref>
    <!--声明描述信息-->
    <description></description>
<!--当前bean从一个不同jar包中引用另外一个bean的名称。通过ejb-link元素定义的名称必须使用"#"和bean注册名与Web应用程序中war文件的位置相关联-->
    <ejb-link></ejb-link>
    <!--java:comp/env的对应的EJB引用名-->
    <ejb-ref-name></ejb-ref-name>
    <!--用于声明实体或会话的bean类型-->
    <ejb-ref-type></ejb-ref-type>
    <!--用于指定包含企业Bean本地接口的完全限定名称-->
    <local></local>
    <!--用于指定包含企业Bean本地Home接口的完全限定名称-->
    <local-home></local-home>
</ejb-local-ref>


<!--定义了WEB应用的名字-->
<display-name></display-name>


<!--声明WEB应用的描述信息-->
<description></description>


<!--该元素声明应用范围内的初始化参数-->
<context-param>
    <!--声明描述信息-->
    <description></description>
    <!--用于指定上下文参数的名称-->
    <param-name></param-name>
    <!--用于指定上下文参数的值-->
    <param-value></param-value>
 </context-param>

在发布一个组件时,同时使用web.xml与注解时,则注解优先于web.xml里的配置。

 
三、访问Servlet

HTTP请求最常用的方式有两种:GET和POST。

1、GET:

通过HTTP GET请求访问HelloServlet发布时的url进行访问:http://localhost:8080/hello

2、POST:(form表单)

<h1>hello servlet 实例</h1>

<a href="hello">Get方式请求servlet</a>

<hr/>

<form action="hello" method="post">

<input type="submit" value="Post方式请求servlet"/>

</form>

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

原文地址:https://www.cnblogs.com/huangdanlei/p/12202420.html

时间: 2024-08-01 22:42:30

Java Web Servlet知识点讲解(二)的相关文章

Java Web基础教程(二)开发基础

Java Web基础教程(二)开发基础 转载:Future魏来 前言 Java web是一种基于B\S(浏览器\服务器)架构的网络应用程序的技术实现.这种结构的Web应用程序被大量的企业级应用所采用.随着Web应用程序的规模不断扩大,传统的Web开发模式无法满足日渐复杂的业务需要,所以出现了更加合理更加先进的MVC开发模式.随之而来的也出现了一系列的基于MVC模式的开发框架,Struts框架.Spring MVC 等. 1. Web 技术的发展 1. 第一阶段 静态网站 Web技术出现伊始,由于

JAVA WEB SERVLET 基础知识点

Servlet Servlet Servlet API 概述 Servlet 编写基础的Servlet应用程序 1编写和编译Servlet类 2应用程序的目录结构 3调用Servlet ServletRequest ServletResponse ServletConfig ServletContext GenericServlet 1 HTTPServlet 2 HttpServletRequest 3 HttpServletResponse 处理HTML表单 使用部署描述符 掌握Servle

java web开发入门十二(idea创建maven SSM项目需要解决的问题)基于intellig idea(2019-11-09 11:23)

一.spring mvc action返回string带双引号问题 解决方法: 在springmvc.xml中添加字符串解析器 <!-- 注册string和json解析适配器 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"&

Java Web -- Servlet(1) 必备知识

学习Java WEB开发必备的基本概念: 1.WEB 本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思.现广泛译作网络.互联网等技术领域.表现为三种形式,即超文本(hypertext).超媒体(hypermedia).超文本传输协议(HTTP)等. 2.静态网页(可简单理解为html) 是指网页的内容是固定的,不会根据浏览器者的不同需求而改变.(实实在在保存在服务器上的文件) 3.动态网页 是指在接到用户访问要求后动态生成的页面,页面内容会随着访问时间和访问者发生变化(并不是独立存在于服务

Java Web servlet理解

一.有两种应用程序 1.桌面应用程序:需要下载,安装,更新等.如QQ,office等 2.web应用程序:就是我们开发的web项目,这不需要用户下载,只需要用户客户端联网,访问相应的互联网资源. 二.Http协议 HTTP是一个属于应用层的面向对象的超文本传输协议,基于TCP/IP协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.HTTP特点: (1)无连接:分为4个阶段:建立连接.发送请求.等待响应.关闭连接 优点:快速.简单.不占用网络服务器资源 缺点:速度由网络来决定,每次传输数据

Java Web -- Servlet(4) 开发Servlet的三种方法、配置Servlet详解、Servlet的生命周期(1)

一.实现Servlet接口 通过实现Servlet接口来了解Servlet的生命周期 (1)以规范的形式创建一个web应用(即在webapps目录下创建一个web应用) 创建web应用 (2)classes目录下创建一个.java(该java文件为实现Servlet接口) 创建文件夹MyFirstServlet.java 代码如下: package com.focus; import javax.servlet.*; import javax.servlet.http.*; import jav

Java Web -- Servlet(10) 中文乱码处理专题

一.产生乱码的原因: 当浏览器通过http协议访问web服务器时,假设此时浏览器的编码是utf-8,当把请求发给web服务器时,web服务器却以ISO-8859-1编码接收,所以就产生了乱码. //设置web服务器接收时,以utf-8形式接收,如下: request.setCharacterEncoding("utf-8"); //编码方式设置和浏览器一样(还有常见的gbk.gb2312) //设置浏览器显示时,以utf-8显示. response.setContentType(&qu

Java Web —— servlet 容器

要想了解什么是 Servlet 容器,我们得先了解什么的 Web 服务器. 一.Web 服务器 Web 服务器是使用 HTTP 协议来传输数据的,其中最简单的一种情况就是用会在 client 中输入一个 URL ,然后通过网页进行浏览,在网页中可以看到你编写的界面,因此,服务器的工作就是发送网页到客户端. 二.Servlet 容器 单单使用 Web 服务器的话,我们会发现用户和客户端只能向服务器请求静态的网页.如果说用户想根据自己的输入来读取网页的话就不能单单需要 Web 服务器来发送网页,这个

[Java.Web] Servlet 的一些细节

本文来自 传智播客视频PPT 1. 由于客户端是通过 URL 地址访问 web 服务器中的资源,所以 Servlet 程序若想被外界访问,必须把 servlet 程序映射到一个 URL 地址上,这个工作在 web.xml 文件中使用 <servlet> 元素和 <servlet-mapping> 元素完成. 2. <servlet> 元素用于注册 servlet ,它包含有两个主要的子元素:<servlet-name> 和<servlet-class&