Java, Spring

Spring – DI Utilizando Annotations

Para que se possa habilitar a configuração dos beans por anotações, será utilizado no arquivo de configuração do Spring o elemento <context:annotationconfig/>. A listagem a seguir ilustra o uso deste elemento.


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-
3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-
3.0.xsd">
<context:annotation-config/>
</beans>

A listagem seguinte ilustra a classe Message, que possui alguns atributos prédefinidos no código e seus respectivos métodos de acesso.


@Component
public class Message {
@Value("Somebody")
private String author;
@Value("It's DI with Spring's annotation")
private String message;
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}

A classe MessegerImpl implementa a interface Messeger. A anotação @Service é uma especialização da anotação @Component, ela é usada especificamente para indicar um serviço.


@Service("messeger")
public class MessegerImpl implements Messeger {
@Override
public void writeMessage(Message message) {
System.out.println("Author: " + message.getAuthor());
System.out.println("Message: " + message.getMessage());
}
}

A próxima classe é a WelcomeController, nesta classe de controle existem dois atributos: uma mensagem e um mensageiro. Estes atributos são anotados com o @Autowired, isto fará com que o Spring injete uma instância da classe correspondente no atributo. Pode-se notar então que os atributos não são instanciados, eles são usados diretamente.


@Controller
public class WelcomeController {
@Autowired
private Message message;
@Autowired
private Messeger messeger;
@RequestMapping("/showMessage")
public void showMessage(){
messeger.writeMessage(message);
}
}

Fonte: TAVARES, L. A; TRIPOLI, C. S. – SAS – Sistema de Avaliações e Simulados – Pouso Alegre. UNIVÁS, 2010. 76f.

Anúncios
Engenharia de Software, Java, Spring

SAS – Sistema de Avaliações e Simulados

No final do ano passado apresentei o meu TCC – Trabalho de Conclusão de Curso, que consistiu em um projeto chamado SAS – Sistema de Avaliações e Simulados.

Este trabalho tem como objetivo apresentar uma proposta de software para auxiliar nos processos avaliativos. A ferramenta desenvolvida possibilita ao professor a geração de avaliações e simulados, correção e análise de desempenho dos mesmos. Os testes poderão ser realizados online ou poderão ser impressos. Alunos também poderão acessar relatórios de desempenho. A modelagem do sistema foi feita utilizando a metodologia de desenvolvimento ICONIX que é apresentada no decorrer do trabalho. O sistema foi desenvolvido utilizando a linguagem Java, e alguns frameworks como Spring e EclipseLink. Além das tecnologias, são abordados conceitos relacionados à avaliação, ao ENADE e à avaliação institucional.

O trabalho e a apresentação em Power Point pode ser baixada nos links abaixo:

TCC – SAS Sistema de Avaliações e Simulados em PDF

TCC – Apresentação SAS Sistema de Avaliações e Simulados em PDF

Java

Configuração de variáveis de ambiente no Windows

No painel de controle do Windows ir em Sistemas:
passo 1
passo 1

Na guia Avançados, vá em variáveis de ambiente:

passo 2

Em variáveis de sistema crie uma nova variável:

passo 3

Localize em sua máquina onde foi instalado o JDK, geralmente ele fica em  C:Arquivos de programasJava, caso não esteje, encontre a pasta Java em seu sistema.

Coloque o nome da variável de JAVA_HOME e seu valor como o caminho do JDK instalado: C:Arquivos de programasJavajdk1.6.0. Confirme o caminho pois a versão do seu JDK pode ser diferente desta. Depois clique em OK.

passo 4

Após isso clicaremos outra vez em nova para cria outra variável.

Coloque o nome da variável de CLASSPATH e seu valor como .;%JAVA_HOME%\lib\tools.jar que é onde está o jar tools. Depois clique em OK.

passo 5

Agora localize a variável Path e clique em Edit?

6

Acrescente ao valor da variável o seguinte: %JAVA_HOME%bin. E clique em OK.

passo 7

E pronto! Agora é só reiniciar a máquina para que as alterações tenham efeito.

Java, Struts 2

Validação de Login Simples com Struts 2

