JS 服务端编程 + JSTL 的留言板例子

最近要做一个WEB的小工具, 已有的代码都是用JSP写的。 又想用我自己实现的js-web,所以就想到了用javascript写后台的代码,用JSTL来表现。 javascript在服务器端运行的问题前面解决了,但是用JSTL来输出javascript的对象和在JSP中如何调用服务端的JS是这次才实现的。

 

1。 在JSP中调用服务器端的javascript使用了一个自自定义标签:

 

<%@ taglib uri="http://www.jsweb.org/tag/js-web" prefix="js" %>

<!--运行一个服务器端 javascript -->
<js:exec file="/js/jstl.js" />

 

2。 如何将JavaScript的对象转换为,JSTL能识别的Java对象呢? 定义了一个JavaScriptMap和JavaScriptCollection分别实现了Map和Collection两个接口。 可以将任意的Javascript对象以MAP/Collection方式传到JSP上面。

 

//取一个HTTP的参数,
var username = web.param('name');

//保存到HTTPRequest 的attribute中。
web.attr('username', username);

web.attr('map', {foo:'foo value', foo2:'foo2 value'});

//保存到Session中。
web.session('list', ['one', 'two', 'three', 'four']);

print("Hello, this a javascript running server side");

 3。 再看JSP中的代码:

<%@ taglib uri="http://www.jsweb.org/tag/js-web" prefix="js" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

<div>
<h1><js:exec file="/js/jstl.js" /></h1>
<div>
<div>
<h1>Request parameter</h1>
Hello, <c:out value="${username}" />
<div>
<div>
<h1>Javascript map</h1>
Map:<br/>
foo-><c:out value="${map.foo}" /><br/>
foo2-><c:out value="${map.foo2}" /><br/>
<div>
<h1>Javascript list</h1>
<c:forEach items="${list}" var="e">
    <c:out value="${e}" /><br/>
</c:forEach>
<div>
 

4。如何实现JavaScript服务器端访问数据库:

 

function init_connection(){
    if (!dbd){
                //导入数据操作Library, 在js-shell项目中实现。
                var dbd = __import__('DB', null, {})
		dbd.driver('org.sqlite.JDBC');
	}
	
	return dbd.connect("jdbc:sqlite:" + web.realpath("/WEB-INF/") + "/message.db");
}

//一个查询的例子
function list_message(){
    var conn = init_connection();
    .....
        //the two lines can combine to one,
        //var list = conn.select_list("select * from messages");
		var rs = conn.select("select * from messages");
		var list = rs.fetch_rows();
        	
     ......
    
    return list;    
}

//一个插入纪录的例子
function add_message(){
    var conn = init_connection();
     ....        
        conn.insert("messages", web.param(), ['title', 'message', 'username']);
      conn.close()   
}
 

5。 完整的代码下载地址:  http://js-web.googlecode.com/files/message-board.war

 

最先在考虑数据库操作的时候,想调用JPA,发现相关联的包太多了。最后使用了简单的JDBC方式操作。最近兴趣转移了,很久没有更新了,前几天需要做一个小工具的时候,才又想起了js-shell。加入了一些新的功能,包括数据库操作和Logging方面的Library.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值