百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第七节)

yuyutoo 2024-10-19 11:06 7 浏览 0 评论

01

国庆长假终于结束了,博主想到以往这个时候,自己就已经回到学校,和一群基友扯扯犊子,顺便吹吹牛,好不快活,可惜这种生活不会再有了。虽说如此,但是参加了工作以后,毕竟有更多的时间去做自己想做的事情,没有了学校里的那么多约束,也不再需要为了考试忙活个半天,想来也是不错的。

好的,再次回到这个系列。

不知不觉,我发现自己在简书已经写了好几万字了。当我无聊的时候,就会去看看自己之前写的文章,然后感到很奇怪,似乎那些东西根本不是自己写的一样。我仿佛是在看别人的文章,好长时间我都有这种感受。

这真的是挺奇怪的,不过我转念又一想,当我看自己几个月以前的代码的时候,也经常有看不懂的情况,于是我也就释然了。

管他呢,先往下写吧。

上次登录工作做得差不多了,当我们在登录页面输入账号和密码,后台会进行一系列的验证,如果验证无误,就跳转到首页。

现在我们对首页进行一个小小的调整,就是说,如果登录成功了,右上角的登录图标就换成登录人的名字。

这是标题栏对应的页面 —— header.jsp

代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<div class="header">
 <div class='logo'>原创文字</div>
 <ul>
 <li class='first'><a href="index.jsp">首页</a></li>
 <li class='item'><a href="javascript:void(0)">原创故事</a></li>
 <li class='item'><a href="javascript:void(0)">热门专题</li>
 <li class='item'><a href="javascript:void(0)">欣赏美文</li>
 <li class='item'><a href="javascript:void(0)">赞助</a></li>
 </ul>
 
 <div class='login'>
 <span><a href="login.jsp">登陆</a></span> 
 <span>|</span> 
 <span><a href="javascript:void(0)">注册</a></span>
 </div>
</div>

02

在上一节,我们判断当用户名和密码全部匹配的时候,就把user对象,还有username放到session中。

现在,要实现标题栏判断的功能,我们可能会这么想,就是能不能在header.jsp里面做一个简单的if判断,如果username存在,那么就把 登录|注册 这个字样给换掉。如果不存在,就维持原状。

对的,毫无疑问,这个思路肯定是可以的。

俗话说得好,只要思想不滑坡,办法总比困难多。写程序也是一样,怕就怕没思路,有了思路,啥都好说。实在不行,就百度呗。

嗯,我百度了一下(好吧,其实我也不太会。。。),解决了一点点小问题。现在开始进行代码的实现。

首先,需要导入两个jar包,

分别是 jstl.jarstandard-1.1.2.jar

接着,在taglib.jsp中引入这个标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

这是JSTL的一个核心标签库,有了它,我们就可以为所欲为,哦不,可以在JSP页面上进行一些简单的控制了,比如说逻辑判断。

于是,代码就成了这样。

<div class='login'>
 <c:choose>
 <c:when test="${empty sessionScope.username}">
 <span><a href="login.jsp">登陆</a></span> 
 <span>|</span>
 <span><a href="javascript:void(0)">注册</a></span>
 </c:when>
 <c:otherwise>
 <span><a href="javascript:void(0)">欢迎您,${sessionScope.username}</a></span> 
 <span> | </span>
 <span><a href="javascript:void(0)">登出</a></span>
 </c:otherwise>
 </c:choose>
</div>

其实引入标签库的时候,我有点疑惑,因为我引入的明显是一个网址,也就是说,这个标签库应该是远程的。既然是远程的,为什么我还必须要添加两个jar包不可呢?可是如果我不添加的话,编译又报错了。难道和tomcat的版本有关系?我用的是tomcat7.0。额,如果有大神知道的话,求告知一下,这个我真的不太清楚为什么。

不管了,先继续往下写吧。

好的,让我们测试一下。

用户名: 张三

密码: 123456

点击登录

成功了。

JSP作为一个被广泛使用的模板引擎,有着很多很多的标签库,也有不少第三方的标签库。当然,我们也可以自己编写标签,这个有时间的话,我也打算来写一写,自定义标签还是很有趣的。

03

有了登录,肯定还需要有登出功能,总不可能每次都让用户关掉浏览器吧。

登出的话,我们只需要把session中的信息都删掉就行了,然后自动跳转到登录页面。

登出按钮:

<span><a href="${basePath}/controller/logoutController.jsp">登出</a></span>

我们再在controller文件夹内新建一个logoutController:

登出操作比较简单,我就直接上代码了:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<% 
 //注销
 session.removeAttribute("username");
 session.invalidate();
 String path = request.getContextPath();
 //获取端口
 int port = request.getServerPort();
 String basePath = null;
 if(port==80){
 basePath = request.getScheme()+"://"+request.getServerName()+path;
 }else{
 basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
 }
 response.sendRedirect(basePath + "/login.jsp");
%>

注销后,页面就自动跳转到登录页面。

然后,即便你再次访问首页,右上角也不会显示用户信息了。

因为我们已经将session中的用户信息给删除了。

04

接下来,我们继续画页面,之前首页的内容区一直没有做,现在我们来画一下吧。

既然是文章发布系统,主角就是各种文章,对不对?好的,文章又分很多种类,比如情感类,励志类,科技类等。于是,我们需要在首页对不同的文章进行一个分类展示。当然,只会展示前几条数据。

