【java项目实战】Servlet具体解释以及Servlet编写登陆页面(二)

Servlet是Sun公司提供的一门用于开发动态web网页的技术。

Sun公司在API中提供了一个servlet接口,我们假设想使用java程序开发一个动态的web网页,仅仅须要实现servelet接口,并把类部署到webserver上就能够执行了。

究竟什么是Servlet呢?

通俗一点,仅仅要是实现了servlet接口的java程序,均称Servlet。

Servlet是由sun公司命名的,Servlet = Server + Applet(Applet表示小应用程序),Servlet是在server端执行的小程序。

编写一个现实登陆的Servlet,并部署訪问

1、我们先写一个简单的HTML,能够在WebRoot新建,也能够复制一个写好的HTML,我们用post提交方式。当然也能够用get提交,大家能够自己尝试一下。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
		<title>登录</title>
	</head>
	<body>

		<form action="http://localhost:8080/loginServlet/LoginServlet" method="post">
			用户:<input type="text" name="username" /><br/>
			密码:<input type="password" name="password" /><br/>
			<input type="submit" value="登录" />

		</form>
	</body>
</html>

2、完毕Servlet,在Web项目的src中右键新建一个类LoginServlet。输入以下代码就可以。

//引入所须要的包
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class LoginServlet extends HttpServlet {
	//重写doGet方法
	public void doGet(HttpServletRequest request,
            HttpServletResponse response)
     throws ServletException,
            IOException {
		String username = request.getParameter("username");
		String password = request.getParameter("password");      

		//server端信息打印
		//System.out.println("username=" + username);
		//System.out.println("password=" + password);
		//设置编码格式
		response.setContentType("text/html;charset=GB18030");

		//返回html页面
		response.getWriter().println("<html>");
		response.getWriter().println("<head>");
		response.getWriter().println("<title>登录信息</title>");
		response.getWriter().println("</head>");
		response.getWriter().println("<body>");
		response.getWriter().println("欢迎【" + username + "】用户登录成功!

!!");
		response.getWriter().println("</body>");
		response.getWriter().println("</html>");
		}
	//重写doPost方法
	public void doPost(HttpServletRequest request,
            HttpServletResponse response)
    throws ServletException,
            IOException {
		doGet(request, response);
	}
}

3、在WebRoot下的WEB-INF的web.xml,部署我们的Servlet,启动server。

<?xml version="1.0" encoding="UTF-8"?

>
<web-app version="2.4"
	xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <servlet>
	   	<servlet-name>MyServlet</servlet-name>
	   	<servlet-class>LoginServlet</servlet-class>
    </servlet>

    <servlet-mapping>
	   	<servlet-name>MyServlet</servlet-name>
	        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>
</web-app>

4、一定要启动server,之后在浏览器中输入你的URL。此时我们就能够调用Servlet了。我们看一下执行结果。

实例的demo:http://download.csdn.net/detail/jiuqiyuliang/7593641

==============================================================================================================================

假设不知道怎么配置java Web项目。能够移驾到我的上篇博客(一步步教你使用MyEclipse搭建java Web项目开发环境(一)),以下我们具体介绍Servlet的基础知识。

==============================================================================================================================

Servlet基础

1、解读API文档。纯手工编写一个Servlet程序,并部署訪问(如上所看到的)。

解读API对于拒绝学习API的程序猿们是一种煎熬,但它却是我们学习和进步的最好工具,且学且珍惜。

大家能够在点进去看一看。从上图,能够看出Servlet接口定义三个实现类,各自是FacesServlet, GenericServlet。 HttpServlet。以下我们简单的介绍一下。

2、Servlet接口实现类

(1)FacesServlet是一个用于管理利用JSF(JavaServer Faces)构建用户界面的web应用程序请求处理生命周期的Servlet。(FacesServletis a servlet that manages the request processing lifecycle for web applications that are utilizing JavaServer Faces
to construct the user interface.)。大家假设想深入的学习。能够点这里

(2)GenericServlet是HttpServlet的父类,包括了servlet的经常用法。GenericServlet使得程序猿写servlets更加简单。它提供了初始化和销毁生命周期的方法,以及实现了写日志文件的方法。

(3)HttpServlet指可以处理HTTP请求的servlet。这是开发者在编写Servlet时,通常应继承这个类就可以。

对于这三个实现类,仅仅为大家做一个简单的介绍,假设想深入的研究。直接看API就好。

3、Servlet部署

client通过URL地址訪问webserver中的资源,所以若想訪问Servlet必需要把servlet程序映射到一个URL地址上。在web.xml文件里使用<servlet>元素和<servlet-mapping>元素完毕,如上面的实例。

*<servlet>用于注冊Servlet,包括了<servlet-name>和<servlet-class>两个子元素,分别用于设置servlet的名称以及servlet的类名。

*<servlet-mapping>用于映射上面<servlet>中的对外訪问路径,相同包括<servlet-name>和<url-pattern>两个元素。分别用于设置servlet的名称以及servlet的对外訪问路径。

在servlet映射到URL有两种格式:

1.“*.扩展名”

2.以正斜杠(/)开头并以“/*”结尾。

servlet对url的匹配规则以及路径问题。大家能够上网查。有非常多相关的资料。比如:http://blog.csdn.net/xh16319/article/details/8014107

4、Webserver调用Servlet过程(Servlet生命周期)

servlet程序是由webserver调用,webserver实现了对servlet生命周期的管理。servlet的生命周期分为四步:

1)实例化以及载入servlet,new的过程。

2)初始化init(ServletConfig)。

3)处理请求,调用servlet的service,doget,dopost方法将Request和Response。作为參数传递。

4)退出服务,调用destory方法释放资源。

注意:

1、servlet仅仅实例化一次。感觉有点单例模式的意思,大家能够研究一下Tomcat的实现原理。

2、init方法也仅仅运行一次。servlet实例仅仅创建一次。所以init初始化仅仅调用一次。

5、Servlet线程安全问题

当多个client并发訪问同一个Servlet时,webserver会为每个client的訪问请求创建一个线程。并在这个线程上调用service方法。因此,service方法内假设訪问了同一个资源的话。就有可能引发线程安全问题。大家重点理解以下两句就可以:

(1) Servlet是单实例多线程的,假设存在能够改动的成员变量将会出现线程安全问题。

(2) 使用Servlet最好保证Servlet是无状态的,也就是没有能够改动的成员变量。

这篇博文仅仅是介绍了Servlet基础知识。大家还有什么疑问能够给我留言,我会及时给大家解决。

=============================================================================================================================

下篇博文。我们做一个JDBC连接Oracle数据库的实例,欲知后事怎样,请看下回分晓!

=============================================================================================================================

时间: 2024-11-09 03:09:40

【java项目实战】Servlet具体解释以及Servlet编写登陆页面(二)的相关文章

【java项目实战】Servlet详解以及Servlet编写登陆页面(二)

Servlet是Sun公司提供的一门用于开发动态web网页的技术.Sun公司在API中提供了一个servlet接口,我们如果想使用java程序开发一个动态的web网页,只需要实现servelet接口,并把类部署到web服务器上就可以运行了. 到底什么是Servlet呢? 通俗一点,只要是实现了servlet接口的java程序,均称Servlet.Servlet是由sun公司命名的,Servlet = Server + Applet(Applet表示小应用程序),Servlet是在服务器端运行的小

【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)

首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官网上下载安装即可,之后需要细心的配置环境变量,我给大家推荐百度文库的一篇文章,猛戳这里. 第二步,下载Tomcat,当然可以去Apache Tomcat的官网,同样,您可以移驾到我的资源下载,外送API文档(免资源分). 第三步,下载MyEclipse,MyEclipse官网,傻瓜式安装即可. ===

【java项目实战】dom4j解析xml文件,连接Oracle数据库

简介 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方,我们还是看一下官方给出的解释.如下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT等语言的库.它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP等编程标准. 特点 dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,例

Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow

原文:Android项目实战(十七):QQ空间实现(二)-- 分享功能 / 弹出PopupWindow 这是一张QQ空间说说详情的截图. 分析: 1.点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 2.当该区域出现的时候,详情界面便灰了,也说成透明度变化了 3.当任意选了一个按钮或者点击了该区域以外的部分,该区域消失,灰色界面变回亮白色,并执行点击的按钮对应的操作 显然,这个功能我们需要用PopupWindow实现更好~ --------------------

【无私分享:ASP.NET CORE 项目实战(第八章)】读取配置文件(二) 读取自定义配置文件

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生了问题:我们使用的是在 Startup.cs 中(如下图)来实现配置读取,有两个问题 ① 我们如果定义N种配置,是否要再这里添加N条这样的配置 : ② 如果我们的配置不想写在appsettings.json中呢 解决问题 带着上面的两个问题,我们首先来添加一个配置文件 siteconfig.json

商城项目实战 | 2.2 Android 仿京东商城——自定义 Toolbar (二)

本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 上一篇文章<商城项目实战 | 2.1 Android 仿京东商城--自定义 Toolbar (一)>中已经对 Toolbar 的一些基本属性以及简单使用做了介绍了,这篇文章就开始介绍如何定义属于自己的 Style 的 Toolbar 了. 自定义 Theme 修改 application 的 style -- AppTheme,自己设置 Toolbar 的背景色以及

Java项目实战1

本文主要介绍一个Java实战项目的例子: DAO类设计: com.huawei.daojava.sql.Connectionjava.sql.PreparedStatementjava.sql.ResultSetjava.sql.SQLExceptionjava.text.SimpleDateFormatjava.util.ArrayListjava.util.Collectionsjava.util.Datejava.util.HashMapjava.util.Listjava.util.Ma

【java项目实践】具体解释Ajax工作原理以及实现异步验证username是否存在+源代码下载(java版)

一年前,从不知道Ajax是什么,伴随着不断的积累,到如今常常使用,逐渐有了深入的认识. 今天,假设想开发一个更加人性化,友好,无刷新,交互性更强的网页,那您的目标一定是Ajax. 介绍 在具体讨论Ajax是什么之前,先让我们花一分钟了解一下Ajax做什么.如图所看到的: 如上图展示给我们的就是使用Ajax技术实现的效果.伴随着web应用的越来越强大而出现的是等待.等待server响应,等待浏览器刷新.等待请求返回和生成新的页面成为了程序猿们的最最头疼的难题.随着Ajax的出现使web应用程序变得

【java项目实战】ThreadLocal封装Connection,实现同一线程共享资源

线程安全一直是程序员们关注的焦点.多线程也一直是比較让人头疼的话题,想必大家以前也遇到过各种各种的问题.我就不再累述了.当然,解决方案也有非常多,这篇博文给大家提供一种非常好的解决线程安全问题的思路. 首先.我们先简单的认识一下ThreadLocal,之后是实例+解析,最后一句话总结. 1.认识一下ThreaLocal 认识ThreadLocal必需要通过api文档,不只具有说服力,并且它会给你更加全面的解释.以下我我给大家从api文档上截取一张图,并标出来了七点需要重点理解的内容,实例过后的解