Primeiramente vamos criar a nossa página index.jsp, para que possamos dar funcionalidades ajax para a nossa página utilizaremos na tag head o theme=”ajax”, no nosso form usaremos a action Login e o seu método loginStatus, que iremos ver mais abaixo, colocamos também o atributo validate como “true” para que possamos fazer a validadação dos campos. Usamos o atributo required como “true” nos campo de login e senha para que os mesmos sejam obrigatorios:

<pre>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<%@taglib prefix="s" uri="/struts-tags" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Login</title>

<s:head theme="ajax"/>

</head>

<body>

<s:form action="Login!loginStatus" validate="true" >

<s:textfield name="username" label="Usuário" required="true"

theme="ajax"/>

<s:password name="password" label="Senha" required="true"

theme="ajax"/>

<s:submit value="Login" align="center" required="true"/>

</s:form>

</body>

</html>

Agora será criada a página errorLogin.jsp que será usada quando o usuário e/ou senha estiverem incorretos, então redirecionaremos para esta página que é bem simples, só contem uma mensagem em vermelho informando que a senha e/ou usuário são inválidos:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Erro em Login</title>

</head>

<body>

<h1 align="center">

<font color="red">ERRO LOGIN: Usuário ou senha inválidos </font>

</h1>

</body>

</html>

E quando o login for válido, a aplicação redirecionará para a página success Login.jsp, que apenas terá uma mensagem de sucesso:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Sucesso em Login</title>

</head>

<body>

<h1 align="center">

<font color="blue">Você realizou o login com sucesso!!!</font>

</h1>

</body>

</html>
<span style="color: #339966;">

</span>

Agora criaremos a nossa action que será chamada de LoginAction, que como visto, será usada na página index.jsp. Nossa action herdará de ActionSupport, e apenas terá um método para validar o login, como não estamos fazendo conexão com o banco de dados neste exemplo, para efeito de simplificação, consideraremos o usuário e senha corretos como “admin”, então se o que for digitado nos campos de usuário e senha na página index.jsp forem “admin” e “admin” respectivamente o login será válido. É importante não se esquecer dos métodos getters and setters, pois o Struts os usa para o acesso dos atributos da action:

public class LoginAction extends ActionSupport {

private String _username;

private String _password;

private String _status;

public LoginAction() {

}

public String loginStatus(){

_status = "invalid";

if(_username.equals("admin") && _password.equals("admin")) {

_status = "valid";

}

return _status;

}

public String getUsername() {

return _username;

}

public void setUsername(String username) {

_username = username;

}

public String getPassword() {

return _password;

}

public void setPassword(String password) {

_password = password;

}

}
<pre style="padding-left: 30px;">

Depois disto, configuraremos agora o nosso struts.xml, iremos mapear a nossa action (LoginAction), na tag <action> colocamos o nome da nossa Action como Login, e colocamos uma exclamação e um asterisco que indica que o struts vai ler todos os métodos da action, assim podemos usar qualquer método da action, no atributo class colocamos o caminho da nossa action. Adicionamos também dois resultados, a String “invalid” caso o login não seja válido que redirecionará para a página errorLogin.jsp e a String “valid” , caso seja válido que retornará para a página successLogin.jsp :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>
<include file="struts-default.xml" />
<package name="default" extends="struts-default">
<action name="Login!*"
                 class="cris.exemplo.login.strtus2.LoginAction" >
<result name="invalid">errorLogin.jsp</result>
             <result name="valid">successLogin.jsp</result>
</action>
</package>
 </struts></pre>
<span style="color: #339966;">

</span>

E por último o LoginAction-validation.xml, que será responsável pela validação dos campos, o nome deste arquivo deve ser igual ao nome da action correspondente precencido de -validation. Neste arquivo passamos o nome do field que vamos validar e o tipo, que no nosso caso é os campos username e password, o tipo dos dois são requredstring, ou seja esses campos não poderão estar em branco. E passamos também a mensagem que será mostrado caso os campos não forem preenchidos.

</pre>

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC

"-//OpenSymphony Group//XWork Validator 1.0.2//EN"

"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>

<field name="username">

<field-validator type="requiredstring">

<message>É necessário informar o usuário</message>

</field-validator>

</field>

<field name="password">

