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 + -
显示快捷键?