Prefácio
Apresentei você ao tutorial introdutório sobre o Struts2. Continuarei compartilhando o conhecimento que aprendi, os problemas que encontrei durante o processo de aprendizado e soluções. Obviamente, se os leitores encontrarem algum problema, eles podem me informar nos comentários abaixo. Agradeço antecipadamente
Acessando recursos da Web em ação
Recursos da Web
O chamado recurso da Web refere-se a APIs nativas, como HttpServletRequest, HttpServletResponse e ServletContext. Como um controlador de desenvolvimento de aplicativos B/s, ele deve poder acessar recursos da Web, como propriedades de leitura e gravação para objetos de domínio.
Como acessar recursos da web
Método de desacoplamento do servleApi: Para evitar o acoplamento com o servleTapi e facilitar o teste de unidade em ação, o Struts2 encapsula HttpServletRequest, httpsession e servletContext, constrói 3 objetos de mapa para substituir esses 3 objetos. Em ação, você pode usar os objetos de mapa correspondentes do httpServletRequest, httpServletSession e httpServletContext para salvar e ler dados.
public Object get(Object key) para aprovar o parâmetro de solicitação para alcançar a implementação.setRequest() , para que o requestmap possa ser chamado em todos os métodos de ação. Use ActionContext para obter uma demonstração de código de um objeto de domínio
Envie a solicitação da página Index.jsp para SHOPPAGE.JSP e entregue a solicitação para a classe de ação da Struts Objectaction.java para lidar com a solicitação
Em Objectaction.java, o objeto de domínio é recuperado pelo ActionContext e o valor da propriedade é agregado a ele, e a solicitação é encaminhada para o showpage.jsp
Na página do showpage.jsp, podemos obter os valores de cada objeto de domínio
index.jsp
< %@ página contenttype = "text/html; charset = utf-8" idioma = "java" %> <html> <head> <title> handle </title> </head> <body>-Passe o nome do nome do nome, que pode ser obtido do objeto Params Domin na classe Ação para testar o nome do params? > Aplicação </a> </body> </html>
Objectaction.java
pacote com.request.test; import com.opensymphony.xwork2.ActionContext; importar java.util.map; public class ObjectAction {public String print () {// Get ActionContext ActionContext ActionContext = actionContext.getContext; ApplicationMap.put ("ApplicationMap", "ApplicationMapValue"); // Obtenha o mapa correspondente ao mapa de sessão <string, object> sessionMap = actionContext.getSession (); // Atribuir sessionMap ao sessionMap.put ("SessionMap", "SessionMapvalue"); requestmap = (map <string, object>) actionContext.get ("request"); // Obtenha o mapa correspondente à solicitação. Não existe um método getRequest () correspondente, use o mapa do método get ("request") <string, objeto> requestmap = (map <string, object>) actionContext.get ("request"); // seja requestmap atribuir o requestmap.put ("requestmap", "requestmapValue"); o valor do parâmetro dos parâmetros string [] params = (string []) paramsmap.get ("name"); // imprima o valor do parâmetro no console system.out.println (params [0]); retornar "sucesso"; }}struts.xml (exibe apenas o nó do pacote)
<pacote name = "showValue" estends = "struts-default"> <ação name = "showpage" method = "print"> <nome de resultado = "succcess">/showpage.jsp </sireld> </ction> </cackage>
showpage.jsp (exibe apenas o conteúdo da etiqueta corporal)
<%-Obtenha o valor do objeto de domínio do aplicativo-%> $ {ApplicationsCope.ApplicationMap} <br> <%-Obtenha o valor do objeto de domínio da sessão-%> $ {sessionscope.sesionMap} <br> <%-obtenha o valor do objeto Solicitação-%$ {SolicScope.requestMap} Objeto-%> $ {requestscope.requestmap}Detalhes e atenção para (arraste a imagem para a nova página da guia do navegador para visualizar a imagem maior)
Acessando recursos da Web usando a interface XXXXAWARE
Como usar o ActionContext, o envio de uma solicitação para ObjectAction.java na página Index.jsp é processado pelo método print2() .
Atribua um valor ao objeto de domínio no método print2() em Objectaction.java e obtenha o valor do parâmetro aprovado
Finalmente, obtemos o valor do objeto de domínio no showpage.jsp. Para distinguir do anterior, adicionamos símbolos a cada valor de saída para distinguir.
index.jsp (exibe a parte da etiqueta corporal)
<a href = "showPage2.Action? Nome = Smzyy" rel = "Nofollow externo"> TOPAGE2 </a>
Objectaction.java
pacote com.request.test; import com.opensymphony.xwork2.ActionContext; importar org.apache.struts2.intercept.applicationAWare; importar org.apache.struts2.intercetor.parameterAware; importee; java.util.map; classe pública ObjectAction implementa RequestAWare, SessionAWare, ApplicationAware, ParameterAware {private mapa <string, object> requestMap; mapa privado <string, objeto> sessionMap; mapa privado <string, objeto> ApplicationMap; mapa privado <string, string, []> parameterMap; // showpage.action Execute o método necessário public string print2 () {ApplicationMap.put ("ApplicationMap", "ApplicationMapVal ==="); requestmap.put ("requestmap", "requestmapval ==="); sessionMap.put ("SessionMap", "SessionMapVal ==="); String [] name = parametermap.get ("nome"); System.out.println (nome [0] + "===="); retornar "sucesso"; } @Override public void setApplication (map <string, object> map) {this.applicationMap = map; } @Override public void setParameters (map <string, string []> map) {this.parametermap = map; } @Override public void setRequest (map <string, object> map) {this.requestmap = map; } @Override public void SetSession (map <string, object> map) {this.sessionMap = map; }}struts.xml (exibe a peça do nó do pacote)
<pacote name = "showValue" estends = "struts-default"> <ação name = "showpage2" method = "print2"> <resultado name = "success">/showpage.jsp </resultado> </ction> </cackage>
showpage.jsp (o mesmo que acima, ele não mudou de maneira alguma)
Sugestões de seleção
Através dos dois métodos acima para obter recursos da Web, podemos saber que, se o primeiro método possui muitos métodos de ação que exigem objetos de domínio de chamada, cada método deve ser implementado, enquanto o segundo método só precisa ser implementado uma vez, portanto, no desenvolvimento real, o método correspondente é selecionado para implementá -lo de acordo com a situação.
Juntamente com servletapi: mais servletapis podem ser acessados e métodos nativos podem ser chamados
O método de implementação aqui é semelhante ao método de implementação acima, por isso não vou falar sobre isso.
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.