基于JSP创建一个博客首页

点击上面“天码营”,加入我们,快速成长~

「内容简介」这一节中我们将学习如何使用JSP来实现“动态”的博客,通过条件判断和循环来渲染博客首页。

在学习了HTML/CSS等前端技术以后,我们能够编写漂亮的静态博客页面,那么接下来就应该考虑如何让他们动起来!这一节中我们将学习如何使用JSP来实现“动态”的博客系统。单纯使用Servlet同样也能完成类似功能,但是缺点也是显而易见的——大量HTML代码嵌入在Java源文件中,所以例子中不展示纯Servlet实现。

博客首页页面需要动态化的地方有两个:

最上方导航栏中的“我的首页”,“账号管理”等信息只有在用户登录后显示才有意义。由于尚未学习用户登录相关的细节知识,本节中判断用户是否登录我们用一个返回固定值的函数来模拟实现。

用户列表。随着时间的推移,注册用户会越来越多,这个列表的内容也是不固定的

通过条件判断显示导航栏

导航栏中需要根据条件决定是否隐藏导航链接,可以通过嵌入if表达式来实现:

%if(21){%ulclass=navnavbar-navliahref=#我的首页/a/liliahref=#账号管理/a/liliclass=dropdownahref=#class=dropdown-toggledata-toggle=dropdown账号管理spanclass=caret/span/aulclass=dropdown-menuliclass=dropdown-header管理/liliahref=#博客信息/a/liliahref=./create.JSP创建博文/a/liliahref=#博客管理/a/liliclass=divider/liliclass=dropdown-header账号/liliahref=#更改密码/a/liliahref=#退出登录/a/li/ul/li/ul%}%

由于21恒成立,所以导航链接会展示出来。在真正的应用中,这个if的条件应该改成用户是否登录。

通过循环显示用户列表

既然是动态化,那么有3个用户,就写3个用户的部分,必须通过循环来完成展示。这里我们简单的在JSP页面中定义一个List存储所有用户,当然这样只是为了对用户列表进行动态化示例,今后我们会学习如何从数据库中读取用户列表。

显示每一个用户信息的区块结构是相同的,只是内容(包括名字、描述、博客链接)不同,这是应用循环来展示动态信息的基础,相关HTML内容如下:

divclass=col-sm-4imgclass=img-circlesrc=static/img/catty.jpegwidth=height=h2purusmolestie/h2pTurpisinceptos,nequeveldolor.Maurislaoreet.Puruset,orciinsollicitudin,acmquam,iaculislacus./ppaclass=btnbtn-defaulthref=#访问raquo;/a/p/div

对于每一个用户,具体不同的内容包括:

头像,img标签的src属性

名字,h2标签内容

描述,p标签内容

博客链接,a标签的href属性

使用JSP对其动态化:

divclass=col-sm-4imgclass=img-circlesrc=%=avatarUrl%width=height=h2%=name%/h2p%=description%/ppaclass=btnbtn-defaulthref=%=blogUrl%访问raquo;/a/p/div

可以看到,使用JSP表达式可以很容易的将单个用户展示部分动态化,接下来的任务是循环展示,首先我们在JSP中定义一个用户列表:

%

pageimport=java.util.ArrayList%%

pageimport=java.util.List%%!publicclassUser{publiclongid;publicStringname;publicStringdescription;publicStringavatar;publicUser(longid,Stringname,Stringdescription,Stringavatar){this.id=id;this.name=name;this.description=description;this.avatar=avatar;}}%%ListUserusers=newArrayList();users.add(newUser(1L,user1,description1,images/default-avatar.jpeg));users.add(newUser(2L,user2,description2,images/default-avatar.jpeg));users.add(newUser(3L,user3,description3,images/default-avatar.jpeg));%

注意在引入第三方类库(List,ArrayList)时,需要在JSP页面头部通过%

page指令将它们import进来。上述例子定义了一个Java类User来表示用户,同时用一段Java代码添加了3个用户。注意:在JSP中定义的变量属于临时变量,作用域是该JSP文件,这里仅作为示例,不应该在实际中这样应用。

通过JSP对users变量进行循环:

%for(Useruser:users){%divclass=col-sm-4imgclass=img-circlesrc=%=user.avatar%width=height=h2%=user.name%/h2p%=user.description%/ppaclass=btnbtn-defaulthref=/user/%=user.id%访问raquo;/a/p/div%}%处理链接地址

在完成了博客首页动态化的过程后,我们可能会发现上面的图片全都没有正确显示,为了能够正确显示图片:

将图片(包括css,JavaScript等静态资源)放置在WebContent目录下(可以继续通过文件夹层级进行分类),保证能够在浏览器中直接访问

将HTML源文件中的链接地址修改为合适的值

静态资源分类

WebContent目录下的文件都会被直接复制到WAR的根目录下,除了WEB-INF目录受到保护不能从浏览器直接访问目录内容,其它的资源都可以直接被访问。所以我们对WebContent目录结构进行划分,将资源分类:

+--WebContent

----images/

----JavaScripts/

----stylesheets/设置合适的链接地址

以引入CSS文件为例,在静态HTML源文件中是这样引入CSS文件的:

linkrel=stylesheethref=







































白癜风能够治好的办法
北京白癜风的有效治疗方法



转载请注明:http://www.guyukameng.com/http/1053.html