发表于: 2017-11-09 23:24:02
1 689
今天做的事情:
测试步骤二中的小遗留,根据传入的时间格式把Long转换成时间格式。
因为设计表时,并没有用到时间格式,所以在Student表中加了一个create_date字段进行测试,还有一个获取当前时间的方法。
controller
jsp
<form>
<table border="1" cellpadding="5" cellspacing="0" style="align-content: center">
<tr>
<td>sid</td>
<td>${student.sid}</td>
</tr>
<tr>
<td>sname</td>
<td>${student.sname}</td>
</tr>
<tr>
<td>create_date</td>
<td><date:date value ="${student.create_date}"/></td>
</tr>
<tr>
<td>当前时间</td>
<td><date:date value ="${date}"/></td>
</tr>
</table>
</form>
页面
create_date字段我在数据库设置的是201711090256,使用logger打印的 获取当前时间的 date 为 1510196612237 。这样的话,很方便将long字段转换成日期格式。
将项目的路径换成服务器的,还有数据库名,所涉猎的表导出sql文件,再导入服务器中,还有改登录密码,我设置的密码和本地不一样,容易记混。
将项目打包放在服务器下的resin的webapps下,启动,./resin.sh start ,不过,在每次启动web容器之前,最好先查看是否启动着,或者,可以执行关闭,这样是没有问题的。
使用之前设置的子域访问,经过测试,所有页面都可以正常加载,没有问题。
再来温习一下nginx, nginx可以做一个反向代理,可以作为一个代理服务器,用来接收客户端或者网络上传来的连接请求,然后将请求转发到内部服务器,内部处理后,再通过代理返回给客户端。这个代理服务器,通常由客户端指定,将本来要发到web服务器上的http请求,先发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种服务的方式成为反向代理服务。
反向代理服务器通常由两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。
1.作为内容服务器的替身 : 如果内容服务器具有需要保护的安全信息,可以在防火墙外部设置一个代理服务器作为内部服务器的替身,当内部返回错误信息,代理服务器可以截取消息并更改错误信息的url,这样又多了一道保护屏障。
2:作为内容服务器的负载均衡器。:Web服务器每天都会接受大量的请求,这时候可以使用代理服务器分担压力,提高效率。当客户端发送真正服务器的请求,代理会将请求存入高速缓存,如果不至一个代理,DNX=S可以采用“循环复用法”选择其IP,随机选择请求路由,然后过经过不同的代理服务器。
昨天日报也详细讲解了。
当很多页面有重复的地方,就可以将页面分成几个部分,共有的部分,拿出来,谁要用到。就可以使用。这就是tiles的特性。
<definition name="DefaultTemplate" template="/WEB-INF/jsp/tiles10.jsp" >
<put-attribute name="title" value="" />
<put-attribute name="head" value="/WEB-INF/jsp/t10/head.jsp" />
<put-attribute name="menu" value=""/>
<put-attribute name="body" value=""/>
<put-attribute name="footer" value="/WEB-INF/jsp/t10/footer.jsp"/>
</definition>
<definition name="10" extends="DefaultTemplate">
<put-attribute name="title" value="iiii" />
<!--<put-attribute name="head" value="" />-->
<put-attribute name="menu" value="/WEB-INF/jsp/t10/menu.jsp" />
<put-attribute name="body" value=""/>
<!--<put-attribute name="footer" value="" />-->
<!--<put-attribute name="item" expression="/${item}.jsp" />-->
</definition>
在name为DefaultTemplate中,声明template为总的布局jsp,这里放着共有的head.jsp , fotter.jsp 。name为10 的 去继承,就可以获取头部和尾部的jsp。当有很多页面的时候,就可以使用这种方式,很方便的完成。
http://www.jnshu.com/dailyCreate///
3.熟练使用c标签,el表达式。
4.为什么要使用tiles框架?
3.核心标签库是JSTL中的核心库,提供支持。
(1)<c:set> 变量值和对象属性。 <c:set value="值" var="变量名" scope="变量的作用域" target="对象名" property=" 对象属性名"></c:set>
(2)<c:remove>:在指定作用域范围内删除变量。<c:remove var="变量名" scope="作用域"/>
(3) 条件标签:<c:if> <c:choose> <c:when> <c:otherwise>
(4)迭代标签:<c:forEach> <c:forTokens> <c:forEach>:用于遍历一个对象集合。
(5)<c:url>:用于对URL地址进行编码。
(6)<c:catch>:用于处理JSP页面错误。
el表达式的语法结构:${expression} , 提供. 和[] 两种运算符来存取数据,比如说${user},是要取出user的一条数据。是变量,会依序从Page,Request,Session,user的变量,如果中途找到,便返回,一般我都放在session中,或者返回这个user
属性范围在EL中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
这四个是el的隐式对象
pageContext
pageContext取得其他有关用户要求或页面的详细信息。
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr } 取得用户的IP 地址
${pageContext.session.new} 判断session 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
迭代标签
语法:<c:forEach items=“collection” var=“name” varStatus=“status” begin=“int“
end=”int” step=“int” >
//循环体
</c:forEach>
说明:1)items:是集合,用EL表达式;
2)var:变量名,存放items
3)varStatus: 显示循环状态的变量
①index:从0开始;
②count:元素位置,从1开始;
③first:如果是第一个元素则显示true;
④last:如果是最后一个元素则显示true;
4)begin:循环的初始值(整型);
5)end: 循环结束 ;
6)step:步长,循环间隔的数值;
这个是经常用到的。
4: 为什么要用tiles, tiles是一种模板机制,它能将网页的布局和内容分离。先创建模板,然后动态的插入内容进去,建立在jsp的include指令的基础上,但比它功能更强大。 采用tiles模板,大大提高了代码的可重用性和为维护性,模板包含了网页共同的布局,如果布局发生变化,只需要修改模板文件。
晚上看了些任务5的,先接触下
遇到的问题:
错误的话,还能找出来,理解东西时,有点慢。
收获:
学会使用tiles的使用,会使用tag自定义标签转换类型输出,C标签一些知识。
评论