实例:
1,作为转发器的servlet
package com.ogi.util;import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ControlDriver extends HttpServlet{
public void init(ServletConfig config) throws ServletException{
super.init(config);
}

public void destroy(){

}

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
String action = (String)request.getParameter("action");
String dispatch = "/administration/";
System.out.println(action);

if(action == null || action.equals("adminHomepage") || action.equals("")){             //all - finished
dispatch += "adminHomepage";
}else if(action.equals("userAdmin")){ //all - finished
dispatch += "userAdmin";
}else if(action.equals("conditionAdmin")){ //all - finished
dispatch += "conditionAdmin";
}else if(action.equals("resourceAdmin")){   //all - finished
dispatch += "resourceAdmin";
}else if(action.equals("companyAdmin")){ //all - finished
dispatch += "companyAdmin";
}else if(action.equals("listProduct")){ //all - finished
dispatch += "listProduct";
}else if(action.equals("productAdmin")){ //all - finished
dispatch += "editParts?action=list";
}else if(action.equals("partAdmin")){ //all - finished
dispatch += "groupAdmin?action=list";
}else if(action.equals("productPropertyAdmin")){ //start - can not update 
dispatch += "productPropertyAdmin?err=none";
}else if(action.equals("partCSV")){                                         //finished
dispatch += "partCSV.jsp";
}else if(action.equals("productCSV")){ //not start
dispatch += "productCSV.jsp";
}else if(action.equals("propertyCSV")){ //not start
dispatch += "spectCSV.jsp";
}else{
dispatch += "error.jsp";
}

RequestDispatcher dispatcher = request.getRequestDispatcher(dispatch);
dispatcher.forward(request,response);
}

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
doGet(request, response);
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{

}2,处理逻辑的servlet:
package com.ogi.admin.companyadmin;import java.sql.*;
import java.io.*;import javax.servlet.*;
import javax.servlet.http.*;
import com.ogi.database.*;
import com.ogi.util.*;
import com.ogi.user.*;public class InsertCompany extends HttpServlet{
DAO dao = new DAO();
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;

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

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
AllResource ar = new AllResource();

String companyID = request.getParameter("companyID");
String companyNameJP = request.getParameter("companyNameJP");
String companyNameEN = request.getParameter("companyNameEN");

if(this.haveID(companyID)){
response.setContentType("text/html;charset=Shift_JIS");
PrintWriter out = response.getWriter();
out.println(ErrInfo.getErrPage(ar.getERROR_SAME_MAKER()));

}else{
String sql = "insert into TabCompany values(?,?,?)";
String dispatch = "/administration/Control?action=companyAdmin";
try{
conn = dao.getConnection();
pstm = conn.prepareStatement(sql);
pstm.setString(1,companyID);
pstm.setString(2,companyNameJP);
pstm.setString(3,companyNameEN);
pstm.executeUpdate();
dao.closePstm(pstm);
dao.closeConn(conn);
RequestDispatcher dispatcher = request.getRequestDispatcher(dispatch);
dispatcher.forward(request,response);
}catch(Exception e){
e.printStackTrace();
}
}
}

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

public boolean haveID(String id){
boolean result = true;
try{
String sql = "select companyID from TabCompany where companyID = ?";
conn = dao.getConnection();
pstm = conn.prepareStatement(sql);
pstm.setString(1,id); 
rs = pstm.executeQuery();
if(rs.next()){result = true;}
else{result = false;}
}catch(Exception e){
e.printStackTrace();
}finally{
dao.closeRs(rs);
dao.closePstm(pstm);
dao.closeConn(conn);
}
return result;
}
}

