`

servelt相关的一些例子

阅读更多
总的项目结构图如下:



配置文件web.xml
<?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>
	<!--servlet名称,必须唯一-->
		<servlet-name>Firstservlet</servlet-name>
		<!--对应的servlet类-->
		<servlet-class>firstservlet.FirstServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Firstservlet</servlet-name>
		<!--访问的URL地址: http://localhost:8080/servlet/firstservlet-->
		<!-- 对应index.jsp中的表单动作<form action="firstservlet">  -->
		<url-pattern>/firstservlet</url-pattern>
	</servlet-mapping>

	<!-- 配置servlet -->
	<servlet>
		<servlet-name>testservlet</servlet-name>
		<servlet-class>servletAPI.TestServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>testservlet</servlet-name>
		<url-pattern>/testservlet</url-pattern>
	</servlet-mapping>
	
	<!-- 配置servlet -->
	<servlet>
		<description>
			This is the description of my J2EE component
		</description>
		<display-name>
			This is the display name of my J2EE component
		</display-name>
		<servlet-name>initservlet</servlet-name>
		<servlet-class>servletAPI.InitServlet</servlet-class>
		<!-- 连接数据库的初始化参数 -->
		<init-param>
			<param-name>driver</param-name>
			<param-value>
				com.microsoft.jdbc.sqlserver.SQLServerDriver
			</param-value>
		</init-param>
		<init-param>
			<param-name>URL</param-name>
			<param-value>
				jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=login
			</param-value>
		</init-param>
		<init-param>
			<param-name>username</param-name>
			<param-value>sa</param-value>
		</init-param>
		<init-param>
			<param-name>password</param-name>
			<param-value>sa</param-value>
		</init-param>
	</servlet>
 
 <!-- 建立servlet自动生成的 -->
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>ShowCart</servlet-name>
    <servlet-class>shoppingCart.ShowCart</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>ShortMessage</servlet-name>
    <servlet-class>ch05shortmessage.ShortMessage</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>ProductList</servlet-name>
    <servlet-class>ch06servletJDBC.ProductList</servlet-class>
  </servlet>
	<servlet-mapping>
		<servlet-name>initservlet</servlet-name>
		<url-pattern>/initservlet</url-pattern>
	</servlet-mapping>
  <servlet-mapping>
  
    <servlet-name>ShowCart</servlet-name>
    <url-pattern>/ShowCart</url-pattern>
    
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ShortMessage</servlet-name>
    <url-pattern>/shortmessage</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ProductList</servlet-name>
    <url-pattern>/productlist</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
  	<welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>


1,第一个servlet例子
package firstservlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class FirstServlet extends HttpServlet {
	
	private int stringtoint(String str)throws NumberFormatException{
		int i = Integer.parseInt(str);
		return i;
	}

	//覆盖父类的方法doGet,doPost,  doPost不会显示传递的参数
	public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
		
		String str;
		int inputNum;
		String outputstring;
		
		
		response.setContentType("text/html;charset=gb2312");
		PrintWriter out = response.getWriter();
		
		
		Cookie cookies[]=request.getCookies();
		
		//输出网页
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.println("<h1>servlet例子</h1>");
		
		if((cookies==null)||(cookies.length==0)){
			out.println("没有Cookies!");
		}
		else{
			out.println("<center><h1>响应消息中的Cookies的信息</h1>");
			out.println("<table border=2>");
			out.println("<tr><th>Name</th><th>value</th><th>comment</th><th>max age</th></tr>");//表头
			for(int i=0;i<cookies.length;i++){
				Cookie c = cookies[i];
				out.println("<tr><td>"+c.getName()+"</td><td>"+c.getValue()+"</td><td>"+c.getComment()+"</td><td>"+c.getMaxAge()+"</td><td>");
			}//maxage为cookie的过期时间,过期的cookie就不会往服务器端发送了
			
			out.println("</table></center>");
		}
		
		out.println("<h1>httpsession接口</h1>");
		HttpSession session = request.getSession();
		long time = session.getCreationTime();
		Date createDate = new Date(time);
		out.println("seesion创建的时间:"+createDate+"<br>");
		out.println("seesion的ID:"+session.getId()+"<br>");
		
		//第一次执行为null,后面的为12,重启Tomcat后为null,或者关闭浏览器重启为null
		
		out.println("session的getValue:"+session.getValue("item1")+"<br>"); 
		Integer sessionItem = new Integer(12);
		session.putValue("item1", sessionItem); //保存到session中
		
		
		str = request.getParameter("txtInputNum"); //取得请求参数,txtInputNum为index.jsp中设置的参数名称
		
		try {
			inputNum = stringtoint(str);
			outputstring = "你输入的数字为:"+inputNum;
		} catch (NumberFormatException e) {
			outputstring = "对不起,输入不是数字";
		
		}
		out.println("<h1>表单传递参数</h1>");
		out.println(outputstring);
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
		
		
	}
	public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
		doGet(request,response);
	}
}


index.jsp

<%@ page language="java" contentType = "text/html;charset=gb2312"%>
<%
//String path = request.getContextPath();
//String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   <!--   <base href="<%//=basePath
   %>">  -->
    
    <title>servlet处理异常</title>
  </head>
  <body>
   <form action="firstservlet"> 
			请输入一个数字: 
			<input type="text" name="txtInputNum" />
			<input type="submit" value="submit" />
		</form> 
  </body>
</html>

执行结果:






如果输入不是数字,最后一行显示:        对不起,输入不是数字

2,购物车的例子,用session保存信息
package shoppingCart;

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;
import javax.servlet.http.HttpSession;

public class ShowCart extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=gb2312"); // 设置返回的MIME类型,只能设置一次,为纯html文件
		PrintWriter out = response.getWriter();
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>购物车实例</TITLE></HEAD>");
		out.println("  <BODY>");

		String[] items = { "电视机", "电冰箱", "电脑" };
		HttpSession session = request.getSession();     //取得会话
		Integer itemCount = (Integer) session.getValue("itemCount");
		if (itemCount == null) {
			itemCount = new Integer(0);
		}

		String[] itemSelected;
		String itemName;
		itemSelected = request.getParameterValues("item");// 取得表单中的checkbox的值
		if (itemSelected != null) {
			for (int i = 0; i < itemSelected.length; i++) {
				itemName = itemSelected[i]; // 对应于checkbox的value
				itemCount = new Integer(itemCount.intValue() + 1);
				session.putValue("Item" + itemCount, itemName); // 商品名称为ItemX
				session.putValue("itemCount", itemCount); // 商品数量保存到session中
			}
		}

		out.println("<h3>购物篮中的物品:</h3>");
		for (int i = 1; i <= itemCount.intValue(); i++) {
			String item = (String) session.getValue("Item" + i); // 取出商品名称在checkbox对应的数值
			out.println(items[Integer.parseInt(item)]);
			out.println("<br>");
		}
		out.println("<hr>");

		out.println("<a href='showcart.jsp'>继续购物</a>");

		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

}


showcart.jsp
<%@ page language="java" contentType = "text/html;charset=gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
     <title>购物车</title>
  </head>
  <body>
   <form action="ShowCart" method="post"> 
			选购商品:<br> 
			<input type="checkbox" name="item"  value="0" />
			第一种:电视机<br>
			<input type="checkbox" name="item"  value="1" />
			第二种:电冰箱<br>
			<input type="checkbox" name="item"  value="2" />
			第三种:电脑<br>
			<hr>
			<input type="submit" name ="addtocart" value="加入购物篮" />
		</form> 
  </body>
</html>

执行结果:


选择后点击“加入购物篮”


如果点击链接“继续购物”,返回showcart.jsp页面,选择“电脑”加入购物车



3,servlet通过jdbc链接数据库
package ch06servletJDBC;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class ProductList extends HttpServlet {

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	}

	private boolean query(String driverName, String connectionURL, Properties pro,
			String sql, PrintWriter out) {

		boolean rc = true;
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		long startMS = System.currentTimeMillis();
		int rowCount = 0;

		try {
			System.out.println("begin to load class");
			
			Class.forName(driverName).newInstance();
			conn = DriverManager.getConnection(connectionURL, pro);
			System.out.println(conn==null);
			
			stmt = conn.createStatement();
			
			System.out.println(stmt==null);
			rs = stmt.executeQuery(sql);

			rowCount = formatTable(rs, out);
			

		} catch (Exception e) {
			e.printStackTrace();
			rc = false;
			return false;
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (stmt != null) {
					stmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (Exception e) {

			}
		}

		if (rc) {
			long elapsed = System.currentTimeMillis() - startMS;
			out.println("<br>共" + rowCount + "记录,耗时" + elapsed + "毫秒!");
			
		}
		return true;
	}

	private int formatTable(ResultSet rs, PrintWriter out) throws SQLException {
		int rowCount = 0;
		out.println("<center><table border=2>");

		ResultSetMetaData rsmd = rs.getMetaData();
		int columnCount = rsmd.getColumnCount();
		out.println("<tr>");

		for (int i = 0; i < columnCount; i++) {
			out.println("<th>" + rsmd.getColumnLabel(i + 1) + "</th>");// 字段名作为表头
		}
		out.println("</tr>");
		
		while(rs.next()){
			rowCount++;
			out.println("<tr>");
			for (int i = 0; i < columnCount; i++) {
				out.println("<td>" + rs.getString(i+1) + "</td>");// 字段名作为表头
			}
			
			
			out.println("</tr>");
		}
		
		
		out.println("</table></center>");

		return rowCount;
	}
	
	public void init(ServletConfig cfg) throws ServletException{
		super.init(cfg);
	}
	
	public void destroy(){
		super.destroy();
	}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException{
		response.setContentType("text/html;charset=gb2312");
//		PrintWriter out = response.getWriter();
		
		PrintWriter out = new PrintWriter(response.getOutputStream());
		
		
		Properties pro = new Properties(); // 用属性的数据结构存储用户名和密码
		pro.put("user", "sa");
		pro.put("password", "sa");
		String sql;
		sql = "select * from productlist"; //数据库中的productlist表格
		String connectionURL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=login";

		out.println("<HTML>");
		out.println("  <HEAD><TITLE>产品列表</TITLE></HEAD>");
		out.println("<h1>产品信息列表</h1>");
		out.println("  <BODY>");
//		需要有mssql的三个数据库驱动jar包
		boolean r = query("com.microsoft.jdbc.sqlserver.SQLServerDriver", connectionURL,
				pro, sql, out);
		out.println("查询结果:"+r);
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}
	
}

结果:

4,把链接数据库的参数配置在web.xml中的servlet初始参数中,见web.xml
package servletAPI;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class InitServlet extends HttpServlet {

	private String driver = "";
	private String URL = "";
	private String username = "";
	private String password = "";

//	获取web.xml中的init-param参数
	public void init() throws ServletException { //自动执行
		driver = getInitParameter("driver"); //参数"driver" 为param-name,返回的是param-value
		URL = getInitParameter("URL");
		username = getInitParameter("username");
		password = getInitParameter("password");
	}
//获得数据库连接的方法
	public Connection getConnection() {
		Connection con = null;
		try {
			Class.forName(driver);
			con = DriverManager.getConnection(URL, username, password);
			return con;
		} catch (Exception e) {
		}
		return con;
	}
//通过doGet()方法实现数据查询功能
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=gb2312");
		PrintWriter out = response.getWriter();
		Connection con = this.getConnection();
		try {
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery("select * from Loginuser");
			while (rs.next()) {
				out.print(rs.getString("username"));
				out.print("&nbsp;&nbsp;&nbsp;&nbsp;");
				out.print(rs.getString("password"));
				out.print("&nbsp;&nbsp;&nbsp;&nbsp;");
				out.print(rs.getString("gender"));
				out.print("&nbsp;&nbsp;&nbsp;&nbsp;");
				out.print(rs.getInt("age"));
				out.print("&nbsp;&nbsp;&nbsp;&nbsp;");
				out.print(rs.getDate("logintime"));
				out.print("<br>");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

结果就是显示数据库中Loginuser表格的内容

源码见附件
  • 大小: 50.6 KB
  • 大小: 58.4 KB
  • 大小: 10.2 KB
  • 大小: 16.5 KB
  • 大小: 14.6 KB
  • 大小: 17.8 KB
  • 大小: 22.5 KB
分享到:
评论

相关推荐

    Servlet入门的例子

    本教程将引导初学者进入Servlet的世界,通过一个简单的入门例子来理解其基本概念和工作流程。 1. **Servlet简介** Servlet是Java API的一部分,允许开发者创建动态Web应用。它是一个Java类,继承自`javax.servlet....

    servlet入门小例子

    在本"Servlet入门小例子"中,我们将深入探讨Servlet的基本概念、工作原理以及如何通过表单将数据传递到Servlet中。 1. **Servlet基本概念** Servlet是一个Java类,遵循Java Servlet API规范,用于扩展服务器的功能...

    servlet与jsp例子

    本项目“servlet与jsp例子”旨在通过实际操作展示这两种技术的结合使用,以及如何利用反射机制实现类似Struts框架的功能。 Servlet是Java编写的小程序,它们运行在服务器端,接收并响应来自客户端(如Web浏览器)的...

    最简单 Servlet例子

    在本文中,我们将深入探讨"最简单Servlet例子",以及如何使用`HttpServlet`进行入门级的学习。 Servlet是一个Java类,它遵循Servlet API规范,允许我们扩展服务器的功能。在Web应用程序中,Servlet通常用来接收和...

    Servlet小例子源码

    这个"Servlet小例子源码"压缩包显然提供了关于这些概念的实际应用示例,非常适合初学者来理解和掌握。 1. **Servlet**:Servlet是Java编程语言中的一个接口,由Java EE规范定义,用于扩展服务器的功能。Servlet可以...

    简单的servlet例子

    在这个"简单的servlet例子"中,我们将深入理解如何创建一个基础的Servlet以及如何配置它在Web应用程序中运行。 1. **Servlet接口与实现** `mybasicservlet` 类实现了`Servlet`接口。`Servlet`接口定义了Servlet的...

    servlet反射注解例子

    本示例“servlet反射注解例子”旨在帮助我们深入理解如何将这两种技术结合使用,以实现更加灵活和可维护的服务器端应用程序。本文将详细探讨反射和注解在Servlet中的应用。 首先,让我们来了解一下什么是反射。反射...

    java servlet 最简单的小例子

    在这个"java servlet 最简单的小例子"中,我们将深入理解Servlet的基本概念和实现步骤,特别适合初学者入门学习。 1. **Servlet生命周期** - **加载与实例化**:当第一个请求到达Servlet时,服务器会加载Servlet类...

    Velocity+servlet简单工程例子

    这个"Velocity + Servlet简单工程例子"是为了帮助那些正在学习Velocity的爱好者们更好地理解和应用Velocity模板语言到实际的Web开发中。Velocity通过将表现层(视图)与业务逻辑层(控制器)分离,实现了MVC(Model-...

    servlet 文件上传下载例子

    在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...

    简单的servlet+Filter的例子

    回到主题,"简单的servlet+Filter的例子"可能涉及到一个简单的应用场景,比如登录验证。在用户尝试访问受保护的资源(如Servlet)之前,Filter会检查请求中是否携带了有效的session信息。如果没有,Filter会重定向...

    servlet 的一个例子,在eclipse下基于ext的.

    servlet 的一个例子,在eclipse下基于ext的.servlet 的一个例子,在eclipse下基于ext的.servlet 的一个例子,在eclipse下基于ext的.servlet 的一个例子,在eclipse下基于ext的.servlet 的一个例子,在eclipse下基于ext的....

    关于servlet+JavaBean+jsp的小例子

    本文将详细解析"关于servlet+JavaBean+jsp的小例子"所涉及的知识点,并深入探讨如何利用这三种技术实现MVC Model2架构的分页功能。 Servlet是Java提供的一种用于扩展服务器功能的接口,它允许开发者处理HTTP请求和...

    JavaEE Servlet例子.rar

    JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子

    jsp+servlet+javabean登录小例子

    本项目“jsp+servlet+javabean登录小例子”旨在通过一个简单的登录功能,帮助初学者理解这三者如何协同工作。 首先,`JSP(JavaServer Pages)`是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,以实现...

    jsp_servlet登录注册例子

    【JSP与Servlet简介】 JSP(JavaServer Pages)是Java...通过这个例子,学习者可以理解JSP与Servlet的角色分工,以及如何与数据库进行交互。同时,对于Web开发中的数据验证、错误处理和安全性方面也有一定的实践意义。

    一个简单的JSP+Servlet图片上传例子

    这个“一个简单的JSP+Servlet图片上传例子”是一个基础教程,旨在帮助初学者理解如何通过这两种技术实现用户界面与服务器端的交互,特别是处理文件上传的功能。 首先,JSP是Java的一种视图技术,它允许开发者在HTML...

    JQuery+servlet自动补全例子

    本例子基于jQuery库和Servlet技术实现了一个自动补全功能,旨在帮助用户更高效地输入信息。 **jQuery简介** jQuery是一款广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。jQuery...

    jsp+servlet+bean+mysql例子

    综上所述,"jsp+servlet+bean+mysql"的例子为初学者提供了一个完整的Java Web应用程序模型。通过学习和实践这个例子,开发者可以理解Web应用程序的各个组件如何协同工作,以及如何利用这些技术构建动态、数据驱动的...

Global site tag (gtag.js) - Google Analytics