论坛首页 入门技术论坛

rails与jsp对比

浏览 11649 次
该帖已经被评为新手帖
作者 正文
   发表时间:2009-09-10   最后修改:2009-09-10
最近在看rails,照着做滑板书上的例子
对比自己吃饭的jsp,觉得想哭的心都有了。
其他好处先不说,先说最简单的提交表单吧。
我们日常开发页面主要是jsp为主,配合自己造出来的框架。
话不多说了,上代码
rails页面:
  <% form_for :order,:url=>{:action=>:save_order} do |form|%>
	 <p>
	  <%= label :order,:name,"Name:" %>
	  <%= form.text_field :name,:size=>40%>
	 </p>
	 <p>
	  <%= label :order,:address,"Address:"%>
	  <%= form.text_area :address,:row=>3,:cols=>40%>
	 </p>
	 <p>
	  <%= label :order,:email,"E-mail:"%>
	  <%= form.text_field :email,:size=>40%>
	 </p>
	 <p>
	  <%= label :order,:pay_type,"Pay with:"%>
	  <%= form.select :pay_type,Order::PAYMENT_TYPES,:prompt=>"Select a payment method"%>
	 </p>
	 <%=submit_tag "Place Order",:class=>"submit"%>
   <% end%>

方法
   def save_order
    @order = Order.new(params[:order])
    if @order.save
      session[:cart] = nil
      redirect_to_index("Thank you for your order")
    else
      render :action=>:checkout
    end
  end
 

ok,处理完毕。
再看jsp页面
   <form action="/login" method="post">
    <table>
	  <tr>
	    <td>name:</td>
		<td><input type="text" name="name" /></td>
	  </tr>
	  <tr>
	    <td>address:</td>
		<td><input type="text" name="address" /></td>
	  </tr>
	  <tr>
	    <td>email:</td>
		<td><input type="text" name="email" /></td>
	  </tr>
	  <tr>
	    <td>pay_type</td>
		<td>
		  <select name="pay_type">
		   <option>1</option>
		   <option>2</option>
		   <option>3</option>
		  </select>
		</td>
	  </tr>
	  <tr>
	    <td colspan="2"><input type="submit" value="提交" /></td>
	  </tr>
	</table>
  </form>
 

就说简单的提交到servlet吧
   Order order = new Order();
		order.setName(name);
		order.setAddress(address);
		order.setEmail(email);
		order.setPayType(pay_type);
		try {
			dao.insertBean(order);
		} catch (Exception e) {
			logger.error("..."+e.getMessage(),e);
		}
		response.sendRedirect("index");
 

oh,servlet还需在web.xml中配置
   <servlet>
		<servlet-name>Login</servlet-name>
		<servlet-class>LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
		<servlet-name>Login</servlet-name>
		<url-pattern>/login</url-pattern>
   </servlet-mapping>
 

对比一下,立见差别。
好,现在加上验证
rails这边只需在model里加上hook方法
   validates_presence_of :name,:address,:email,:pay_type
 

即可验证不为空
如需其他特殊验证,可自己写方法
jsp这边呢,如果不用ajax,那就用js吧

在servlet中,需要一个个的request.getparameter()取出参数来,像这个例子,只有四个域,问题不大,但是实际上,远不止四个域,有时甚至会有四十个域,这时,再去get,想想有多可怕,而rails,根本不用get,这也是我非常欣赏rails的一个地方。

总结:页面代码,二者相差不多
     但是处理过程中,可就相差很多了,rails也就三句话,完成保存和跳转。无需配置。
    jsp这边先得繁琐的取出来,然后再保存。另外,servlet还得麻烦的配置。
   rails还是简便了很多。

  ps:写这篇文章只是说明自己学习rails的一些感受,并不想引起语言之争。即大家常说的一句话,语言并无好换之分,问题是使用语言的人。
    另外,这个帖子不知道放在哪个版块好,想想好多搞ruby的人都是从java过去的,于是还是决定放在ruby版块好了。
   发表时间:2009-09-10  
引用
Ruby代码
validates_presence_of :name,:address,:email,:pay_type 

即可验证不为空
如需其他特殊验证,可自己写方法
jsp这边呢,如果不用ajax,那就用js吧


这是后台验证,前端也要js验证的....
囧,比错了。。
0 请登录后投票
   发表时间:2009-09-10  
jsp和rails没有可比性,一个是动车组,一个是开着30码的老式拖拉机
0 请登录后投票
   发表时间:2009-09-10  
如果框架封装的够足的话

一个jsp可能没有几行代码

当然灵活性有待考究

这种单纯的比较没啥实际的意义
0 请登录后投票
   发表时间:2009-09-10  
rails是最佳实践的总结啊,用rails让我变得聪明
0 请登录后投票
   发表时间:2009-09-10  
机器人 写道
rails是最佳实践的总结啊,用rails让我变得聪明


个人认为rails有一个很大的缺点,就是做的过于智能化了,一旦你用上手了,基本就没有换其他技术的可能性了,比如我吧,一直想拿django做一个东西,但,让我感觉很尴尬,有点吃饱饭撑的没事做的感觉,rails几步直接搞定的事情,其他的平台需要拐十八道弯,我认为对于一个ruby程序员最切实的发展之路是,纵向的学习,比如研究flex 数据库 或者 c unix,rails这种开发成本的降低也为我们程序员掌握这些深入性的知识剩下了大量的时间,而对于一些横向类似的技术,比如python,php,java,我觉得想要回头很难!
0 请登录后投票
   发表时间:2009-09-10  
应工作需求从Rails转向Java

看到 DWR 我想吐了.

ajax有这么麻烦么
0 请登录后投票
   发表时间:2009-09-10  
rails 是框架吧, 你不能让jsp赤膊上阵啊。

如果用struts2的话,以楼主例子而言,代码量差不多
0 请登录后投票
   发表时间:2009-09-11  
e......这个比法有点无法把持。。。。
0 请登录后投票
   发表时间:2009-09-11  
iaimstar 写道
如果框架封装的够足的话

一个jsp可能没有几行代码

当然灵活性有待考究

这种单纯的比较没啥实际的意义


呵呵,我也考虑这个问题了。
本来想比较一下struts的,可工作中不用struts啊
我们平时写的页面,除了文中提到的自己搞的框架以外,大都是jsp了
正如你所说,我们的框架不灵活,所以好多页面用到了jsp
提交时,虽不是直接servlet,但也是使用了ofbiz之后,封装之后的,和servlet差不多

比较的意义,也大致在此吧。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics