|
精华帖 (0) :: 良好帖 (10) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-08-04
用过一点struts,spring mvc,总觉得不如ROR直接方便,于是,做为练习,写了一个类ROR的简单框架,望大家批评指教。 1、先介绍一下配置,为保证和数据库连接,需要配置actionrecord.properties: domain_base_class=com.et.ar.ActiveRecordBase com.et.ar.ActiveRecordBase.driver_class=com.mysql.jdbc.Driver com.et.ar.ActiveRecordBase.url=jdbc:mysql://localhost/mydb com.et.ar.ActiveRecordBase.username=root com.et.ar.ActiveRecordBase.password=soft123456 com.et.ar.ActiveRecordBase.pool_size=2 进而需要在web.xml中进行配置: <servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>com.et.mvc.DispatcherServlet</servlet-class>
<init-param>
<param-name>controllerBasePackage</param-name>
<param-value>controllers</param-value>
</init-param>
<init-param>
<param-name>viewBasePath</param-name>
<param-value>/WEB-INF/views/</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2、建立模型对象 package models;
import com.et.ar.ActiveRecordBase;
import com.et.ar.Column;
import com.et.ar.Id;
import com.et.ar.Table;
import com.et.ar.Unique;
/**
*
* @author Administrator
*/
@Table(name="users")
public class User extends ActiveRecordBase{
@Id private Integer id;
@Column
@Unique(message="名称必须唯一")
private String name;
@Column private String duty;
@Column private String remark;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDuty() {
return duty;
}
public void setDuty(String duty) {
this.duty = duty;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
3、编写控制器代码: package controllers;
import com.et.mvc.JspView;
import java.util.List;
import models.User;
/**
*
* @author Administrator
*/
public class UserController extends ApplicationController{
public void list() throws Exception{
List<User> users = User.findAll(User.class);
request.setAttribute("users", users);
}
public void show() throws Exception{
User user = User.find(User.class, request.getParameter("id"));
request.setAttribute("user", user);
}
public void new_() throws Exception{
User user = new User();
request.setAttribute("user", user);
}
public JspView create() throws Exception{
User user = User.createModel(User.class, "user", request.getParameterMap());
System.out.println(user.getName());
if (user.create()){
redirect("/User/list.do");
return null;
}
else{
return new JspView("new_","user",user);
}
}
public void edit() throws Exception{
User user = User.find(User.class, request.getParameter("id"));
request.setAttribute("user", user);
}
public JspView update() throws Exception{
User user = User.find(User.class, request.getParameter("id"));
user = User.updateModel(user, "user", request.getParameterMap());
if (user.update()){
redirect("/User/list.do");
return null;
}
else{
return new JspView("edit","user",user);
}
}
public void destroy() throws Exception{
User user = User.find(User.class, request.getParameter("id"));
user.destroy();
redirect("/User/list.do");
}
}
4、再来看看视图 4.1 list.jsp <h2>用户资料列表</h2>
<table border="1">
<thead>
<tr>
<th>名称</th>
<th>职务</th>
<th>备注</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach var="user" items="${users}">
<tr>
<td>${user.name}</td>
<td>${user.duty}</td>
<td>${user.remark}</td>
<td><a href="edit.do?id=${user.id}">修改</a> <a href="destroy.do?id=${user.id}">删除</a></td>
</tr>
</c:forEach>
</tbody>
</table>
<p><a href="new_.do">新增用户</a></p>
4.2 new_.jsp <h2>新增用户资料</h2>
<ul>
<c:forEach var="err" items="${user.errors}">
<li>${err}</li>
</c:forEach>
</ul>
<form action="create.do" method="POST">
<jsp:include page="form.jsp"/>
<input type="submit" value="提交" />
</form>
<p><a href="list.do">返回</a></p>
4.3 edit.jsp <h2>修改用户资料</h2>
<ul>
<c:forEach var="err" items="${user.errors}">
<li>${err}</li>
</c:forEach>
</ul>
<form action="update.do?id=${user.id}" method="POST">
<jsp:include page="form.jsp"/>
<input type="submit" value="提交" />
</form>
<p><a href="list.do">返回</a></p>
4.4 form.jsp <p>名称:<input type="text" name="user[name]" value="${user.name}" /></p>
<p>职务:<input type="text" name="user[duty]" value="${user.duty}" /></p>
<p>备注:<input type="text" name="user[remark]" value="${user.remark}" /></p>
这样,实现了基本的CRUD操作。
这个框架同时考虑了AJAX的操作,可以返回JsonView, TextView等。 如果覆盖控制器的beforeFilter和afterFilter则可以进行基本的过滤操作。
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-08-04
为什么现在啊猫啊狗都出书,都写框架,因为这些啊猫啊狗都没看过modle1 modle2,直接框架开始学java的
|
|
| 返回顶楼 | |
|
时间:2008-08-04
williamy 写道 为什么现在啊猫啊狗都出书,都写框架,因为这些啊猫啊狗都没看过modle1 modle2,直接框架开始学java的
哈哈 |
|
| 返回顶楼 | |
|
时间:2008-08-05
williamy 写道 为什么现在啊猫啊狗都出书,都写框架,因为这些啊猫啊狗都没看过modle1 modle2,直接框架开始学java的
大牛们火之前不也是啊猫啊狗,你这是什么理论。比起啊猫啊写框架,我更加讨厌大牛们将某几个框架奉为标准。 我们的目标当然是创新,而不是盲从。 写框架与写书不一样,框架不好你可以不用,书不好则会害人。所以写框架我觉得应该鼓励。 |
|
| 返回顶楼 | |
|
时间:2008-08-05
jasongreen 写道 williamy 写道 为什么现在啊猫啊狗都出书,都写框架,因为这些啊猫啊狗都没看过modle1 modle2,直接框架开始学java的
大牛们火之前不也是啊猫啊狗,你这是什么理论。比起啊猫啊写框架,我更加讨厌大牛们将某几个框架奉为标准。 我们的目标当然是创新,而不是盲从。 写框架与写书不一样,框架不好你可以不用,书不好则会害人。所以写框架我觉得应该鼓励。 严重同意,抱着框架当时髦,而不懂其原理,不管其是否合用的开发人员最可悲 |
|
| 返回顶楼 | |
|
时间:2008-08-05
gafking 写道 jasongreen 写道 williamy 写道 为什么现在啊猫啊狗都出书,都写框架,因为这些啊猫啊狗都没看过modle1 modle2,直接框架开始学java的
大牛们火之前不也是啊猫啊狗,你这是什么理论。比起啊猫啊写框架,我更加讨厌大牛们将某几个框架奉为标准。 我们的目标当然是创新,而不是盲从。 写框架与写书不一样,框架不好你可以不用,书不好则会害人。所以写框架我觉得应该鼓励。 严重同意,抱着框架当时髦,而不懂其原理,不管其是否合用的开发人员最可悲 嗯,相当的同意,楼主的创新精神值得大家学习。现在很多程序员抱着struts,spring等等这些框架到处宣扬,问起原理来,没几个人能说的明白,可悲!!!!像楼主这样的钻研创新的人很少见啦!!! |
|
| 返回顶楼 | |
|
时间:2008-08-05
支持自己写的框架,写在在烂也是原创!而且可以不断的改进,创新!
仅仅会使用现成的,永远不会有进步! |
|
| 返回顶楼 | |
|
时间:2008-08-05
2楼的不知道有没有仔细看楼主的文章,我觉得楼主的框架在一定范围内还是很好用的。
写个mvc的框架有那么难么,国外很多项目都是独立的框架,不过十几个类就可以搞定。我也在写,呵呵。只要项目中好用,为什么不写呢。
|
|
| 返回顶楼 | |
|
时间:2008-08-05
小鸟mvc,在web上搞mvc就是纯胡说八道,顶多一个dispatcher,几个帮助类,鸟mvc。也就jsf有点象mvc,所以就最糟糕
|
|
| 返回顶楼 | |
|
时间:2008-08-05
1,我用啊貓啊狗,很難聽,對不起
2,我說啊貓啊狗也做框架,説這是框架
其實框架是程序的半成品,是一對手腳架,或者程序的骨架。就像官方説話一樣,總是有一個套路,比如“我們雙方領導人達成共識,對大陸,臺灣兩岸遲遲不能實現自由三通表示強烈的譴責,以及對中華民族的未來表示美好的祝願”,那内容去了,總是能夠剩下一句話的骨架,這個就是框架
|
|
| 返回顶楼 | |









