bookshopservlet.java

来自「精通NetBeans光盘源代码,很好很好的资料」· Java 代码 · 共 171 行

JAVA
171
字号
/*
 * BookShopServlet.java
 *
 * Created on 2006年5月15日, 下午9:46
 */

package org.netbeans.bookshop;

import java.io.*;
import java.net.*;
import java.rmi.RemoteException;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;

import javax.servlet.*;
import javax.servlet.http.*;

/**
 *
 * @author boyingking
 * @version
 */
public class BookShopServlet extends HttpServlet {
    BookShopRemoteHome remoteHome;
    public void init()throws ServletException {
        this.remoteHome=this.lookupBookShopBeanJndiName();
    }
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=gb2312");
        request.setCharacterEncoding("gb2312");
        HttpSession session=request.getSession(true);
        //获取action的值,根据action值的不同,进行相应的操作
        String action=request.getParameter("action").trim();
        String id=request.getParameter("id");//获取id的值
        String name=request.getParameter("name");//获取name的值
        String price=request.getParameter("price");//获取price的值
        try {
            //如果action的值为添加或add,则向数据库中添加数据
            if(action.equals("addbook")){
                if(id!=null&&!id.trim().equals("")){//id值不为空
                    //调用create方法
                    remoteHome.create(new String(id.getBytes(),"ISO-8859-1"),new String(name.getBytes(),"ISO-8859-1"),Double.valueOf(price));
                    session.setAttribute("add","ok");//将add属性的值设置为ok
                }
                this.forward(request,response,"addbook.jsp");//转到addbook.jsp页面
            }else if(action.equals("delete")){
                //如果action属性的值为delete,则删除指定id的记录
                BookShopRemote remote=remoteHome.findByPrimaryKey(id);
                if(remote!=null){
                    remote.remove();
                    this.showAllBook(session,request,response);
                }
            }else if(action.equals("change")){
                //如果action的值为更改或delete,则删除指定id的记录
                if(id!=null&&!id.trim().equals("")){
                    BookShopRemote remote=remoteHome.findByPrimaryKey(id);
                    if(remote!=null){
                        remote.setName(new String(name.getBytes(),"ISO-8859-1"));
                        remote.setPrice(Double.valueOf(price));
                        session.setAttribute("change","ok");//将change属性的值设置为ok
                    }else{//删除不成功
                        session.setAttribute("change","no");//将change属性的值设置为no
                    }
                }
                this.forward(request,response,"changebook.jsp");//转到changebook.jsp页面
            }else if(action.equals("showall")){
                //如果action的值为showall,则获取数据库中的所有记录
                this.showAllBook(session,request,response);
            }
        }  catch (javax.ejb.RemoveException ex) {
            ex.printStackTrace();
        }catch (javax.ejb.FinderException ex) {
            ex.printStackTrace();
        } catch (RemoteException ex) {
            ex.printStackTrace();
        } catch (UnsupportedEncodingException ex) {
            ex.printStackTrace();
        } catch (CreateException ex) {
            ex.printStackTrace();
        }
    }
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
    
    private BookShopRemoteHome lookupBookShopBeanJndiName() {
        BookShopRemoteHome rv=null;
        try {
            Hashtable ht = new Hashtable();
            ht.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
            ht.put(Context.PROVIDER_URL, "localhost:1099");
            Context ctx = new InitialContext(ht);
            Object remote = ctx.lookup("BookShopBeanJndiName");
             rv = (BookShopRemoteHome) javax.rmi.PortableRemoteObject.narrow(remote,BookShopRemoteHome.class);            
        } catch(javax.naming.NamingException ne) {
            ne.printStackTrace();
        }
        return rv;
    }
    public void showAllBook(HttpSession session,HttpServletRequest request, HttpServletResponse response){
        try {
            Collection allBook = remoteHome.findAll();//调用EJB中的远程方法,其返回值为Collection
            Iterator ite=allBook.iterator();
            Vector vec=new Vector();
            while(ite.hasNext()){//遍历该Iterator
                Object obj=ite.next();
                //将obj转换为BookShopRemote对象
                BookShopRemote temp=(BookShopRemote)PortableRemoteObject.narrow(obj,BookShopRemote.class);
                String tempId=new String(temp.getId().getBytes("ISO-8859-1"),"GB2312");//获取id值
                String tempName=new String(temp.getName().getBytes("ISO-8859-1"),"GB2312");//获取name值
                String tempPrice=new String(temp.getPrice().toString().getBytes("ISO-8859-1"),"GB2312");//获取price的值
                vec.add(tempId);//将id值添加到Vector中
                vec.add(tempName);//将name值添加到Vector中
                vec.add(tempPrice); //将price值添加到Vector中               
            }
            session.setAttribute("all",vec);//将vec对象添加到名称为all的session对象中
            this.forward(request,response,"showadddelete.jsp");//转到showadddelete.jsp页面
        } catch (ServletException ex) {
            ex.printStackTrace();
        } catch (RemoteException ex) {
            ex.printStackTrace();
        }  catch (UnsupportedEncodingException ex) {
            ex.printStackTrace();
        }catch (FinderException ex) {
            ex.printStackTrace();
        }catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    private void forward(HttpServletRequest request,HttpServletResponse response,String url) throws ServletException,IOException {
        RequestDispatcher dispatcher = request.getRequestDispatcher(url);
        dispatcher.forward(request, response);
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?