AccessController.java
上传用户:hgs128
上传日期:2007-02-03
资源大小:166k
文件大小:8k
源码类别:

百货/超市行业

开发平台:

WINDOWS

  1. /*
  2.  * Created on 1999-5-19
  3.  */
  4. package sevlet;
  5. import java.io.IOException;
  6. import java.io.PrintWriter;
  7. import java.rmi.RemoteException;
  8. import java.util.ArrayList;
  9. import java.util.Hashtable;
  10. import java.util.Iterator;
  11. import javax.ejb.CreateException;
  12. import javax.ejb.RemoveException;
  13. import javax.naming.InitialContext;
  14. import javax.naming.NamingException;
  15. import javax.rmi.PortableRemoteObject;
  16. import javax.servlet.RequestDispatcher;
  17. import javax.servlet.ServletConfig;
  18. import javax.servlet.ServletException;
  19. import javax.servlet.http.HttpServlet;
  20. import javax.servlet.http.HttpServletRequest;
  21. import javax.servlet.http.HttpServletResponse;
  22. import javax.servlet.http.HttpSession;
  23. import cmp.ItemData;
  24. import stateless.StoreAccess;
  25. import stateless.StoreAccessHome;
  26. /**
  27.  * @author 28-9
  28.  *
  29.  * TODO To change the template for this generated type comment go to
  30.  * Window - Preferences - Java - Code Generation - Code and Comments
  31.  */
  32. public class AccessController extends HttpServlet {
  33. private StoreAccessHome storeAccessHome=null;
  34. private StoreAccess myStore=null;
  35. private static String LOGIN_ERROR_SCREEN="/loginEror";
  36. private static String LOGIN_SCREEN="/login";
  37. private static String ITEMS_SCREEN="/showItems.jsp";
  38. public void init(ServletConfig config) throws ServletException {
  39. super.init(config);
  40. //TODO Method stub generated by Lomboz
  41. initStoreAccess();
  42. }
  43. /**
  44.  * 
  45.  */
  46. private void initStoreAccess() {
  47. System.out.println("Entering AccessController.initStoreAccess()");
  48. try {
  49. storeAccessHome=getHome();
  50. } catch (NamingException e) {
  51. e.printStackTrace();
  52. }
  53. System.out.println("Leaving AccessController.initStoreAccess()");
  54. }
  55. /**
  56.  * @return
  57.  */
  58. private StoreAccessHome getHome() throws NamingException {
  59. Object result=getContext().lookup(StoreAccessHome.JNDI_NAME);
  60. return ((StoreAccessHome)PortableRemoteObject.narrow(result, StoreAccessHome.class));
  61. }
  62. private InitialContext getContext() throws NamingException{
  63. Hashtable props = new Hashtable();
  64. props.put(
  65. InitialContext.INITIAL_CONTEXT_FACTORY,
  66. "org.jnp.interfaces.NamingContextFactory");
  67. props.put(InitialContext.PROVIDER_URL, "jnp://127.0.0.1:1099");
  68. InitialContext initialContext = new InitialContext(props);
  69. return initialContext;
  70. }
  71. public void destroy() {
  72. super.destroy();
  73. //TODO Method stub generated by Lomboz
  74. }
  75. protected void doGet(HttpServletRequest request,
  76. HttpServletResponse response) throws ServletException, IOException {
  77. processRequest(request,response);
  78. }
  79. protected void doPost(HttpServletRequest request,
  80. HttpServletResponse response) throws ServletException, IOException {
  81. //TODO Method stub generated by Lomboz
  82. processRequest(request,response);
  83. }
  84. /**
  85.  * @param request
  86.  * @param response
  87.  */
  88. private void processRequest(HttpServletRequest request, HttpServletResponse response) 
  89.    throws ServletException, IOException {
  90. System.out.println("Entering AccessController.processRequest()");
  91. String buildUrl=null;
  92. HttpSession session=request.getSession(true);
  93. String userAction=request.getParameter("useraction");
  94. if(userAction==null) {
  95. buildUrl=LOGIN_SCREEN;
  96. }else {
  97. if(userAction.equals("dovalidation")) {
  98. System.out.println("In validateLogin");
  99. String username=request.getParameter("username");
  100. String passwd=request.getParameter("passwd");
  101. if((username==null) || !(loginUser(username,passwd,session))) {
  102. System.out.println("Error:invalid attempt for username");
  103. buildUrl=LOGIN_ERROR_SCREEN;
  104. }else {
  105. buildUrl=ITEMS_SCREEN;
  106. }
  107. }
  108. }
  109. if(buildUrl==ITEMS_SCREEN) {
  110. String userID=(String)session.getAttribute("userID");
  111. try {
  112. myStore=storeAccessHome.create();
  113. ArrayList itemsList=myStore.getAllItems();
  114. //displayAllitems(response,itemsList);
  115. session.setAttribute("itemsList", itemsList);
  116. System.out.println("BuilderUrl is: "+buildUrl);
  117. RequestDispatcher rd=getServletContext().getRequestDispatcher(ITEMS_SCREEN);
  118. rd.forward(request, response);
  119. myStore.remove();
  120. } catch (RemoteException e) {
  121. e.printStackTrace();
  122. } catch (CreateException e) {
  123. e.printStackTrace();
  124. } catch (RemoveException e) {
  125. e.printStackTrace();
  126. }
  127. }else {
  128. if(buildUrl==LOGIN_SCREEN) {
  129. displayLoginScreen(response);
  130. }else if(buildUrl==LOGIN_ERROR_SCREEN) {
  131. displayLoginErrorScreen(response);
  132. }
  133. }
  134. System.out.println("Leaving AccessController.processRequest()");
  135. }
  136. /**
  137.  * @param response
  138.  */
  139. private void displayLoginErrorScreen(HttpServletResponse response) throws IOException {
  140. response.setContentType("text/html");
  141. PrintWriter out=response.getWriter();
  142. out.println("<html><title>MyStore Login Error</title>");
  143. out.println("<h3>Please try again,your login has failed!");
  144. out.println("<form method="get">");
  145. displayLoginDataFiels(out);
  146. out.println("</form><html>");
  147. if(out!=null) out.close();
  148. }
  149. /**
  150.  * @param response
  151.  */
  152. private void displayLoginScreen(HttpServletResponse response) throws IOException {
  153. System.out.println("Entering AccessController.displayLoginScreen()");
  154. response.setContentType("text/html");
  155. PrintWriter out=response.getWriter();
  156. out.println("<html><title>MyStore Login</title>");
  157. out.println("<body><h2>Welcome to MyStore</h2></body>");
  158. out.println("<form method="get">");
  159. displayLoginDataFiels(out);
  160. out.println("</form></html>");
  161. if(out!=null)
  162. out.close();
  163. System.out.println("Leaving AccessController.displayLoginScreen()");
  164. }
  165. /**
  166.  * @param out
  167.  */
  168. private void displayLoginDataFiels(PrintWriter out) {
  169. out.println("<h3>Please enter your username and password:");
  170. out.println("<table><tr><td>Username:<td><input name="username" type="text">");
  171. out.println("<tr><td>Password:<td><input name="passwd" type="password">");
  172. out.println("</table>");
  173. out.println("<input type="submit" value="login" name="loginButton">");
  174. out.println("<input type="reset" name="resetButton" value="reset">");
  175. out.println("<input type="hidden" name="useraction" value="dovalidation">");
  176. }
  177. /**
  178.  * @param response
  179.  * @param itemsList
  180.  */
  181. private void displayAllitems(HttpServletResponse response, ArrayList itemsList) throws IOException {
  182. response.setContentType("text/html");
  183. PrintWriter out=response.getWriter();
  184. out.println("<html><title>List of MyStore items</title>");
  185. out.println("<form method="GET">");
  186. out.println("<body><h2>MyStore Items Cataloge</h2></body>");
  187. if(itemsList.isEmpty()) {
  188. out.println("<p><h3><b>Items are not avaliable</b></h3>");
  189. }else {
  190. out.println("<p><table border="1">");
  191. out.println("<tr><th><b>ItemID</b>");
  192. out.println("<th><b>Description</b>");
  193. out.println("<th><b>Quantity</b>");
  194. out.println("<th><b>Price</b>");
  195. Iterator items=itemsList.iterator();
  196. ItemData id=null;
  197. while(items.hasNext()) {
  198. id=(ItemData)items.next();
  199. out.println("<tr><td>");
  200. out.println(id.getItemID());
  201. out.println("</td><td>");
  202. out.println(id.getDescription());
  203. out.println("</td><td>");
  204. out.println(id.getQuantity());
  205. out.println("</td><td>");
  206. out.println(id.getPrice());
  207. out.println("</td></tr>");
  208. }
  209. out.println("<table>");
  210. }
  211. out.println("</html>");
  212. if(out!=null)
  213. out.close();
  214. }
  215. /**
  216.  * @param username
  217.  * @param passwd
  218.  * @param session
  219.  * @return
  220.  */
  221. private boolean loginUser(String username, String passwd, HttpSession session) {
  222. String userid=null;
  223. StoreAccess sa;
  224. try {
  225. sa = storeAccessHome.create();
  226. userid=sa.loginUser(username, passwd);
  227. session.setAttribute("userID", userid);
  228. } catch (RemoteException e) {
  229. e.printStackTrace();
  230. } catch (CreateException e) {
  231. e.printStackTrace();
  232. }
  233. return (userid!=null);
  234. }
  235. }