A passagem de parâmetros significa transferir parâmetros para o plano de fundo do programa. O plano de fundo pode fazer algum processamento e salvar o conteúdo no banco de dados.
Existem muitos métodos para passar os parâmetros, conforme explicado um por um.
1. Método de parâmetro direto em ação
Existe o seguinte arquivo index.jsp
A cópia do código é a seguinte: <? Xml versão = "1.0" coding = "gb18030"?>
<%@ Page Language = "Java" contentType = "Text/html; charset = GB18030"
PageEncoding = "GB18030"%>
<%
String path = request.getContextPath ();
String basalepath = request.getScheme ()+": //"+request.getServername ()+":"+request.getServerport ()+path+"/";
%>
<! Doctype html public "-// w3c // dtd xhtml 1.0 transitional // pt" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-bransitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv = "content-type" content = "text /html; charset = gb18030" />
<base href = "< %= bashepath %>"/>
<title> Insira o título aqui </ititure>
</head>
<Body>
Use o atributo de ação para receber o parâmetro <a href = "user/user! Add? Name = a & Age = 8"> Adicionar usuário </a>
</body>
</html>
Para <a> </a>, passe dois parâmetros para o programa, um é o nome e o outro é a idade. A configuração no struts.xml é a seguinte:
Copie o código do código da seguinte forma: <? Xml versão = "1.0" coding = "utf-8"?>
<! Doctype suporta o público
"-// Apache Software Foundation // DTD Struts Configuração 2.0 // EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<Truts>
<constante name = "struts.devmode" value = "true" />
<pacote name = "user" estends = "struts-default" namespace = "/user">
<ação name = "user">
<Ilt> /user_add_success.jsp </resultado>
</ction>
</package>
</truts>
Como devemos escrever nossa UserAction no momento? Exemplos são os seguintes:
A cópia do código é a seguinte: pacote com.bjsxt.struts2.user.action;
importação com.opensymphony.xwork2.actionsupport;
classe pública UserAction estende o Actionsupport {
nome de string privado;
private Int Age;
public string add () {
System.out.println ("name =" + nome);
System.out.println ("Age =" + Age);
sucesso de sucesso;
}
public String getName () {
Nome de retorno;
}
public void setName (nome da string) {
this.name = nome;
}
public int getage () {
idade de retorno;
}
Public Void Setage (Int Age) {
this.age = idade;
}
}
É muito simples, define duas propriedades. NOTA: Os métodos de conjunto e GET dessas duas propriedades devem ser gravados e o método de geração rápida de eclipse é usada, o que é muito simples. Dessa forma, o programa acima imprimirá o resultado desejado quando for executado
nome = a e idade = 8.
A explicação é a seguinte: Primeiro, o Struts2 passará automaticamente parâmetros e não precisamos participar desse processo; Segundo, os suportes passam parâmetros para definir e obter métodos, não atributos de nome e idade. Ou seja, se modificarmos o nome nele para outros nomes, como o nome de usuário, mas os métodos ainda são definidos e getname, não há diferença entre a implementação de toda a função, é apenas um pouco estranho; Terceiro, e o ponto mais importante é que, se houver muitos atributos, precisamos de muitos métodos definidos e obtidos, o que é muito inconveniente, portanto o método a seguir é estendido.
2. Ação Adicione o método do objeto de classe
Neste momento, as propriedades em nosso 1 são todas classificadas em uma classe, como o usuário
A cópia do código é a seguinte: Package com.bjsxt.struts2.user.model;
Public Class User {
nome de string privado;
private Int Age;
public String getName () {
Nome de retorno;
}
public void setName (nome da string) {
this.name = nome;
}
public int getage () {
idade de retorno;
}
Public Void Setage (Int Age) {
this.age = idade;
}
}
Isso torna a escrita na aula de ação muito mais fácil
A cópia do código é a seguinte: pacote com.bjsxt.struts2.user.action;
import com.bjsxt.struts2.user.model.user;
importação com.opensymphony.xwork2.actionsupport;
classe pública UserAction estende o Actionsupport {
usuário privado usuário;
public string add () {
System.out.println ("name =" + user.getName ());
System.out.println ("AGE =" + user.getage ());
sucesso de sucesso;
}
Usuário público getUser () {
devolver usuário;
}
public void SetUser (usuário do usuário) {
this.User = usuário;
}
}
NOTA: Neste momento, não precisamos gerar manualmente um objeto de usuário. Esse processo é concluído automaticamente pelo Struts2.
E o URL precisa ser modificado neste momento, ou seja, a tag <a> </a> no índice é modificada:
A cópia do código é a seguinte: <? Xml versão = "1.0" coding = "gb18030"?>
<%@ Page Language = "Java" contentType = "Text/html; charset = GB18030"
PageEncoding = "GB18030"%>
<%
String path = request.getContextPath ();
String basalepath = request.getScheme ()+": //"+request.getServername ()+":"+request.getServerport ()+path+"/";
%>
<! Doctype html public "-// w3c // dtd xhtml 1.0 transitional // pt" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-bransitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv = "content-type" content = "text /html; charset = gb18030" />
<base href = "< %= bashepath %>"/>
<title> Insira o título aqui </ititure>
</head>
<Body>
Use o modelo de domínio para receber parâmetros <a href = "user/user! Add? User.name = a & user.age = 8"> adicione usuário </a>
</body>
</html>
Modifique na seção de 18 linhas acima.
O acima descreve dois métodos de passagem do parâmetro STRUTS2, o segundo método é chamado: Modelo de DomainModel, Domínio. Ou seja, crie uma nova classe para armazenar atributos.
Outro método é descrito abaixo, chamado Modeldriven, orientado por modelo.
É muito semelhante ao segundo método, e os outros são iguais, exceto que há uma diferença entre ação e acesso. Sua ação é a seguinte:
A cópia do código é a seguinte: pacote com.bjsxt.struts2.user.action;
import com.bjsxt.struts2.user.model.user;
importação com.opensymphony.xwork2.actionsupport;
importação com.opensymphony.xwork2.modeldriven;
classe pública UserAction estende o Actionsupport implementos Modeldriven <suser> {
Usuário privado do usuário = novo usuário ();
public string add () {
System.out.println ("name =" + user.getName ());
System.out.println ("AGE =" + user.getage ());
sucesso de sucesso;
}
@Override
usuário público getModel () {
devolver usuário;
}
}
Podemos ver a partir disso que implementa a interface Modeldriven e adota tecnologia genérica. Dessa forma, o STRUTS2 não instanciará automaticamente um objeto, portanto, só podemos gerá -lo manualmente. Ele substitui o método getModel () da interface Modeldriven e sua função é retornar um objeto de classe.
Seu acesso é diferente do segundo (como no primeiro método):
Copie o código do código da seguinte forma: use o Modeldriven para receber os parâmetros <a href = "user/user! Add? Name = a & idade = 8"> adicione usuário </a>
Ele não usa o método user.name, e é por isso que é necessário para um novo objeto.
O processo ideológico básico desse método é: primeiro, a ação analisa o URL, obtém os parâmetros e depois entra na ação. Verificou -se que essa ação implementa uma interface Modeldriven. No momento, o método getModel da interface Modeldriven é chamado para obter o objeto de classe e, em seguida, os métodos de conjunto e obtenção dessa classe são chamados para passar os parâmetros.
Este método reflete a idéia do MVC do modelo STRUTS2, M ---, V --- Visualizar, C --- Controlador, mas esse método raramente é usado, e o segundo método que usamos mais é o acima.
O exposto acima é o conteúdo inteiro do método de entrega de parâmetros no Struts2. Espero que possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.