时间:2023-05-30 21:24:02 | 来源:网站运营
时间:2023-05-30 21:24:02 来源:网站运营
JSP实例——博客首页:<% if (2 > 1) { %><ul class="nav navbar-nav"> <li><a href="#">我的首页</a></li> <li><a href="#">账号管理</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">账号管理 <span class="caret"></span></a> <ul class="dropdown-menu"> <li class="dropdown-header">管理</li> <li><a href="#">博客信息</a></li> <li><a href="./create.jsp">创建博文</a></li> <li><a href="#">博客管理</a></li> <li class="divider"></li> <li class="dropdown-header">账号</li> <li><a href="#">更改密码</a></li> <li><a href="#">退出登录</a></li> </ul> </li></ul><% } %>
由于2>1恒成立,所以导航链接会展示出来。在真正的应用中,这个if的条件应该改成用户是否登录。<div class="col-sm-4"> <img class="img-circle" src="static/img/catty.jpeg" width="140" height="140"> <h2>purus molestie</h2> <p>Turpis inceptos, neque vel dolor. Mauris laoreet. Purus et, orci in sollicitudin, acm quam, iaculis lacus.</p> <p><a class="btn btn-default" href="#">访问 »</a></p></div>
对于每一个用户,具体不同的内容包括:<div class="col-sm-4"> <img class="img-circle" src="<%=avatarUrl %>" width="140" height="140"> <h2><%=name %></h2> <p><%=description %></p> <p><a class="btn btn-default" href="<%=blogUrl %>">访问 »</a></p></div>
可以看到,使用JSP表达式可以很容易的将单个用户展示部分动态化,接下来的任务是循环展示,首先我们在JSP中定义一个用户列表:<%@page import="java.util.ArrayList"%><%@page import="java.util.List"%><%!public class User { public long id; public String name; public String description; public String avatar; public User(long id, String name, String description, String avatar) { this.id = id; this.name = name; this.description = description; this.avatar = avatar; }}%><% List<User> users = new ArrayList<>(); users.add(new User(1L, "user1", "description1", "images/default-avatar.jpeg")); users.add(new User(2L, "user2", "description2", "images/default-avatar.jpeg")); users.add(new User(3L, "user3", "description3", "images/default-avatar.jpeg"));%>
注意在引入第三方类库(List, ArrayList)时,需要在JSP页面头部通过<%@page>指令将它们import进来。上述例子定义了一个Java类User来表示用户,同时用一段Java代码添加了3个用户。注意:在JSP中定义的变量属于临时变量,作用域是该JSP文件,这里仅作为示例,不应该在实际中这样应用。<% for (User user : users) { %><div class="col-sm-4"> <img class="img-circle" src="<%=user.avatar %>" width="140" height="140"> <h2><%=user.name %></h2> <p><%=user.description %></p> <p><a class="btn btn-default" href="/user/<%= user.id %>">访问 »</a></p></div><% } %>
+--WebContent|----images/|----javascripts/|----stylesheets/
<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css"><link rel="stylesheet" href="stylesheets/homepage.css">
对于第一种外部地址的引用,无需修改;但是对于相对地址stylesheets/homepage.css的引用,浏览器会如何访问呢?假设当前访问的URL是http://localhost:8080/,那么访问的资源URL是http://localhost:8080/stylesheets/homepage.css,似乎没有问题。但是请注意,相对路径的含义是相对于当前URL地址的路径。如果我们访问的是http://locahost:8080/posts/create,那么改相对路径的实际访问地址是http://localhost:8080/posts/stylesheets/homepage.css,这显然是不正确的。<link rel="stylesheet" href="/stylesheets/homepage.css">
此时服务器会将其视为访问当前host中的“绝对路径”——也就是自动在这个路径之前添加上协议、主机名和端口(都是当前服务器的相同信息),那么无论我们访问的是当前网站下的任何路径,它都会给出统一的结果。 <link rel="stylesheet" href="{AppName}/stylesheets/homepage.css">
当然这样做很麻烦,每一个静态资源的引用都要进行修改。所以不妨通过HTML中的<base>标签来设置所有链接的相对地址:<base href="http://localhost:8080/{AppName}/" />
这样做的一个问题是如果部署到生产环境的服务器中,这一部分内容需要修改,在以后的课程中我们再讲解如何解决这个问题。关键词:实例