Manipulação refs contexto de caminho ao migrar “/” site para embalagem Java EE
-
02-07-2019 - |
Pergunta
Um site Java existente é projetado para ser executado sob "/" no tomcat e há muitas referências específicas aos caminhos absolutos fixos, como "/ dir / dir / Página".
Quer migrar isso para embalagem Java EE, onde o site terá de ser executado sob um contexto de raiz por exemplo, "/ Dir / dir / Página" torna-se "/ my-context-root / dir / dir / página"
Agora, o contexto-raiz pode ser facilmente com ServletRequest.getContextPath (), mas isso ainda significa um monte de código muda para migrar uma grande base de código. A maioria dessas referências estão em literal HTML.
Eu experimentei com o uso de filtros de servlet para fazer regravações no HTML oubound, e que parece funcionar bem. Mas isso não introduzir alguma sobrecarga, e eu não iria vê-lo como uma solução permanente. (Veja EnforceContextRootFilter-1.0-src.zip para a abordagem filtro de servlet).
Há algum melhores abordagens para resolver este problema? Qualquer coisa óbvia que eu estou ausente? Todos os comentários apreciada!
Solução
Confira uma pergunta href="https://stackoverflow.com/questions/125359/any-clever-ways-of-handling-the-context-in-a-web-app"> relacionado
Outra coisa (eu continuo a edição deste post danado). Se você estiver usando JSP (versus estático HTML ou qualquer outra coisa), você também pode criar um arquivo de marcação para substituir as tags HTML comuns com ligações (nomeadamente um, img, forma). Então pode se tornar
Esta mudança pode ser feito facilmente "en masse", usando algo como sed.
sed -e 's/<a/<t:a/g' -e 's/<\/a>/<\/t:a>/g' old/x.jsp > new/x.jsp
ações de formulário pode ser um complicado bit de sed, mas você começa a idéia.
Outras dicas
mundo do apache utilizada redirecionamentos (mod_rewrite) para fazer o mesmo.
O mundo Servlet começou a usar filtros
O mundo rubi (ou o RoR) faz mais do mesmo material e que eles chamam de roteamento.
Assim, não há como fugir disto. (A menos que você quiser usar regex inteligente através de fora - que tem sido experimentado e ele funciona muito bem)