- 浏览: 459453 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- java基础 (59)
- struts (8)
- spring (8)
- 数据库 (8)
- java 网络编程 (29)
- hibernate (3)
- JavaScript (10)
- 日志管理 (2)
- jsp (4)
- servlet (7)
- xml (4)
- ajax (2)
- web service (4)
- 算法与数据结构 (13)
- java 反射机制 (11)
- java 泛型 (3)
- java I/O (8)
- java 线程 (12)
- JavaEE (6)
- java解惑 (33)
- 工具 (5)
- MyEclipse编程实践 (1)
- OSGI (2)
- 设计模式 (9)
- 正则表达式 (0)
- EJB (3)
- Ubuntu linux (6)
- Android (1)
- web前端 (2)
- 找工作 (1)
- SCA (1)
- maven (1)
- 缓存 (1)
- json (1)
- javamail (1)
- 工作笔记 (2)
最新评论
-
霜花似雪:
博主可以分享一下源码吗?
使用maven构建web项目实例 -
王庆波-行:
很好的demo!
memcache使用实例 -
surpassno:
大写的牛逼
java可视化显示内存使用情况 -
zhulin0504:
怎么访问NetEcho.html页面呀???
applet与servlet的网络通信 -
springdata:
java多线程实例demo源代码下载:http://www.z ...
java多线程例子
总的项目结构图如下:
配置文件web.xml
1,第一个servlet例子
index.jsp
执行结果:
如果输入不是数字,最后一行显示: 对不起,输入不是数字
2,购物车的例子,用session保存信息
showcart.jsp
执行结果:
选择后点击“加入购物篮”
如果点击链接“继续购物”,返回showcart.jsp页面,选择“电脑”加入购物车
3,servlet通过jdbc链接数据库
结果:
4,把链接数据库的参数配置在web.xml中的servlet初始参数中,见web.xml
结果就是显示数据库中Loginuser表格的内容
源码见附件
配置文件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(" "); out.print(rs.getString("password")); out.print(" "); out.print(rs.getString("gender")); out.print(" "); out.print(rs.getInt("age")); out.print(" "); 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表格的内容
源码见附件
- servlet.rar (20.1 KB)
- 下载次数: 5
发表评论
-
servlet下载文件
2010-10-11 09:06 2077下载文件的servlet源码 package downloa ... -
servlet上传文件(后)
2010-10-11 08:37 2001负责上传文件的servlet package upload; ... -
servlet上传文件(前)----得到http请求消息的内容
2010-09-30 10:22 1973在网页中上传文件时,会用到file类型的表单域,并且需要设 ... -
applet与servlet的网络通信
2010-09-29 15:29 2432applet与servlet的网络通信的例子 新建web项目 ... -
java自学==servlet
2010-09-14 12:59 926servlet连接数据库,在配置文件中填写servlet的初始 ... -
Java杂谈(八)--Servlet/Jsp
2010-08-19 17:20 786终于正式进入J2ee ...
相关推荐
Servlet入门的例子
几个Servlet典型应用的例子。如:Servlet中实现页面转发,Servlet处理表单数据
这个例子就做了一件 1:通过表单把数据servlet中,........................................
最简单 Servlet例子 Httpservlet 入门级的
这个工程是个例子,主要运用jsp 和servlet.其中利用到了反射来动态加载servlet.有点像struts框架的样子
里边用到了Servlet Filter Listener 很适合新手学习的小例子
servlet和jsp 例子程序 servlet和jsp 例子程序 servlet和jsp 例子程序
我自己的servlet例子,最基本的,适合初学者
servlet 过滤器例子 filterservlet 过滤器例子 filterservlet 过滤器例子 filter 如果是action 则需要改动url patten
简单的servlet+Filter的例子,简单的结合这两个的例子。
Servlet会话小例子
servlet 的一个例子,在eclipse下基于ext的.servlet 的一个例子,在eclipse下基于ext的.servlet 的一个例子,在eclipse下基于ext的.servlet 的一个例子,在eclipse下基于ext的.servlet 的一个例子,在eclipse下基于ext的....
servlet javabeans的例子
JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子
适合初学者,最简单的servlet小例子,希望对你有帮助,不懂可以问我
一个简单的JSP+Servlet图片上传例子
jsp+servlet+javabean登录小例子
Flex4.6+java+servlet上传图片例子+图片上传预览
jsp servlet 上传例子 jspsmartupload jsp servlet 上传例子 jspsmartupload jsp servlet 上传例子 jspsmartupload
Servlet学习的最好的例子,可以全面的了解关于Servlet的相关知识