`

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

阅读更多

Servlet是Sun公司提供的一门用于开发动态web网页的技术。Sun公司在API中提供了一个servlet接口,我们如果想使用java程序开发一个动态的web网页,只需要实现servelet接口,并把类部署到web服务器上就可以运行了。

 

到底什么是Servlet呢?

 

通俗一点,只要是实现了servlet接口的java程序,均称Servlet。Servlet是由sun公司命名的,Servlet = Server + Applet(Applet表示小应用程序),Servlet是在服务器端运行的小程序

 

编写一个现实登陆的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");      
		
		//服务器端打印信息
		//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,启动服务器。

 

 

<?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、一定要启动服务器,之后在浏览器中输入你的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部署

 

客户端通过URL地址访问web服务器中的资源,所以若想访问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、Web服务器调用Servlet过程(Servlet生命周期)

 

servlet程序是由web服务器调用,web服务器实现了对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线程安全问题

 

当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用service方法,因此,service方法内如果访问了同一个资源的话,就有可能引发线程安全问题。大家重点理解下面两句即可:
(1) Servlet是单实例多线程的,如果存在可以修改的成员变量将会出现线程安全问题。
(2) 使用Servlet最好保证Servlet是无状态的,也就是没有可以修改的成员变量。


 

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

 

 

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

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

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

 

 

 

分享到:
评论

相关推荐

    Tomcat与java web 开发技术详解-孙卫琴-第二版

    《Tomcat与Java Web开发技术详解》是孙卫琴老师撰写的一本深入解析Java Web开发和Tomcat服务器的著作,其第二版进一步更新了内容,提供了更为详尽的指导。这本书针对初学者和有一定经验的开发者,旨在帮助读者掌握...

    servlet/jsp深入详解源代码

    `ch15`至`ch19`可能讲解了更高级的主题,如EL(Expression Language)、JSTL(JavaServer Pages Standard Tag Library)、MVC模式在JSP中的应用,以及Servlet和JSP的实战应用等。 这些章节的深入讲解,结合源代码...

    Tomcat与Java Web开发技术详解

    - **Servlet概念**:解释了Servlet的生命周期,包括初始化、服务、销毁等阶段,以及如何编写和注册Servlet。 - **JSP基础**:介绍了JSP的语法,包括脚本元素、指令标签、EL表达式和JSTL标签库的使用。 - **MVC...

    Java项目实战-停车场管理系统(附源码,部署说明).zip

    在这个项目中,开发者可以学习到如何使用Java进行实际项目开发,包括Servlet的编写、JDBC数据库操作、JSP动态页面的实现以及Maven或Gradle等构建工具的使用。此外,还可以了解到RESTful API的设计和JSON数据格式的...

    Java实训教程 Java软件开发实战 web开发技术 第3章 servlet 共101页.pptx

    ### Java Web 开发实战之 Servlet 技术详解 #### 一、Servlet 技术简介 在 Java Web 开发中,Servlet 是一项非常重要的技术。它主要用于处理来自客户端的 HTTP 请求,并生成相应的响应。Servlet 作为 Java 平台的...

    孙卫琴 Tomcat与Java&Web开发技术详解.pdf

    它基于SUN Microsystems提供的Java Servlet规范以及JavaServer Pages(JSP)技术。 #### 1.2 Tomcat架构 - **Catalina**:核心容器,处理HTTP请求。 - **Connector**:实现不同协议(如HTTP/HTTPS/AJP等)与核心...

    jsp+servlet+javabean实现网上商城项目完整源码

    《基于JSP、Servlet和JavaBean的网上商城项目详解》 网上商城项目是现代电子商务的重要组成部分,它将传统的购物体验与互联网技术相结合,为用户提供便捷的在线购物平台。本项目利用JSP、Servlet和JavaBean技术实现...

    [独门架构:Java Web开发应用详解].李宁.著

    总的来说,《独门架构:Java Web开发应用详解》是一本全面覆盖Java Web开发技术的书籍,无论你是初学者还是经验丰富的开发者,都能从中获取宝贵的实战经验和深入理解。通过阅读和实践书中的内容,你将能够构建出高效...

    JAVA+JSP+Servlet+android+SSH视频教程全集+项目视频 亲自总结

    ### JAVA+JSP+Servlet+Android+SSH视频教程全集+项目视频知识点解析 #### Java基础知识及应用 Java作为一门跨平台的高级编程语言,在软件开发领域占据着重要的地位。本教程将涵盖Java基础语法、面向对象编程(OOP)...

    Java课设+Java Web 基于JSP+Servlet的论坛系统.zip

    总之,“Java课设+Java Web 基于JSP+Servlet的论坛系统”是一个全面涵盖Java Web开发核心概念的实战项目,无论是初学者还是有一定基础的开发者,都能从中获益良多。通过实际操作,你可以更好地掌握Java后端开发技能...

    Tomcat与Java Web开发技术详解(光盘)

    4. **源码分析**:展示已编写的Java Web项目的源代码,以便学习者研究和模仿。 5. **环境搭建指南**:步骤指导如何在本地机器上安装和配置Tomcat服务器。 6. **故障排查**:提供常见问题及解决方法,帮助开发者解决...

    [JAVA开发实战经典(名师讲坛)].李兴华.扫描版+目录

    根据提供的文件信息,我们可以推断出这是一本关于Java开发实战的经典教程书籍,作者为李兴华。尽管具体内容部分仅提供了“Test System.out.println();”这样的示例代码,但结合标题和描述,我们可以围绕该书可能涵盖...

    java 开发实战经典 李兴华 课后答案

    《Java开发实战经典》是李兴华老师撰写的一本深入浅出的Java编程教程,旨在帮助读者掌握实际的Java开发技能。这本书涵盖了从基础语法到高级特性的全面讲解,包括面向对象编程、集合框架、多线程、网络编程、数据库...

    tomcat与java web开发技术详解关盘内容

    【压缩包子文件的文件名称列表】:“Tomcat与Java.Web开发技术详解源码”很可能包含了与教程配套的示例代码,这些代码涵盖了Java Web开发的关键环节,例如Servlet的编写、JSP页面设计、MVC模式的应用等。通过这些...

    servlet简介

    - **编写Servlet类**:编写Java类,继承`HttpServlet`并实现必要的方法。 - **配置部署描述符**:在`web.xml`文件中定义Servlet,并配置其URL映射。 - **打包部署**:将Servlet类及其依赖文件打包成WAR文件,然后将...

    servlet+jsp的一个网上书店

    本项目“servlet+jsp的一个网上书店”是一个适合初学者进行实践和进阶学习的理想案例,旨在帮助刚接触这两门技术的新手巩固理论知识并提升实战技能。 Servlet是Java编写服务器端应用程序的标准接口,主要用于处理...

    这是一些Java Web项目.zip

    【Java Web项目实战详解】 ...在"java实战"的场景下,理解并掌握以上这些技术至关重要。通过实践,开发者不仅能深入理解Java Web开发的全貌,还能提升解决实际问题的能力,从而在职业生涯中不断进步。

Global site tag (gtag.js) - Google Analytics