']
#和socketserver那个模块很像
httpd = make_server('127.0.0.1', 8080, application)
print('Serving HTTP on port 8080...')
# 开始监听HTTP请求:
httpd.serve_forever()
jinja2字符串替换
Title
个人介绍
//jinja2的替换格式,对列表可以进行循环取值
{% for i in hobby %}
{{ i }}
{% endfor %}
#*************************
#python代码
from jinja2 import Template
def home(conn):
# {% for i in hobby %}
#
{{ i }}
# {% endfor %}
with open('08jinja2test.html', 'r',encoding='utf-8') as f:
data = f.read()
t = Template(data)
ret = t.render({'hobby':['金钱','女人','金鑫']})//对HTMl进行替换
conn.send(ret.encode('utf-8'))
conn.close()
jinja2和wsgire框架编写
import socket, time
from wsgiref.simple_server import make_server
from jinja2 import Template
# 客户端通过根路径访问时,服务端返回HTML页面
def home(conn):
with open('test.html', 'r', encoding='utf-8')as f:
new = str(time.time())
s = f.read()
# 将获取的动态时间替换掉HTML页面中的时间,达到动态返回页面的效果
t = Template(s)
ret = t.render({'hobby':['张达','猪繁育','力争']})
return ret.encode('utf-8')
# 当客户端通过CSS路径访问的时候,服务端返回CSS文件
def style(conn):
with open('style.css', 'rb')as f:
return f.read()
# 当客户端通过JS路径访问的时候,服务端返回CSS文件
def index(conn):
with open('test.js', 'rb')as f:
return f.read()
# 当客户端通过请求索要图片的时候,服务端返回图片
def png(conn):
with open('1.jpg', 'rb')as f:
return f.read()
# 当客户端发送请求索要,ico文件的时候,返回ioc文件
def ico(conn):
with open('wechat.ico', 'rb')as f:
return f.read()
def ind(conn):
with open('index.html', 'rb')as f:
return f.read()
# 定义一个路径和文件的对应列表,节省代码,
urlList = [('/', home), ('/style.css', style), ('/test.js', index), ('/wechat.ico', ico), ('/index', ind),
('/1.jpg', png)]
def app(envion,start_sponse):
#返回HTTP请求行
start_sponse('200 ok',[])
#获取请求路径
path=envion['PATH_INFO']
ret=None
for i in urlList:
if path==i[0]:
ret=i[1](1)
break
if ret:
return [ret]
else:
return [b'404']
httpd=make_server('127.0.0.1',8896,app)
httpd.serve_forever()
'''**************************************************'''
#前端代码
test
#循环读取hobby的数据
{% for i in hobby %}
如果在使用JAXB把xml文件unmarshal成vo(XSD自动生成的vo)时碰到如下错误:
org.xml.sax.saxparseexception : premature end of file
很有可能时你直接读取文件为inputstream,然后将inputstream作为构建unmarshal需要的source参数。InputSource inputSource = new In
servlet 搞java web开发的人一定不会陌生,而且大家还会时常用到它。
下面是java官方网站上对servlet的介绍: java官网对于servlet的解释 写道
Java Servlet Technology Overview Servlets are the Java platform technology of choice for extending and enha
这两天学到事务管理这一块,结合到之前的terasoluna框架,觉得书本上讲的还是简单阿。我就把我从书本上学到的再结合实际的项目以及网上看到的一些内容,对声明式事务管理做个整理吧。我看得Spring in Action第二版中只提到了用TransactionProxyFactoryBean和<tx:advice/>,定义注释驱动这三种,我承认后两种的内容很好,很强大。但是实际的项目当中
1)nosql数据库主要由以下特点:非关系型的、分布式的、开源的、水平可扩展的。
1,处理超大量的数据
2,运行在便宜的PC服务器集群上,
3,击碎了性能瓶颈。
1)对数据高并发读写。
2)对海量数据的高效率存储和访问。
3)对数据的高扩展性和高可用性。
redis支持的类型:
Sring 类型
set name lijie
get name lijie
set na
在多节点的系统中,如何实现分布式锁机制,其中用redis来实现是很好的方法之一,我们先来看一下jedis包中,有个类名BinaryJedis,它有个方法如下:
public Long setnx(final byte[] key, final byte[] value) {
checkIsInMulti();
client.setnx(key, value);
ret