好文档 - 专业文书写作范文服务资料分享网站

Java - Servlet入门教程 

天下 分享 时间: 加入收藏 我要投稿 点赞

String mathmin=request.getParameter(\ String number,xingming; Connection con=null; Statement sql=null; ResultSet rs=null; int math,english,physics;

try{Class.forName(\ }

catch(ClassNotFoundException e){} try

{ con=DriverManager.getConnection(\ sql=con.createStatement();

String eCondition=\\

String mCondition=\\

String condition=\\

rs=sql.executeQuery(condition); out.print(\ out.print(\

out.print(\ out.print(\ out.print(\ out.print(\ out.print(\ out.print(\ while(rs.next())

{ out.print(\ number=rs.getString(1);

out.print(\ xingming=rs.getString(2);

out.print(\ math=rs.getInt(\ out.print(\ english=rs.getInt(\ out.print(\

36

physics=rs.getInt(\ out.print(\ out.print(\ }

out.print(\ con.close(); }

catch(SQLException e) { }

out.println(\ out.println(\ } }

7.7.2 使用共享连接

数据库操作中,建立连接是耗时最大的操作之一。如果客户访问的是同一数据库,那么,为每个客户都建立一个连接是不合理的。我们已经知道,servlet的成员变量是被所有用户共享的。这样,我们可以把Connection对象作为一个成员变量被所有的客户共享,也就是说第一个访问数据库的客户负责建立连接,以后所有的客户共享这个连接,每个客户都不要关闭这个共享的连接。下面的servlet使用共享连接查询数据库的所有记录。

例子15

使用共享连接的servlet源文件 ShareInquire.java: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*;

public class ShareInquire extends HttpServlet { Connection con=null; //共享连接。

public void init(ServletConfig config) throws ServletException {super.init(config); //加载JDBC-ODBC桥接器:

try{Class.forName(\ }

catch(ClassNotFoundException e){} }

//通过Post方法按名字查询记录:

37

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException { PrintWriter out=response.getWriter();

response.setContentType(\MIME类型。

out.println(\ out.println(\ Statement sql=null; ResultSet rs=null; if(con==null) { try

{ //第一个用户负责建立连接con。

con=DriverManager.getConnection(\ sql=con.createStatement();

String condition=\ rs=sql.executeQuery(condition); out.print(\ out.print(\

out.print(\ out.print(\ out.print(\ out.print(\ out.print(\ out.print(\ while(rs.next())

{ out.print(\

out.print(\ out.print(\ out.print(\ out.print(\ out.print(\ out.print(\ }

out.print(\ }

catch(SQLException e) {

38

} }

//其它客户通过同步块使用这个连接: else

{ synchronized(con)

{try{ sql=con.createStatement();

String condition=\ rs=sql.executeQuery(condition); out.print(\ out.print(\

out.print(\ out.print(\ out.print(\ out.print(\ out.print(\ out.print(\ while(rs.next()) { out.print(\

out.print(\ out.print(\ out.print(\ out.print(\ out.print(\ out.print(\ }

out.print(\ }

catch(SQLException e) { } } }

out.println(\ out.println(\ }

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

39

} }

7.8会话管理

7.8.1 获取用户的会话

我们已经知道,HTTP协议是一种无状态协议。一个客户向服务器发出请求(request)然后服务器返回响应(respons),连接就被关闭了。在服务器端不保留连接的有关信息,因此当下一次连接时,服务器已没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一客户。因此,必须使用客户的会话,记录有关连接的信息。

一个servlet使用HttpServletRequest 对象request调用getSession方法获取用户的会话对象:

HttpSession session=request.getSession(true);

一个用户在不同的servlet中获取的session对象是完全相同的,不同的用户的session对象互不相同。有关会话对象常用方法可参见第4章。

在下面的例子16中,有两个servlet,Boy和Girl。客户访问Boy时,将一个字符串对象,存入自己的会话中,然后访问Girl,在Girl中再输出自己的session对象中的字符串对象。

例子16(效果如图7.19所示) Boy.java: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Boy extends HttpServlet

{ public void init(ServletConfig config) throws ServletException {super.init(config); }

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException { //获得一个向客户发送数据的输出流: PrintWriter out=response.getWriter();

response.setContentType(\MIME类型。

out.println(\ out.println(\

HttpSession session=request.getSession(true); //获取客户的会话对象

40

Java - Servlet入门教程 

Stringmathmin=request.getParameter(\Stringnumber,xingming;Connectioncon=null;Statementsql=null;ResultSetrs=null;intmath,english,physics;try{Class.fo
推荐度:
点击下载文档文档为doc格式
3hele9681999g5n14byc
领取福利

微信扫码领取福利

微信扫码分享