2011-01-03 20 views
5

He desarrollado una aplicación web muy grande. Si hay algún cambio que deba hacer en una página JSP, se necesita demasiado tiempo para encontrar esa página JSP, enlace, acción, etc.sobre el código fuente jsp

Entonces, ¿hay alguna herramienta o hay alguna técnica a través de la cual pueda llegar directamente al código de esa página JSP en particular?

Creo que "Ver fuentes" es diferente. muestra solo la fuente de esa JSP?

+0

¿Cuál es exactamente el problema que está tratando de resolver? Si desarrolló la aplicación web, tiene el código fuente de la aplicación. Si está buscando las páginas generadas por la aplicación, puede ver la fuente o usar un servidor proxy (el equivalente de ver la fuente). Si puede proporcionar un ejemplo del problema que intenta resolver, será más fácil dar una buena respuesta. – atk

+0

Esta pregunta me recuerda un problema que tengo a menudo. Uso muchos fragmentos '.jspf', y cuando veo la página completamente generada en un navegador, es difícil saber en qué archivo se ha definido un elemento HTML en particular. Algunos consejos son los atributos 'id' y' class', pero eso es todo lo que suelo tener. Uno podría agregar un encabezado común a todos esos archivos '.jspf' que imprime su nombre como un comentario HTML (pero solo si se da un parámetro de URL especial, por ejemplo). No creo que esto se haga usualmente sin embargo. –

+0

Primero de todas gracias ... He desarrollado una aplicación web que tiene miles de páginas .jsp ... y también puedo encontrar cualquiera de las páginas .jsp con ayuda de acciones, pero lleva algo de tiempo ... Mi pregunta es cualquier forma. o herramientas a través de puedo encontrar cualquier página jsp directamente ... Por ejemplo ...... Si hay una página list.jsp en el lado de administración y quiero ir a esta página directamente a código de secuencia sin referir ninguna acción ... entonces yo puede cambiar fácilmente esta página list.jsp ... – water

Respuesta

0

Genere un comentario HTML identificando el origen de cada sección de código directamente en el resultado final, posiblemente en respuesta a un parámetro de consulta de tipo "depuración". Luego observe el código con "ver fuente" y podrá averiguar de dónde viene con bastante facilidad.

Tomará tiempo agregar estos comentarios a su código, pero puede hacerlo gradualmente a medida que modifique las cosas.

4

Ha intentado NetBeans o Eclipse o MyEclipse o cualquier otro IDE ? Puede usar accesos directos de estas herramientas para encontrar el código apropiado en su aplicación. Pueden ayudarte a encontrar tu página JSP en tu aplicación más rápido.

+0

sí .. he usado MyEclispe ... ¿No entendí lo que quiere decir ...? – water

+0

@water: use ctrl + shift + r para encontrar su página JSP deseada. –

+0

oh ... querido ... ya sé que ... quiero encontrarlo en la parte de la interfaz de usuario ... Bueno ... Pero de todos modos ... muchas gracias. puedo resolverlo ... – water

3

técnicas-- probablemente podría usar un patrón de diseño apropiado para fragmentar su código de tal forma que cada página jsp represente "acciones", p. addFriendAction.jsp. la ventaja aquí es que encontrar el nombre de página apropiado sería más fácil ya que solo tiene que referirse a la acción correspondiente. compare esto con tener páginas JSP donde incorpora múltiples acciones en la misma página. he aquí un ejemplo (estoy suponiendo que está utilizando servlets junto con las páginas jsp de acuerdo con el patrón MVC). p.ej. utilizando el patrón de comando para estructurar su aplicación web en acciones (consulte el Ejemplo de código 4.8- http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier5.html)

Al agregar a lo anterior, permítanme compartir un proyecto reciente que hice que hizo uso de este patrón. A continuación es mi clase servlet

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

package servlets; 

import beans.SeekerCustomer; 
import java.io.*; 
import java.util.HashMap; 
import javax.servlet.*; 
import javax.servlet.http.*; 
/** 
* 
* @author Dhruv 
*/ 

//servlet class acts as controller by delegating 
//operations to the respective Action concrete subclass 
public class ControllerServlet extends HttpServlet { 

    //stores all the possible operation names 
    //and operation objects for quick access 
    private HashMap actions; 