解决方案 »

  1.   

    和jsp差别不是很大吧,因为jsp都需要被jsp容器编译为servlet然后运行,所以直接运行servlet可能效率更好吧,我搞得也不是很清楚,学习吧~~~
      

  2.   

    首先jsp是由你的container来编译生成servlet效率没servlet高,
    另外:根据MVC三层模式,
    servlet做Control, jsp来做view,这样层次更清楚,
    如果用jsp来写servlet这样不清晰,而且你不觉得这样编写程序时都很麻烦?现在的ide对jsp语法的检查没纯java文件好
      

  3.   

    现在的ide对jsp语法的检查没纯java文件好同意!~~~
      

  4.   

    jsp主要是用作在表示层的显示,servlet虽然也可以,但它的语法是遵循cgi模式的,所以写的时候特别麻烦
    如:<html>
    servlet中要写为out.println("<html>");
    试问如果这样写的话是不是很降低了很多我们编程的速度,和编译器用来编译的那点时间相比,这个时间可是浪费得太多了
    servlet最主要是用途是作为后端的处理,这样可以极大的降低页面的代码,使得页面变的代码精简
      

  5.   

    一般在一个项目中是做成一个controller的!比如struts框架!!
      

  6.   

    servlet可以被认为是服务器端的applet。servlet被Web服务器加载和执行,就如同applet被浏览器加载和执行一样。servlet从客户端(通过Web服务器)接收请求,执行某种作业,然后返回结果。
      使用servlet的基本流程如下:
      ·客户端(很可能是Web浏览器)通过HTTP提出请求。
      ·Web服务器接收该请求并将其发给servlet。如果这个servlet尚未被加载,Web服务器将把它加载到Java虚拟机并且执行它。
      ·servlet将接收该HTTP请求并执行某种处理。
      ·servlet将向Web服务器返回应答。
      ·Web服务器将从servlet收到的应答发送给客户端。
      由于servlet是在服务器上执行,通常与applet相关的安全性的问题并不需实现。servlet使相当数量的不可能或者至少是很难由applet实现的功能的实现成为可能。与现有系统通过CORBA,RMI,socket和本地(native)调用的通信就是其中的一些例子。另外,一定要注意:Web浏览器并不直接和servlet通信,servlet是由Web服务器加载和执行的。这意味着如果你的Web服务器有防火墙保护,那么你的servlet也将得到防火墙的保护。    最起码,servlet可以很好地替代公共网关接口(Common Gateway Interface,CGI)脚本。通常CGI脚本是用Perl或者C语言编写的,它们总是和特定的服务器平台紧密相关。而servlet是用Java编写的,所以它们一开始就是平台无关的。这样,Java编写一次就可以在任何平台运行(write once,run anywhere)的承诺就同样可以在服务器上实现了。servlet还有一些CGI脚本所不具备的独特优点: 
      ■servlet是持久的。servlet只需Web服务器加载一次,而且可以在不同请求之间保持服务(例如一次数据库连接)。与之相反,CGI脚本是短暂的、瞬态的。每一次对CGI脚本的请求,都会使Web服务器加载并执行该脚本。一旦这个CGI脚本运行结束,它就会被从内存中清除,然后将结果返回到客户端。CGI脚本的每一次使用,都会造成程序初始化过程(例如连接数据库)的重复执行。
      ■servlet是与平台无关的。如前所述,servlet是用Java编写的,它自然也继承了Java的平台无关性。
      ■servlet是可扩展的。由于servlet是用Java编写的,它就具备了Java所能带来的所有优点。Java是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。servlet自然也具备了这些特征。
      ■servlet是安全的。从外界调用一个servlet的惟一方法就是通过Web服务器。这提供了高水平的安全性保障,尤其是在你的Web服务器有防火墙保护的时候。
      ■setvlet可以在多种多样的客户机上使用。由于servlet是用Java编写的,所以你可以很方便地在HTML中使用它们,就像你使用applet一样。在本书中您将看到这一点。
      使用servlet的方式多得超出你的想象。如果考虑到你在服务器上所能访问到的所有服务(诸如数据库服务器和老的系统),使用servlet的方式实际上可能是无限的。