index.jsp

内容区代码:

<div class='h600' style='border:1px solid #ccc'>
 <div class='category'>
 <div class='title'>连载小说</div>
 <ul class='items'>
 <li class='item'></li>
 <li class='item'></li>
 <li class='item'></li>
 </ul>
 </div>
</div>

category有类型,种类的意思。

css

.category .title {
 margin-bottom: 10px;
 margin-top: 30px;
 border-bottom: 1px solid #cac5c5;
 height: 30px;
 text-indent:1em;
 font-size:18px;
 color:#666;
}

OK,大概有一个样子了。

接下来,我们给每一个item设置一个宽高,背景色,再加上一个左浮动。

.category .items .item {
 width: 160px;
 height: 231px;
 background: #ccc;
 margin: 20px;
 float: left;
}

就成了这样:

因为每一个item都是左浮动,所以别忘了清除浮动。

基于这样的一个思路,我们现在可以把页面模型搭出来了。

html

<!-- 内容区域 -->
<div style='border:1px solid #ccc'>
 <br/><br/>
 <div class='category'>
 <div class='title'>连载小说</div>
 <ul class='items'>
 <li class='item'></li>
 <li class='item'></li>
 <li class='item'></li>
 <div style='clear:both'></div>
 </ul>
 </div>
 
 <div class='category'>
 <div class='title'>编程代码类</div>
 <ul class='items'>
 <li class='item'></li>
 <li class='item'></li>
 <div style='clear:both'></div>
 </ul>
 </div>
</div>

css

.category {
 margin-top: 10px;
 margin-bottom:20px;
}
 
.category .title {
 margin-bottom: 10px;
 border-bottom: 1px solid #cac5c5;
 height: 30px;
 text-indent:1em;
 font-size:18px;
 color:#666;
}
.category .items {
 margin-left:10px;
}
.category .items .item {
 width: 230px;
 height: 320px;
 background: #ccc;
 margin: 20px;
 float: left;
 margin-right:20px;
 cursor:pointer;
}

现在的首页大概就是这个样子:

相关推荐

高一高二第一次月考认真作答(高二第一次月考的重要性)

正在进行高一、高二第一次月考,同学们正在认真完成化学试卷,研究考纲,探究考点,夯实基础,迎战高考!

山清水秀,盛世今朝(山清水秀出处)

万千星河,神州妖娆!山清水秀,盛世今朝!龙腾虎跃,锦绣前程!千里婵娟,祝福永远!

我校二模成绩已新鲜出炉(二模考试成绩)

充电加油备战高考,积极努力再拼一搏...

Argon Design向瑞萨电子有限公司提供Argon Streams VP9许可证

英国剑桥--(美国商业资讯)--领先的先进视频验证解决方案提供商ArgonDesignLtd已与日本半导体公司瑞萨电子有限公司(RenesasElectronicsCorporation)签署...

高考倒计时75天(高考倒计时75天励志语)

今天是2022年3月24日星期四,距离2022年高考还有75天时间对于十八岁的高三学子来说,有些事情的确会影响你们的一生,但是没有一件事能决定你们的一生!努力的意义,就是:以后的日子里,放眼望去,全...

期中考试正在进行(期中考试在即)

转眼即瞬,期中考试已到,紧张忙碌的两个月学习,检验的时刻到了。让我们拿出信心和勇气,来挑战自我。面对考验,我们该做的就是沉着,冷静。让知识来一次次洗礼我们的灵魂,让失败和成功迎接一次次的成长。你们可以...

不要浪费了你NAS上的HDMI接口!详解华硕NAS上HDMI接口的妙用

不要浪费了你NAS上的HDMI接口!详解华硕NAS上HDMI接口的妙用之前我在本站分享我使用的华硕(ASUS)AS6704T...

Java通过Kafka Streams库来实现数据流处理

#暑期创作大赛#...

From abandoned mines to limpid streams waters: how banks profit from EOD

ByZENGYanglinInthecurrentpursuitofthe“dualcarbon”target(carbonpeakingandcarbonneutra...

SPSS与Streams的集成实现实时预测

SPSSModeler是一个数据挖掘工作台,提供了一个可了解数据并生成预测模型的最先进的环境。Streams提供了一个可伸缩的高性能环境,对不断变化的数据进行实时分析,这些数据中包括传统结构的数据...

Kafka Streams, 我还会再使用它吗?

DeeptiMittal4分钟阅读...

大数据Hadoop之——Kafka Streams原理介绍与简单应用示例

一、KafkaStreams概述官网文档:https://kafka.apache.org/32/documentation/streams/...

Android上的TCP今天开始向用户推出,并将在下个月向所有用户提供

据extends网3月15日报道,Firefox今天宣布,其保护用户免受跟踪器攻击的全面cookie保护(TCP)功能现已在Android上可用。该功能默认启动模式,这样,跟踪器将无法收集有关用户的浏...

Linux curl命令(linux curl命令安装)

Linuxcurl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、H...

go语言http服务入门详解(go语言http服务器)

当你在浏览器中输入URL时,实际上是在发送一个对Web页面的请求。该请求被发送到服务器。服务器的工作是获取适当的页面并将其作为响应发送回浏览器。在Web的早期,服务器通常读取服务器硬盘上HTML文件的...

取消回复欢迎 发表评论: