Download Desarrollo de Aplicaciones Web
Document related concepts
no text concepts found
Transcript
Desarrollo de Aplicaciones Web Jan. 7 Integrantes: Farid Díaz Vanessa LLongo Jorge Núñez Ingrid Ochoa Pasos a seguir para la implementación de la práctica Filtro Se utilizo la versión 6.7 del NetBeans para la implementación de la práctica de filtros. 1. Se creó un nuevo proyecto y se lo llamó deber_filtro. 2. Se creó 5 páginas .jsp dentro de la carpeta Web Pages. 3. Se creó un paquete dentro de la carpeta Source Packages llamado Filtro. 4. Dentro del paquete Filtro se creó 2 clases java, 2 servlets y un filtro. Los nombres de las páginas son: index.jsp menú.jsp opcion1.jsp opcion2.jsp opcion3.jsp Los nombres de las clases java son: rol.java persona.java Los nombres de los servlets son: opciones.java servlet.java El nombre del filtro es filtro1.java Dentro de la carpeta Web Pages se encuentra el archivo datos.txt en el cual están los roles y permisos del usuario. A continuación se va a detallar como se implementó cada una de las páginas y clases encontradas en el paquete. En el index.jsp se creó un form dentro del cual se agrego un label, una caja de texto donde el usuario va a ingresar el nombre que desee y un botón . Desarrollo de Aplicaciones Web Jan. 7 <form action="servlet" method="get"> <fieldset class="tamanio"> <legend> Principal </legend> <span>Ingrese su usuario:</span> <input type="text" name="usuario"/> <input type="submit" value="Login"> </fieldset> </form> Luego esta página llama al archivo servlet.java, en el cual se crea una cookie con el nombre que el usuario ingreso y se lo almacena para tener una referencia del nombre del usuario para que aparezca en las demás páginas. Este servlet redirecciona a la página menú.jsp protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { Cookie user=new Cookie("user",request.getParameter("usuario")); response.addCookie(user); response.sendRedirect("menu.jsp"); } finally { out.close(); } } En el menú.jsp se creó un form dentro del cual se agrego un combo box que muestra 3 opciones para que el usuario solo escoja 1, se agrego un botón. <form name="form_opc" action="opciones"> <fieldset class="tamanio"> <legend> Menu </legend> <select name="opciones"> <option value="1">Opcion1</option> <option value="2">Opcion2</option> <option value="3">Opcion3</option> </select> <input type="submit" value="ir"/> </fieldset> </form> Esta página llama al archivo opciones.java en el cual se almacena en una variable la opción escogida por el usuario y luego manda a llamar al archivo filtro1.java en el cual se lee el archivo con los roles y permisos. Desarrollo de Aplicaciones Web Jan. 7 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { response.sendRedirect("opcion"+request.getParameter("opciones")+" .jsp"); } finally { out.close(); } } En filtro.java se tuvo que armar el path completo de la dirección donde está el archivo de texto. public void init(FilterConfig filterConfig) { this.filterConfig = filterConfig; ServletContext sc=filterConfig.getServletContext(); try{ Sring valor=sc.getRealPath(filterConfig.getInitParameter("dato")); File f=new File(valor); BufferedReader in = new BufferedReader(new FileReader(f)); String linea=""; this.personas=new ArrayList<persona>(); this.roles=new ArrayList<rol>(); linea=in.readLine(); if(linea.equals("Roles")){ linea=in.readLine(); while(!linea.equals("Permisos")){ personas.add(new persona(linea.split(","))); linea=in.readLine(); }; } if(linea.equals("Permisos")){ linea=in.readLine(); do{ roles.add(new rol(linea.split(","))); }while((linea=in.readLine())!=null); } }catch(Exception e){System.out.print(e.getMessage());}; } Desarrollo de Aplicaciones Web Jan. 7 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req=(HttpServletRequest)request; Cookie c[]=req.getCookies(); persona p=null; for(int i=0;i<c.length;i++){ if(c[i].getName().equals("user")) p=persona.ver(c[i].getValue(), personas); } if(p==null) sendProcessingError(new IOException(), response); if(p.valid(roles, req.getRequestURI())) chain.doFilter(request, response); else sendProcessingError(new IOException(), response); } Si el usuario tiene los permisos para el ingreso a esa página, le aparecerá un mensaje de bienvenida indicando que el usuario se encuentra en la página seleccionada. Si el usuario no tiene los permisos para el ingreso a esa página, le aparecerá un mensaje indicando que hay un error. PrintWriter pw = new PrintWriter(ps); pw.print("<html>\n<head>\n<title>Error</title>\n</head>\n<body>\n"); // PENDING! Localize this for next official release pw.print("<h1>Error user no permitido</h1>\n<pre>\n"); pw.print("</pre></body>\n</html>"); //NOI18N pw.close(); Desarrollo de Aplicaciones Web Jan. 7 ScreenShots del blog http://blog.espol.edu.ec/proyectodaw2010 Desarrollo de Aplicaciones Web Jan. 7 http://blog.espol.edu.ec/proyectodaw2010/2010/01/07/servlet/ http://blog.espol.edu.ec/proyectodaw2010/2010/01/07/index/ Desarrollo de Aplicaciones Web Jan. 7 Referencias Bibliograficas http://www.samelan.com/oscargonzalez/doc/java_filters.pdf http://blog.espol.edu.ec/proyectodaw2010 referencia al blog http://foro.powers.cl/viewtopic.php?f=5&t=249964