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.
¿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
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. –
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