    @Override 
    public void init() throws ServletException { 
     actions = new HashMap(); 

     //all the various operations are stored in the hashmap 
     CreateUserAction cua = new CreateUserAction(new SeekerCustomer()); 
     actions.put(cua.getName(), cua); 
     ValidateUserAction vua = new ValidateUserAction(new SeekerCustomer()); 
     actions.put(vua.getName(), vua); 
     ListNonFriendsAction lnfa = new ListNonFriendsAction(new SeekerCustomer()); 
     actions.put(lnfa.getName(), lnfa); 
     AddFriendAction afa = new AddFriendAction(new SeekerCustomer()); 
     actions.put(afa.getName(), afa); 
     ConfirmFriendReqAction cfra = new ConfirmFriendReqAction(new SeekerCustomer()); 
     actions.put(cfra.getName(),cfra); 
     DeclineFriendReqAction dfra = new DeclineFriendReqAction(new SeekerCustomer()); 
     actions.put(dfra.getName(),dfra); 
     AddImageAction aia = new AddImageAction(new SeekerCustomer()); 
     actions.put(aia.getName(),aia); 
     ViewImageAction via = new ViewImageAction(new SeekerCustomer()); 
     actions.put(via.getName(),via); 
     ViewAllImagesAction vaia = new ViewAllImagesAction(new SeekerCustomer()); 
     actions.put(vaia.getName(),vaia); 
     AddTagAction ata = new AddTagAction(new SeekerCustomer()); 
     actions.put(ata.getName(),ata); 
     ViewTagAction vta = new ViewTagAction(new SeekerCustomer()); 
     actions.put(vta.getName(),vta); 
     ViewAllTagsAction vata = new ViewAllTagsAction(new SeekerCustomer()); 
     actions.put(vata.getName(),vata); 
     ViewProfileAction vpa = new ViewProfileAction(new SeekerCustomer()); 
     actions.put(vpa.getName(),vpa); 
     EditAccountAction epa = new EditAccountAction(new SeekerCustomer()); 
     actions.put(epa.getName(),epa); 
     ViewOthersImageAction voia = new ViewOthersImageAction(new SeekerCustomer()); 
     actions.put(voia.getName(), voia); 
     AddOthersTagAction aota = new AddOthersTagAction(new SeekerCustomer()); 
     actions.put(aota.getName(),aota); 
     LogoutAction loa = new LogoutAction(new SeekerCustomer()); 
     actions.put(loa.getName(), loa); 
     ToptagsAction tts = new ToptagsAction(new SeekerCustomer()); 
     actions.put(tts.getName(), tts); 
     UpdateAccountAction uaa = new UpdateAccountAction(new SeekerCustomer()); 
     actions.put(uaa.getName(), uaa); 
     ViewAllFriendsAction vafa = new ViewAllFriendsAction(new SeekerCustomer()); 
     actions.put(vafa.getName(), vafa); 
     ReturnHomeAction rha = new ReturnHomeAction(new SeekerCustomer()); 
     actions.put(rha.getName(),rha); 
    } 

    public void processRequest(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { 

     //identify the operation from the URL 
     String op = getOperation(req.getRequestURL()); 
     //find and execute corresponding Action 
     Action action = (Action)actions.get(op); 
     Object result = null; 
     try { 
      //maintain the session between requests 
      result = action.perform(req, resp); 
      HttpSession session = req.getSession(); 
      session.setAttribute("session1", result); 
     } catch (NullPointerException npx) { 
      //nothing to handle 
     } 
    } 

    //both GET and POST operations are directed to "processRequest" method 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
     processRequest(request, response); 
    } 

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

    //uses the URL to identify the operation 
    private String getOperation(StringBuffer requestURL) { 

     String op=""; 
     //identifies the last index of "/" before ".do" and 
     //uses that to put each character after the "/" into "op" 
     for(int i= requestURL.lastIndexOf("/",requestURL.indexOf(".do"))+1; i<requestURL.indexOf(".do"); i++) 
     { 
      op= op+requestURL.charAt(i); 
     } 
     return op; 
    } 
} 

se puede ver que cada acción se maneja en el servlet principal mediante el envío a los servlets más pequeños. así que si haces clic en CreateUserAction, esta acción es manejada por un servlet CreateUserAction.java, que luego redirige la salida a CreateUserAction.jsp. De esta forma, al utilizar un patrón apropiado, se fragmenta el código de tal forma que la búsqueda de la página JSP correspondiente se realice fácilmente. ese es el punto que estoy tratando de hacer aquí: ¡usa patrones!

templates-- se podría hacer uso de plantillas JSP a través de páginas de modo que sólo es necesario modificar la plantilla para efectuar cambios comunes a través de las páginas JSP (refe- http://java.sun.com/developer/technicalArticles/javaserverpages/jsp_templates/)

una manera bastante ingenua sería el uso Atajos IDE.

+0

¡Gracias ...! muchas gracias .... – water

+0

sin problemas! y realmente espero que no solo uses páginas JSP para tu aplicación web, sino que uses JSP con servlets y beans Java (como mínimo) como parte del patrón MVC. solo el uso de JSP solo puede ser parte del motivo por el que tiene problemas (y es una mala práctica). –

+0

no no .. He seguido estrictamente el patrón MVC Estimado .... pero hay muchas páginas jsp y todas son páginas dinámicas jsp ... .... – water

0

Creo que esto es más hacia los estándares de codificación y las mejores prácticas aquí.

  1. Organice la estructura de su aplicación web de forma adecuada, es mejor usar Mindmap para visualizar las páginas y la organización, de modo que siempre pueda tener una idea clara de dónde estaban las cosas.
  2. Utilice una buena herramienta IDE para organizar cosas de acuerdo con la práctica de MVC donde Ver para mantener todas sus páginas JSP. Dentro de organizarlos con su familia de componentes y mantener páginas JSP comunes usando una carpeta común.
  3. Utilice la característica de búsqueda incorporada de Eclipse que le permite buscar los contenidos originales.
  4. Algo podría ser útil para el mantenimiento a largo plazo es mantener todo su código fuente con Subversion para que pueda comparar varias versiones del código fuente del pasado al futuro.
0
  1. Crear convención de nomenclatura coherente para las clases, JSP, cualesquiera que sean.
  2. Refactor yor código según la convención.
  3. Manténgalo. Sin excepciones (si necesita algo, piense en rediseñar la convención).
  4. Para la transición intente interceptar la fase de representación y ponga el nombre del archivo JSP en la salida como comentario. (tal vez esto puede ayudar Exec. JSP directly...)
Cuestiones relacionadas