`
zfh521
  • 浏览: 31955 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

miniStruts 适合GAE(Google app engine)的小型框架(Struts 1.x的克隆)

阅读更多

     很久以前就注意到了Google app engine,但是一开始它只支持Python,我又从来没接触过Python,索然对GAE很喜欢,但是仍感觉很遗憾。由于在上学,课业负担也很大,所以就放开了它一段时间。后来无意间在在一个网站上看到GAE支持Java了,这让我感到欣喜,因为我这时已经选定Java作为我以后的方向,于是又打开GAE的网站,下了SDK及文档,写了一个HelloWorld的程序,感觉还不错!后来我想在GAE基础上搭建一个博客,顺便来练一下自己的变成能力!由于我还是个Java新手,于是试图在网上找个能运行在GAE上的Java Blog程序,以供参考。可能是GAE支持Java的时间还不长,在网上很难找到合适的。由于本人水平所限,只能硬着头皮,一行一行代码的去写了。由于当时我对Java web的掌握程度只到达达Servlet,开发的过程是很枯燥的,后来由于种种原因,不得不把它在一边。

      又重新拾起它是在两个月前,由于意识到我的Java水平,以及在学校学习Java的局限,我向学校申请出来培训Java,以此希望能在毕业的时候能找个程序员的工作!我想在培训的过程中,根据培训的进程,不断完善我的Blog!

      在培训进行到一个月的时候,我们接触到了Struts 1.x,老师给我们讲了Struts的核心代码,并模拟了它的工作原理!由于先前看到网上的评论,GAE对Struts支持还不是很好(这是GAE的种种限制导致的),于是我想,何不专门写一个运行在GAE的框架,来简化自己开发Blog的工作!

     真正开始把自己的想法付诸实践是在一个星期前,到目前为止已实现了它的一个功能----捕获用户的请求--->为ActionForm赋值,执行Action中的execute方法。

    不论在功能上还是在代码的规范上miniStruts仍然是个“未降生的婴儿”(它还没有正式的名字,暂且以此为名,待他足够完善的时候再给取个合适的名字吧),但你仍然可以像使用Struts一样使用上述的功能,我的知识还不足以让它可以和Struts相媲美,但是我有种期待,希望它能够被广大喜爱GAE的同僚所使用。我急着把它拿出来,希望对它感兴趣的朋友一起来维护他,让他能够更快的增长。

      本文的的附件是它的源代码,里面有简单的注释,希望看到代码的朋友原谅我写代码的水平!

      下面是它的一个示例程序,以及部署的方法。

           注意:次示例运行在MyEclipse下,在MyEclipse开发GAE的配置工作请参考Goole  app engine的文档!

            1 部署miniStruts

               1.1 将附件中的代码解压后拷贝到你工程的目录下,建议放在单独的源目录下

                1.2 导入用到的包:

                      miniBlog 的核心用到了dom4j-1.6.1.jar , jaxen-1.1-beta-6.jar,在附件中一并提供,解压附件, 导入到您的工程下

               1.3 在web.xml中配置miniStruts,使它可以工作,web.xml示例如下:

 

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">  	
	<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>net.xioyo.myblog.action.ActionServlet</servlet-class>
		<init-param>
			<param-name>config</param-name>
			<param-value>/WEB-INF/struts-config.xml</param-value>
		</init-param>
		<load-on-startup>0</load-on-startup>
	</servlet>
  <servlet>
    <servlet-name>Login</servlet-name>
    <servlet-class>net.xioyo.myblog.action.Login</servlet-class>
  </servlet>

  
	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
  <servlet-mapping>
    <servlet-name>Login</servlet-name>
    <url-pattern>/servlet/Login</url-pattern>
  </servlet-mapping>
  
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>
</web-app>

 

    2  示例程序  

2.1      在MyEclipse下相应的包下建立UserForm的代码文档,代码如下

package net.xioyo.myblog.form;

import net.xioyo.myblog.action.ActionForm;

public class UserForm extends ActionForm{
	private String name;
	private String psw;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPsw() {
		return psw;
	}
	public void setPsw(String psw) {
		this.psw = psw;
	}
}
 

         2.2  在MyEclipse下相应的包下建立Action的代码文档,代码如下

package net.xioyo.myblog.action;

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

import net.xioyo.myblog.form.UserForm;
import net.xioyo.myblog.perdure.User;

public class LoginAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset='utf-8'");
		User user=new User();
		UserForm uf=(UserForm)form;
		user.setUsername(uf.getName());
		user.setPsw(uf.getPsw());
		response.getWriter().print("用户名:"+user.getUsername()+"\n密码:"+user.getPsw());
		return null;
	}

}
 

         2.3 在/war/WEB_INFO/下建立struts-config.xml文件,xml的格式遵从Struts 1.3的规范,示例如下:

<?xml version="1.0" encoding="UTF-8"?>
 <struts-config>
   <form-beans>
      <form-bean name="userForm" type="net.xioyo.myblog.form.UserForm"></form-bean>
   </form-beans>
   <action-mappings>
     <action path="/login" name="userForm" type="net.xioyo.myblog.action.LoginAction" ></action>
   </action-mappings>
 
 </struts-config>
 

2.6 建立登陆表单保存为login.jsp:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>   
    <title>Login</title>
  </head>
  
  <body>
    <form action="/login.do" method="post">
    	<input type="text" name="name" /><br/>
    	<input type="password" name="psw"/>
    	<input type="submit" value="登陆" />
    </form>
  </body>
</html>
 

2.5运行程序:

    启动Appserver之后,在浏览器中输入:http://localhost:8080/login.jsp,输入信息,点击提交,即可看到运行结果

 不能下载源码的请发邮件到我的邮箱索取:zfh.521@163.com

本文原创 引用请注明原文地址

0
0
分享到:
评论
1 楼 sangood 2010-04-21  
谢谢!有完善吗?

相关推荐

    Packt.Google.App.Engine.Java.and.GWT.Application.Development.Source.Code

    标题 "Packt.Google.App.Engine.Java.and.GWT.Application.Development.Source.Code" 暗示了这是一个关于使用Java和GWT在Google App Engine上开发应用程序的源代码包。这为我们提供了几个关键知识点: 1. **Google ...

    Google.App.Engine.Java.and.GWT.Application.Develop_GAE

    基于Google.App.Engine(GAE)的Java和GWT应用开发

    初用Google App Engine for Java (org.apache.jasper.JasperExceptio; org.datanucleun)

    3. **appengine-web.xml配置**:这个文件是GAE应用的配置文件,需要正确设置应用ID、版本号、安全限制、线程池大小等参数。 4. **JDO或JPA配置**:根据项目需求选择合适的持久化策略,并在相应的配置文件中指定...

    GAE(Google App Engine)空间申请使用教程及 GAE域名捆绑方法

    下载地址为:http://code.google.com/intl/zh-CN/appengine/downloads.html。选择对应版本的安装包进行安装。 #### 上传程序至GAE 1. **下载并配置应用程序**:为了方便演示,可以下载一个预构建好的示例应用程序...

    云端代码Google App Engine编程指南 高清带书签

    在谈论《云端代码Google App Engine编程指南》之前,我们需要先了解一下Google App Engine(GAE)平台的背景知识。Google App Engine(简称GAE)是由Google公司提供的一个无服务器(serverless)的云计算平台,该...

    Packtpub.Google.App.Engine.Java.and.GWT.Application.Development.Nov.2010

    ### 知识点一:Google App Engine (GAE) 概览 - **定义与功能**:Google App Engine (GAE) 是一个由谷歌提供的云平台服务,它允许开发者构建可扩展的网络应用程序。该平台提供了自动化的资源管理和高可用性,使...

    WingIDE部署GAE(google app engine)

    from google.appengine.ext.webapp.util import run_wsgi_app class HelloWorld(webapp.RequestHandler): def get(self): self.response.out.write('Hello, world!') application = webapp.WSGIApplication([('/...

    Google App Engine 入门教程

    1. Eclipse开发环境的安装和配置:文中提到了需要在Eclipse中安装特定的插件,首先需要下载Eclipse IDE,推荐下载的是“eclipse Mars”版本,这表明了特定版本的Eclipse可能更适合于Google App Engine的开发环境。...

    GAE for linux (google_appengine_1.9.10)

    google_appengine_1.9.10 for linux 发布于2014-08-28 To install on Linux: Unzip the App Engine SDK file you downloaded (google_appengine_1.9.10.zip), for example: unzip google_appengine_1.9.10.zip ...

    app engine初级教程资料.docx

    from google.appengine.ext.webapp.util import run_wsgi_app class MainPage(webapp.RequestHandler): def get(self): self.response.headers['Content-Type'] = 'text/plain' self.response.out.write('Hello,...

    Google App Engine API 大全

    **Google App Engine (GAE) API 大全** Google App Engine 是一个托管平台,它允许开发者使用特定的API和框架来构建、部署和运行Web应用程序。这个平台支持多种编程语言,其中Java是其中之一。在本指南中,我们将...

    使用Google App Engine架设网站.pdf

    【Google App Engine 简介】 Google App Engine 是谷歌推出的一个云计算平台,它允许开发者构建和托管网络应用程序。作为一款免费的虚拟主机服务,它不仅提供了存储空间、带宽和计算资源,还运行在谷歌庞大的全球...

    Using Google App Engine.2009.pdf

    该书主要介绍了如何利用Google App Engine(GAE)平台进行Web应用开发。Google App Engine是一个由谷歌提供的云服务平台,它允许开发者在谷歌的基础架构上构建和部署应用程序。 #### 什么是Google App Engine? ...

    Google App Engine 开发人员指南.pdf

    Google App Engine (GAE) 是由谷歌提供的一项云服务,允许开发者在其基础设施上部署网络应用。它旨在简化应用开发过程,使得开发者能够专注于编写高质量的代码,而无需担心底层基础设施的维护问题。 #### 二、...

    google app engine示例源代码

    clock.rar 这是我今天做的一个基于google app engine写的一个在该平台上开发app的示例,通过该示例的学习,我们可以很快上手学会怎样在GAE上开发属于你的应用程序了,希望对大家有用!

    GWT AppEngine 保存对象序列号.

    1. 创建实体类:首先,你需要创建一个Java实体类,它继承自`com.google.appengine.api.datastore.Entity`或实现`com.google.appengine.api.datastore.KeyAware`接口。这个类将代表你在Datastore中的实体。 2. 序列...

    Google App Engine开发人员指南

    Google App Engine Docs,Google App Engine开发人员指南(Java版),简体中文离线文档,起始页为主目录下的appengine\docs\docs.html

    google app engine开发人员文档

    Google App Engine(GAE)是谷歌提供的一种云计算平台,它允许开发者构建并托管Web应用程序,无需管理和维护服务器硬件。这个平台支持多种编程语言,包括Python、Java、Go和PHP,为开发者提供了强大的服务,如数据...

Global site tag (gtag.js) - Google Analytics