`

Jsp/Servlet复习笔记-----第3章 Servlet技术

阅读更多
3.1 简介   
3.1.1 Servlet的功用   
3.1.2 Servlet代码初探
Java Servlet是一种使用Java编写的CGI程序
CGI:通用网关接口
与传统CGI不同的是,Servlet是使用一种多线程的程序处理方式 ---性能较高
在Servlet中可以控制输出HTML代码,则所有的HTML代码都必须使用out.println();一行一行输出。
package org.sky.darkness.servlet ;
import java.io.* ;
// HttpServlet属于javax.servlet.http包下
// ServletException属于javax.servlet包下
import javax.servlet.* ;
// HttpServletRequest、HttpServletResponse存放在javax.servlet.http包下
import javax.servlet.http.* ;

public class SimpleServlet extends HttpServlet
{
	// 表示处理get请求
	public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		PrintWriter out = resp.getWriter() ;
		out.println("<HTML>") ;
		out.println("<HEAD>") ;
		out.println("<TITLE>THE FIRST SERVLET</TITLE>") ;
		out.println("</HEAD>") ;
		out.println("<BODY>") ;
		out.println("<H1>Hello World!!!</H1>") ;
		out.println("</BODY>") ;
		out.println("</HTML>") ;
		out.close() ;
	}
	public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		this.doGet(request,response) ;
	}
};

/*
   // 表示要使用一个Servlet
  <servlet>
    // 在web.xml文件内部起作用的名字
	<servlet-name>simple</servlet-name>
    // Servlet程序所在的包.类名称
	<servlet-class>org.sky.darkness.servlet.SimpleServlet</servlet-class>
  </servlet>
  // Servlet 映射地址
  <servlet-mapping>
     // 在web.xml文件内部起作用的名字,与上面一致
	<servlet-name>simple</servlet-name>
    // 具体的映射路径,前面必须有一个/
	<url-pattern>/demo</url-pattern>
  </servlet-mapping>
*/

注意:只要是web.xml文件被修改,一定要重起服务器

3.1.3 Jsp的作用  
3.2  Servlet API
3.2.1 javax.servlet.ServletInputStream:
* public int readLine(byte[] b,
                    int off,
                    int len)
             throws java.io.IOException
3.2.2 javax.servlet.ServletOutputStream
* public void print(java.lang.String s)
           throws java.io.IOException
* public void println(java.lang.String s)
             throws java.io.IOException
3.2.3 javax.servlet.ServletRequest(Interface)
* public java.lang.Object getAttribute(java.lang.String name)
* public java.util.Enumeration getAttributeNames()
* public java.lang.String getParameter(java.lang.String name)
* public java.util.Enumeration getParameterNames()
* public java.lang.String[] getParameterValues(java.lang.String name)
* public void setAttribute(java.lang.String name,
                         java.lang.Object o)
* public void setCharacterEncoding(java.lang.String env)
                       throws java.io.UnsupportedEncodingException
3.2.4 javax.servlet.ServletResponse(Interface)
* public java.io.PrintWriter getWriter()
                              throws java.io.IOException
3.2.5 javax.servlet.http.HttpServletRequest(Interface)
* public java.lang.String getContextPath()
* public Cookie[] getCookies()
* public java.lang.String getHeader(java.lang.String name)
* public HttpSession getSession()
3.2.6 javax.servlet.http.HttpServletResponse(Interface)
* public void addCookie(Cookie cookie)
* public void sendRedirect(java.lang.String location)
                  throws java.io.IOException
3.2.7 javax.servlet.ServletConfig(Interface)
* public java.lang.String  getInitParameter(java.lang.String name)
       * public java.util.Enumeration getInitParameterNames()
* public ServletContext getServletContext()
3.2.8 javax.servlet.ServletContext(Interface)
* public java.lang.Object getAttribute(java.lang.String name)
* public java.util.Enumeration getAttributeNames()
* public ServletContext getContext(java.lang.String uripath)
* public RequestDispatcher getRequestDispatcher(java.lang.String path)
* public void setAttribute(java.lang.String name,
                         java.lang.Object object)

3.3  Servlet 的生命周期
3.3.1 生命周期的3 个方法
JDK提供的是JAVA SE包,而JAVAEE包不在JAVASE中,需要单独配置
Servlet生命周期:
1、 初始化1次:默认情况下:在第一次使用Servlet程序时初始化
<load-on-startup>1</load-on-startup>
关于Servlet初始化方法有两种:
 init()
 init(ServletConfig config):当使用此初始化时,上面的无参无效
2、 服务(doGet、doPost):直接输入的就是doGet请求
3、 销毁(1次):
 服务器关闭
 次Servlet长时间不使用

对于一个基本的Servlet程序必须注意以下几点:
 符合Servlet结构
 在web.xml文件中配置
package org.sky.darkness.servlet ;
import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;

public class LifeCycleServlet extends HttpServlet {
	// 初始化
	public void init() throws ServletException {
		System.out.println("** Servlet 初始化 ...") ;
	}
    /*
	// 初始化
	public void init(ServletConfig config) throws ServletException {
		System.out.println("** ServletConfig 初始化 ...") ;
	}
	*/
	// 表示处理get请求
	public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException {
		System.out.println("** Servlet doGet处理 ...") ;
	}
	// 处理post请求
	public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException {
		System.out.println("** Servlet doPost处理 ...") ;
	}
	// 销毁
	public void destroy() {
		System.out.println("** Servlet 销毁 ...") ;
	}
};

/*
  <servlet>
	<servlet-name>life</servlet-name>
	<servlet-class> org.sky.darkness.servlet.LifeCycleServlet</servlet-class>
  </servlet>

  <servlet-mapping>
	<servlet-name>life</servlet-name>
	<url-pattern>/lc</url-pattern>
  </servlet-mapping>
*/

3.3.2 生命周期的各个阶段
3.4 HTTP Servlet 的基础知识
3.5 用MyEclipse开发Servlet应用程序

初始化:
package org.sky.darkness.servlet ;
import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;

public class InitParameterServlet extends HttpServlet
{
	// 初始化
	// 要取得初始化参数,必须使用以下初始化方法
	public void init(ServletConfig config) throws ServletException
	{
		// config对象中有取得初始化参数的方法:getInitParameter("参数名称")
		String name = config.getInitParameter("name") ;
		String password = config.getInitParameter("password") ;
		String dd = config.getInitParameter("DBDRIVER") ;

		System.out.println("name => "+name) ;
		System.out.println("password => "+password) ;
		System.out.println("DBDRIVER => "+dd) ;
	}

	// 表示处理get请求
	public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		// System.out.println("** Servlet doGet处理 ...") ;
	}
	// 处理post请求
	public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		// System.out.println("** Servlet doPost处理 ...") ;
	}
	// 销毁
	public void destroy()
	{
		// System.out.println("** Servlet 销毁 ...") ;
	}
};

/*
  <servlet>
	<servlet-name>param</servlet-name>
	<servlet-class> org.sky.darkness.servlet.InitParameterServlet</servlet-class>
	<load-on-startup>0</load-on-startup>
	<init-param>
		<param-name>name</param-name>
		<param-value>darkness</param-value>
	</init-param>
	<init-param>
		<param-name>password</param-name>
		<param-value>wind</param-value>
	</init-param>
	<init-param>
		<param-name>DBDRIVER</param-name>
		<param-value>oracle.jdbc.driver.OracleDriver</param-value>
	</init-param>
  </servlet>

  <servlet-mapping>
	<servlet-name>param</servlet-name>
	<url-pattern>/ipar</url-pattern>
  </servlet-mapping>
*/

servlet文件夹下的jsp提交:
<form action="../formServlet" method="post"> 
用户名:<input type="text" name="uname">
<input type="submit" value="提交">
</form>
----------------------------或--------------------------------------
<servlet>
	<servlet-name>form</servlet-name>
	<servlet-class>org.sky.darkness.servlet.FormServlet</servlet-class>
  </servlet>
  <servlet-mapping>
	<servlet-name>form</servlet-name>
	<url-pattern>/servlet/formServlet</url-pattern>
  </servlet-mapping>


ServletContext对象如何取得:
 init():不写,直接取得
ServletContext app = this.getServletContext() ;
 init(ServletConfig config):通过config对象取得:
ServletContext app = this.config.getServletContext() ;
package org.sky.darkness.servlet ;
import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;

public class FormServlet extends HttpServlet
{
	private ServletConfig config = null ;
	public void init(ServletConfig config) throws ServletException 
	{
		this.config = config ;
	}
	// 表示处理get请求
	public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		// System.out.println("** Servlet doGet处理提交参数 ...") ;
		this.doPost(req,resp) ;
	}
	// 处理post请求
	public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
	{
		String name = req.getParameter("uname") ;
		// 取得application对象
		// ServletContext app = this.getServletContext() ;
		ServletContext app = this.config.getServletContext() ;
		app.setAttribute("addr","sky") ;
		// 取得一个session对象
		HttpSession session = req.getSession() ;
		session.setAttribute("sname",name) ;
		// System.out.println("** Servlet doPost处理提交参数 ...") ;
		System.out.println("name = "+name) ;
		// 重定向
		resp.sendRedirect("demo.jsp") ;
	}
};

/*
  <servlet>
	<servlet-name>form</servlet-name>
	<servlet-class>org.sky.darkness.servlet.FormServlet</servlet-class>
  </servlet>
  <servlet-mapping>
	<servlet-name>form</servlet-name>
	<url-pattern>/formServlet</url-pattern>
  </servlet-mapping>
*/

-------------form.jsp--------------
<form action="formServlet" method="post">
用户名:<input type="text" name="uname">
<input type="submit" value="提交">
</form>
------------demo.jsp-------------
<h1><%=session.getAttribute("sname")%></h1>

<h1><%=getServletContext().getAttribute("addr")%></h1>
<h1><%=application.getAttribute("addr")%></h1>

分享到:
评论

相关推荐

    Jsp-Servlet复习笔记-----第3章 Servlet技术 - 堕落天使 - JavaEye技术网站.mht

    Jsp-Servlet复习笔记-----第3章 Servlet技术 - 堕落天使 - JavaEye技术网站.mhtJsp-Servlet复习笔记-----第3章 Servlet技术 - 堕落天使 - JavaEye技术网站.mht

    jsp/servlet个人学习笔记

    **JSP(JavaServer Pages)/Servlet 知识详解** JSP 和 Servlet 是 Java Web 开发中的核心组件,它们在构建动态网站时起着至关重要的作用。以下是对这两个技术及其相关概念的详细解释: 1. **JSP 基础** JSP 是一...

    林学良Jsp&Servlet学习笔记

    **JSP(Java Server Pages)与Servlet是Java Web开发中的两个核心技术,它们在构建动态网页和处理客户端请求方面起着至关重要的作用。** **JSP技术:** JSP是一种服务器端脚本语言,用于创建动态网页。它允许开发者...

    JSP&Servlet学习笔记.pdf

    本书是作者多年来教学实践经验的总结,汇集了... 本书在讲解的过程中,以“微博”项目贯穿全书,随着每一章的讲述都在适当的时候将JSP & Servlet技术应用于“微博”程序之中,以便读者能了解完整的应用程序构建方法。

    [JSP&Servlet;学习笔记(第2版)]

    **JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。

    JSP_Servlet学习笔记(第2版)

    很好的一本入门jsp/servlet书籍。... 本书在讲解的过程中,以“微博”项目贯穿全书,随着每一章的讲述都在适当的时候将JSP &Servlet;技术应用于“微博”程序之中,以便读者能了解完整的应用程序构建方法。

    JSP Servlet 学习笔记 第2版 林信良 随书光盘 共三卷

    JSP Servlet 学习笔记 第2版 林信良 随书光盘 第3卷

    吉林大学珠海学院JSP&Servlet学习笔记(第二版)课后答案

    第三章集中讨论了JSP和Servlet的数据存储机制,包括Request对象、Response对象、Session对象、Application对象等。此外,本章节还介绍了JSP和Servlet的数据类型、数据转换等。 第四章至第九章涵盖了JSP和Servlet的...

    JSP_Servlet学习笔记(第2版).pdf

    《JSP & Servlet学习笔记(第2版)》是作者多年来教学实践经验的总结,...《JSP & Servlet学习笔记(第2版)》以“微博”项目贯穿全书,将JSP & Servlet技术应用于实际项目开发之中,并使用重构方式来改进应用程序架构。

    笔记jsp/js/ajax/dwr/servlet/html

    【笔记jsp/js/ajax/dwr/servlet/html】笔记主要涵盖了初学者在学习Web开发时需要掌握的基础知识,包括HTML、SERVLET、JSP、JS、AJAX和DWR等技术。以下是对这些知识点的详细说明: 1. **HTML**: - HTML(HyperText...

    JSP &amp; Servlet学习笔记(第2版)

     本书在讲解的过程中,以“微博”项目贯穿全书,随着每一章的讲述都在适当的时候将JSP &Servlet技术应用于“微博”程序之中,以便读者能了解完整的应用程序构建方法。 作者简介: 林信良(网名:良葛格)  学历...

    JSP & Servlet学习笔记

    本书是作者多年来教学实践经验的总结,汇集了..., 本书在讲解的过程中,以“微博”项目贯穿全书,随着每一章的讲述都在适当的时候将JSP & Servlet技术应用于“微博”程序之中,以便读者能了解完整的应用程序构建方法。

    Servlet-JSP-课堂笔记.md

    Servlet-JSP-课堂笔记.md

    老杜Servlet笔记.zip

    哔哩哔哩上老杜的Servlet笔记。 2020-5-05 Servlet学习 Tomcat 服务器配置 2020-5-08 UML 2020-5-08 Servlet学习 2020-5-09 Servlet学习 2020-5-10 Servlet学习 2020-5-11 Servlet学习---Cookie 2020-5-11 Servlet中...

    JSP&Servlet学习笔记(第2版)_打印版

    根据提供的文件信息,标题为“JSP&Servlet学习笔记(第2版)_打印版”,描述指出文档经过空白边裁剪处理以便于打印。虽然提供的部分内文无法直接转化为明确的知识点,但我们可以根据标题和描述推测该文档的主要内容,...

    servlet 笔记

    Servlet是一种服务器端的Java技术,用于扩展应用程序的功能。它主要用于Web应用程序开发,可以处理客户端发送到Web服务器的各种请求,并且能够生成动态网页。Servlet通常用于执行复杂的操作,如数据库连接、会话跟踪...

    java笔记jsp,servlet.docx

    【Java Servlet技术详解】 Java Servlet是一种Java编程语言的规范,用于扩展Web服务器的功能,它可以接收并响应来自HTTP客户端(通常是Web浏览器)的请求,并向HTTP客户端发送响应。Servlet技术是Java在Web开发中的...

Global site tag (gtag.js) - Google Analytics