Kategorie: Google App Engine

GAE/J und Spring: Teil 1

Aufsetzen eines GAE/J-Projekts

Download und Installation des Google App Engine SDK: SDK
Außerdem natürlich das Plugin für Eclipse: Plugin

Dann ein neues Web Application Project anlegen, dabei aber den Haken bei “Use Google Web Toolkit” rausnehmen
Anlegen

Als nächstes die Spring Libraries hinzufügen:

  • spring-core.jar
  • spring-beans.jar
  • spring-context.jar
  • spring-web.jar
  • spring-webmvc.jar
  • jstl.jar
  • standard.jar
  • commons-logging.jar

Auf keinen Fall die All-In-One spring.jar benutzen, da javax.naming.* von GAE nicht unterstützt wird.

Spring Security lasse ich vorerst weg!

Als nächstes in der web.xml das Dispatcher-Servlet bekanntmachen:



	
		dispatcher
		org.springframework.web.servlet.DispatcherServlet
		1
	

	
		dispatcher
		*.html
	

	

org.springframework.web.context.ContextLoaderListener
	
	
contextConfigLocation

			WEB-INF/application-context.xml
			
	

    
    	index.jsp
    

Achtung: Wer El/JSTL benutzen möchte, sollte die 2.4 Version im Schema verwenden, oder ElIgnored in der JSP auf false setzen!

Ich habe auch schon für später eine application-context.xml in der web.xml angelegt!

Eine JSP mit Formular, um sich anzumelden:

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/jsp/include.jsp"%>




Username
Passwort

Der dazugehörende Controller:

package de.pmannel.login;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView;

public class LoginController extends SimpleFormController
{

	@Override
	protected ModelAndView onSubmit(HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception
	{
		ModelAndView mv = new ModelAndView(new RedirectView(getSuccessView()));

		User user = (User)command;
		mv.addObject("username",user.getJ_username());
		return mv;
	}
}

Die Jsp, an die gepostet wird:

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/jsp/include.jsp"%>

hi !

Der Controller dafür:

package de.pmannel.login;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class MyAppController implements Controller
{

	@Override
	public ModelAndView handleRequest(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception
	{
		ModelAndView mv = new ModelAndView("myapp");

		mv.addObject("username",ServletRequestUtils.getStringParameter(arg0, "username"));

		return mv;
	}
}

und meine Dispatcher-Servlet.xml:



	




loginController
myAppController
		
		
	

	




	

	

	


	


in der include.jsp kommen folgende Taglibs:

<%@ taglib prefix="c" 			uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" 		uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" 		uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" 		uri="http://www.springframework.org/tags/form" %>

Wenn dann alles soweit fertig ist, rechte Maustaste auf das Projekt, Run As –> Web Application!

Damit läuft GAE/J schonmal mit Spring MVC! Als nächstes versuche ich, mit Spring ORM und JDO den User im DataStore zu speichern.



GAE/J und Spring

Es ist mal wieder an der Zeit, meinen Horizont zu erweitern und mich in ein paar neue Themen einzuarbeiten. Dabei habe ich mich für Googles App Engine entschieden, da ja Cloud-Computing anscheinen neuer Hype wird und Google ja sowieso momentan mit vielen Sachen voll durchstartet.

Natürlich muss auch ein wenig Spring drin vorkommmen… 😉

Als Thema der App habe ich mir auch gleich ein aktuelles Problem von mir genommen. Da ich momentan auf Diät bin und mich jeden morgen wiege, vermisse ich sozusagen eine History meiner (hoffentlichen) Gewichtsabnahme mit Trend, Verlauf, usw. und evtl. noch ein paar weiteren Spielereien..

Anforderung also:

* Google App Engine
* Spring , Spring MVC, Spring Security
* JDO
* evtl. spätere Austausch des Frontends gegen GWT
* Gewichtseingaben über Telefon (Android) (das wird aber ein extra Projekt)
* Darstellung der Ergebnisse als TimeLine, möglichst mit Google Visualisation API
* Druck der Ergebnisse als PDF
* Benutzerkonfiguration
* …

Ob das alles miteinander funktionieren wird, bleibt abzuwarten…