<field-validator type="requiredstring">

<message>É necessário informar a senha</message>

</field-validator>

</field>

</validators>
<span style="color: #339966;">

</span>

Turorial em PDF

Neste link você pode baixar o projeto porém estão sem as bibliotecas.

Java, Struts 2

HelloWorld com Struts 2

Para esta pequena aplicação será utilizado como IDE o eclipse e a versão do struts 2.0.11.

Do pacote lib do struts 2 utilizemos a seguintes bibliotecas:

  • commons-logging.jar
  • freemarker.jar
  • ognl.jar
  • struts2-core.jar
  • xwork.jar

Essas libs deverão estar dentro de WebContent/WEB-INF/lib,  esses diretórios são criados automaticamente quando se cria um WebDinamicProject no eclipse.

Primeiro será configurado o arquivo web.xml que também é criado automaticamente quando se cria um WebDinamicProject no eclipse, serão adicionadas seguintes linhas:


  Hello World Struts2

    struts2

			org.apache.struts2.dispatcher.FilterDispatcher

    struts2
    /*

    index.jsp

Agora criaremos a nossa Action que vai se chamar HelloStruts2, a action nada mais é que a classe que será mapeada no struts.xml, ela será responsável por atribuir a string “José” para o atributo name da classe,  ela deve estender de ActionSupport para que tenha as funcionalidades do Strtus. O JSP irá usar os métodos getter and setters para acessar os atributos da classe. Por padrão o método execute é o primeiro método que é chamado na action, ao menos que vc configure no struts.xml que outro método será chamado.

package cris.helloworld.struts2.action;
import com.opensymphony.xwork2.ActionSupport;

public class HelloStruts2 extends ActionSupport {
	private static final long serialVersionUID = -4647857925273234378L;

	private String _name;

	public HelloStruts2() {
	}

	public String execute(){
		_name = "José";
		return "execute";
	}

	public String getName(){
		return _name;
	}

	public void setName(String name){
		_name = name;
	}
}

Agora criaremos o arquivo struts .xml, que será reponsável pelo mapeamento da action, ele devera estar dentro da pasta src do projeto. No eclipse para criar um xml  clicamos com o botão direito em cima do diretório que queremos  -> new -> other -> XML -> XML. Para criar um   na tag <action> colocamos o nome que será chamada a nossa action no atributo name, e o pacote em que a action se localiza no atributo class. Como não estamos especificando nenhum método, por default será chamado o método execute. Na tag <result> configuramos os rsultados que a action pode nos retornar. Neste caso estamos dizendo que ela pode retornar a string “execute” e que se retornar a pagina direcionada será a helloStruts.jsp.

</pre>
<pre>
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

  <include file="struts-default.xml" />

  <package name="default" extends="struts-default">

    <action name="HelloStruts"

      class="cris.helloworld.struts2.action.HelloStruts2">

       <result name="execute">helloStruts.jsp</result>

    </action>

   </package>

</struts>
<span style="color: #339966;"> </span>
<pre>

Agora criaremos a nossa index.jsp, que será a primeira página da aplicação, nela colacamos a taglib do struts, por conversão usamos como prefixo a letra “s”, na tag <a> no atributo href, colocamos o nome da action, a qual foi mapeada no struts.xml. Então quando o link for clicado ele chamará o método execute da nossa action.

</pre>
<pre>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Index - Hello World Struts 2</title>

</head>

<body>

<%@ taglib prefix="s" uri="/struts-tags"%>

<s:a href="HelloStruts.action">Clique aqui!</s:a>

</body>

</html>

<pre>
<pre>

Por último será criado a página helloStruts.jsp, esta página será chamada quando o link da index.jsp for clicado. E a tag <s:property> será responsável por pegar o valor do atributo name atribuído na action:

</pre>
<pre>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Hello Struts 2</title>

</head>

<body>

<%@ taglib prefix="s" uri="/struts-tags"%>

Hello Struts 2 <s:property value="name"/>

</body>

</html>

<pre>
<pre>
<pre>

Abaixo segue a extrutura de como o exemplo deve mais ou menos ficar:
exemplo

Tutorial em PDF
Clique aqui para baixar os projeto sem as bibliotecas