精华帖 (0) :: 良好帖 (6) :: 新手帖 (6) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-09
因公司需要,为公司写了1个很简单的WEB框架,目前已经在公司很多内部系统中使用,希望大家能多给点意见: index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <form> 输入你的名字:<input type="text" name="yourname" /> <input type="submit" value="Forward 提交" name="forwardSubmit" /> <input type="submit" value="redirect 提交" name="redirectSubmit" /> </form> </body> </html>
index.java
package jnet.forms; public class index extends BaseForm{ public void index(){ // 传值到JSP页面 this.addValue("me", "XXXX"); } public String forwardSubmit(){ // 取页面传过来的值 String yourname = this.getParam("yourname"); // 把值传到下1个页面 this.addValue("yn", yourname); return FormStatics.ACTIONRETURN_FORWARD + "index2.jsp"; } public String redirectSubmit(){ // 取页面传过来的值 String yourname = this.getParam("yourname"); // 把值通过url传到下个页面 return FormStatics.ACTIONRETURN_REDIRECT + "index2.jsp?yn=" + yourname; } } index2.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <c:if test="${param.yn==null}"> <h1>你好:${yn}</h1> </c:if> <c:if test="${param.yn!=null}"> <h1>你好:${param.yn}</h1> </c:if> </body> </html> 注释:index.jsp中的表单会自动提交并执行index.java中的方法,所以不需要写form的action属性,执行的后台方法就是你点击的submit按钮name属性对应的方法名。 比如你点击的"Forward 提交"按钮,该按钮name="forwardSubmit",所以会执行index.java中的forwardSubmit方法
2. 加载列表,删除数据列子,list.jsp页面加载用户列表,并有个删除按钮可以删除对应的用户,代码如下: list.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <form> <table> <tr> <th>id</th> <th>name</th> <th> </th> </tr> <c:forEach items="${list}" var="row"> <tr> <td>${row.id}</td> <td>${row.name}</td> <td> <input type="submit" name="delete" value="删除" id="${row.id}" /> </td> </tr> </c:forEach> </table> </form> </body> </html> list.java
package jnet.forms; import java.util.ArrayList; import java.util.List; public class list extends BaseForm{ public void index(){ List lst = new ArrayList(); lst.add(new user(1,"x1")); lst.add(new user(2,"x2")); lst.add(new user(3,"x3")); lst.add(new user(4,"x4")); this.addValue("list", lst); } public void delete(){ // 取删除的行记录的id int id = this.getIntegerValue(eventArgument); System.out.println("你要删除的用户id是:" + id); } public class user{ private int id; private String name; public user(int id,String name){ this.id=id; this.name=name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } }
注释:list.java中index方法为页面加载前执行的方法,如果需要在页面加载前执行一些操作(读取数据库,检查用户权限),就可以写在index方法中。 因删除按钮的name="delete",所以会执行后台delete方法,删除按钮的id就绑定的就是用户的id,所以后台直接this.getIntegerValue(eventArgument)就能 取到要删除的用户id
3. 上传文件,代码如下: upload.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <form enctype="multipart/form-data"> <input type="file" name="file1" /> <input type="submit" name="save" value="上传" /> </form> </body> </html>
upload.java
public class upload extends BaseForm{ public void save(){ MultipartFile mf = this.getFile("file1"); try { mf.saveTo("c:\\" + mf.getOriginalFilename()); } catch (Exception ex) { ex.printStackTrace(); } } }
baseform主要是封装了一些简单的方法,如下: public class BaseForm { public final static String eventArgument = "__EVENTARGUMENT"; /** * 取request中的参数 * @return */ public String getParam(String key){ return getRequest().getParameter(key); } /** * 取request中的参数数组 */ public String[] getParamValues(String key){ return getRequest().getParameterValues(key); } /** * 取整数值 * @param key * @return */ public Integer getIntegerValue(String key){ if(getParam(key) == null || getParam(key).trim().length()==0) return null; return Integer.valueOf(getParam(key)); } public MultipartFile getFile(String key){ MultipartRequest mr = (MultipartRequest) getRequest(); return mr.getFile(key); } /** * 把值添加到请求中 */ protected void addValue(String key,Object value){ getRequest().setAttribute(key, value); } private HttpServletRequest getRequest(){ return ActionContext.getRequest(); } }
功能介绍完毕,功能很简单,不知道大家觉得这样简单的WEB框架怎么样,大家多给点意见,谢谢 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-03-09
有点tapestry的意思
|
|
返回顶楼 | |
发表时间:2009-03-11
重复发明轮子..为啥不用sturts2
还是说教学用...不知道这么简单的东西可以用在复杂的应用上面么?? |
|
返回顶楼 | |
发表时间:2009-03-13
感觉核心的东西是java反射,,,是够简单,但一些效率的问题,可能还有优化的地步
|
|
返回顶楼 | |
发表时间:2009-03-16
toeo 写道 重复发明轮子..为啥不用sturts2
还是说教学用...不知道这么简单的东西可以用在复杂的应用上面么?? 这个跟sturts2完全不一样,并不存在重复发明轮子的问题. sturts2好不好不用说,但它并不是适合所有公司,所有人的使用和要求。 我做的这个简单框架目的并不是取代其他框架用在复杂的应用上(我也没这个能力), 只是为了适应公司的内部的需求而做的,这个要搞清楚。 |
|
返回顶楼 | |
发表时间:2009-03-16
findhappy7 写道 感觉核心的东西是java反射,,,是够简单,但一些效率的问题,可能还有优化的地步
其他的WEB框架应该都是使用反射吧,不然怎么触发对应的方法? |
|
返回顶楼 | |
发表时间:2009-03-16
轮子没有好不好,能用就行.
但是自己用的轮子要持久.不能增加其他人的学习负担. 做轮子简单,用轮子难,写轮子教程更难. struts虽然有可能不是你想要的,但是web开发需要的东西,开发人员只要google一下,就全有了. 你的轮子不看源代码,没办法加模块. |
|
返回顶楼 | |
发表时间:2009-03-16
这个模型根据不同的需求,,再不断的扩展,,又是一个struts了
|
|
返回顶楼 | |
发表时间:2009-03-17
还可以,收藏下,还有待改进的地方
|
|
返回顶楼 | |
发表时间:2009-03-17
最后修改:2009-03-17
java快速开发平台ajf(agile java framework) 供大家消遣娱乐,玩玩耍下
javaeye帖子 http://www.iteye.com/topic/257804 个人主页 http://hi.baidu.com/ajf8 |
|
返回顶楼 | |