I have been a php dev for a while now. But I've been doing J2ee this year and I'll tell you I'm addicted to it.
You should look into using Java especially if you have a brief history with it. If you use Netbeans with the Maven you can setup a web environment in minutes. Use Spring 3's webmvc library, a Mysql server with java mysql library and you can setup what you need in a weekend.
Make a BaseController for your all your other controllers to extend. It will itself extend Spring's mvc library. If you want it all web2.0 then you can create a header private method in that BaseController that will send json output.
Then you can use annotations in your child controller methods to set things to get or post calls via JQuery inside of plain html pages (or jsp if you want session data). Use Mybatis to wrap your database object's SQL counterpart around the Java object.
You can make a BaseModel that will have a few protected methods. You'll wanna use FlexJson into Json that you want to get via JQuery.
Your POM.xml should look something like this.
Code:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.your.store.front</groupId>
<artifactId>StoreFront</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Your Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<org.springframework.version>3.0.6.RELEASE</org.springframework.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.0.6</version>
</dependency>
<dependency>
<groupId>net.sf.flexjson</groupId>
<artifactId>flexjson</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0.1</version>
<classifier/>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
</dependencies>
<build>
<finalName>StoreFront</finalName>
</build>
</project>
I would suggest making a basic site that uses JSP and sessions to keep users logged in. Then you can make a common JavaScript framework that wraps some jquery stuff. You can use the Class Jquery plugin from JavascriptMVC. This way you have one main Javascript Psuedo-Class that each page can extend with its on Child Psuedo-Class. Each child would be custom taylored to the HTML elements you need to interact with. Hint: All your interaction logic should be in the Parent class... the child will essentially call them, passing in the elements you want to bind to.
I'd also suggest using Underscore.js to give you some good javascript functions to help make coding Javascript not as alien to you as it might be.
You can build a small, yet robust site with everything in this post. Read up on Apache Maven. Get a book on JSP/Servlets. Don't fret over spring 3... there are some very simple tutorials online for just the mvc. All your dependencies will be brought in that you need.