发表于: 2017-09-07 15:43:36

1 801


今天完成的事情:

之前完成的tiles框架还有些问题,就是我组装的每一个网页都要在tiles.xml中进行拼接,也就是都需要一个<definition>块。比如我想修改删除所有的footer页面换成另一个,那就需要每一个<definiton>块都要改,页面一多肯定特别麻烦,怎么办呢?

查了一下发现tiles还有一个功能,可以指定泛型

我发现假定有两个网页都使用了同一套模板,网页的头脚都是一样的,只有body不同,并且我对这个模板修改的时候两个网页也会一起变化。

先修改tiles.xml

<definition name="baseTemplate">
   <put-attribute name="title" value="" />
   <put-attribute name="header" value="/WEB-INF/pages/views/header.jsp" />
   <put-attribute name="items" expression="/WEB-INF/pages/views/${items}.jsp"></put-attribute>
   <put-attribute name="footer" value="/WEB-INF/pages/views/footer.jsp"></put-attribute>
</definition>
<definition name="mainSimpleTemplate" template="/WEB-INF/test.jsp" extends="baseTemplate" ></definition>

用items指代变化的页面,el表达式${items}这个呢我们可以指定任何存在的jsp页面进去

再改一下test.jsp

<html>
<head>
   <title>色即是空</title>
</head>
<body>
<div><tiles:insertAttribute name="header"/></div>
<div id="body_ccontainer">
   <tiles:insertAttribute name="items" />
</div>
<li><tiles:insertAttribute name="footer"/></li>
</body>

好了基础的设置就这么点东西,我们去设定两个甚至更多的网页

@RequestMapping(value = "/template", method = RequestMethod.GET)
public String Test(Model model) {
model.addAttribute("items","body");
   return "mainSimpleTemplate";
}

@RequestMapping(value = "/template2", method = RequestMethod.GET)
public String Test2(Model model) {
model.addAttribute("items","login");
   return "mainSimpleTemplate";
}

这里两个页面对应的url分别是/template和/template2,但其实返回的都是test.jsp。只是我给定的items不同,一个参数是body,一个参数是login(方便task5写的)

来访问一下看看吧

然后来修改一下头或者尾,算了,直接删除尾巴看看吧

我删除test.jsp里的<tiles:insertAttribute>肯定是没问题的,这个不用多说。但是我如果不删test.jsp里的,只动tiles里的尾巴会怎么样呢?

<definition name="baseTemplate">
   <put-attribute name="title" value="" />
   <put-attribute name="header" value="/WEB-INF/pages/views/header.jsp" />
   <put-attribute name="items" expression="/WEB-INF/pages/views/${items}.jsp"></put-attribute>
   <!--<put-attribute name="footer" value="/WEB-INF/pages/views/footer.jsp"></put-attribute>-->
</definition>
<definition name="mainSimpleTemplate" template="/WEB-INF/test.jsp" extends="baseTemplate" ></definition>

注释掉了,别的都没动

我一猜就要报错,看一下

找不到"footer"。这不废话么,我给注释掉了啊,所以说改tiles.xml里的拼接是不行的。

这个教程作者怕是被骗了233

好了,如果我们在controller里定义了100w个页面,那么也只需要修改模板jsp的页面就会对所有的页面生效,tiles.xml的东西还是不能动,除非两边都改。

能做的都做了,任务4到此结束,开始任务5

哇,东西有点多,我先设计登陆界面吧

<!DOCTYPE HTML>
<html>
<head>
   <title>Simple Login Form</title>
   <meta charset="UTF-8" />
   <meta name="Designer" content="PremiumPixels.com">
   <meta name="Author" content="$hekh@r d-Ziner, CSSJUNTION.com">
   <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/login/reset.css">
   <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/login/structure.css">
</head>
<body>
<form class="box login">
   <fieldset class="boxBody">
       <label>Username</label>
       <input type="text" tabindex="1" placeholder="MotherFucker" required>
       <label><a href="#" class="rLink" tabindex="5">Forget your password?</a>Password</label>
       <input type="password" tabindex="2" required>
   </fieldset>
   <footer>
       <label><input type="checkbox" tabindex="3">Keep me logged in</label>
       <input type="submit" class="btnLogin" value="Login" tabindex="4">
   </footer>
</form>
</body>
</html>

数据库新建一个表存用户信息,用于注册或者登陆验证

自动生成mybatis

然后业务逻辑还没想清楚容我再看看拦截器什么的

深度思考:

1、什么是jsp?

jsp是一种动态网页技术标准。它出现的根本原因是为了简化servlet的设计,是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准

jsp本质上是servlet,比如我要要访问test.jsp,然后利用Tomcat的解析器,他会将jsp文件转化为java文件,这个java文件就是servlet,jsp能实现的,servlet也能实现。不管你最终写的是一个多么复杂的jsp文件,它最后总能转化为一个html文件。

2、jsp有几个内置对象?

jsp有9个内置对象和4个作用域

request           请求对象               作用域 Request 

response          响应对象                作用域 Page 

pageContext       页面上下文对象          作用域 Page 

session           会话对象                作用域 Session 

application       应用程序对象            作用域 Application 

out               输出对象                作用域 Page 

config            配置对象                作用域 Page 

page              页面对象                作用域 Page 

exception         例外对象                作用域 page

3、熟练使用c标签,el表达式?

http://www.jnshu.com/daily/33084?dailyType=others&total=44&page=3&uid=14229&sort=0&orderBy=3

4、为什么要使用tiles框架?

可以实现界面复用,修改需求的时候会容易很多

明天计划的事情:

学一下des

遇到的问题:

怎么获取login界面传进来的数据呢

收获:

感觉没做什么,有点懵


返回列表 返回列表
评论

    分享到