javaweb(2.3)动态页面

  • • 发表于 8年前
  • • 作者 大妖怪
  • • 2661 人浏览
  • • 1 条评论
  • • 最后编辑时间 8年前
  • • 来自 [技 术]

原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处

动态网站,就是网站上显示的东西会根据用户不同的操作而改变,而我们动态网站的页面,普通的html页面已经不能满足我们的需求了,需要用到动态页面。动态页面有很多,比如freemarker、velocity、jsp等。今天主要讲下jsp。
首先我们需要两个依赖:

  • jstl.jar: 提供jstl标签库的依赖
  • standard.jar: 引用jstl标签库要用到的依赖

下面是jstl和standard两个依赖的地址:
http://dl.download.csdn.net/down10/20130714/73ab121560683e80bdeb213590350c03.rar?response-content-disposition=attachment%3Bfilename%3D%22jstl.rar%22&OSSAccessKeyId=9q6nvzoJGowBj4q1&Expires=1491210733&Signature=bK9%2F9sjZHSNKIyIYi7irwtOI7xg%3D
我们将包导入项目(拷贝到lib包下),然后在WebContent文件夹下new一个JSP File。建完之后你会发现和用到的就是html代码,只不过文件后是.jsp,页面最上面用<%%>包住了

最好能改下编码格式:

然后,我们需要在从jstl标签库中将标签引入到页面,在最上面加入这段代码:

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

这样就表示我们可以在页面使用标签库了,并且给这个标签库命名为”c”

然后我们来使用一下,在jsp页面做一个判断,从后端传来一个int类型的值,代表用户性别,0代表保密,1代表男,2代表女。在页面显示相应的性别:
servlet:

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    int gender = (int) (Math.random()*3);//生成一个0到2的随机数代表性别

    req.setAttribute("g", gender);//将代表性别的随机数放到返回参数中,起名为g

    req.getRequestDispatcher("index.jsp").forward(req, resp);//转跳到index.jsp页面,此处用到的是请求转发forward方法。
}

index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <!-- c表示上面prefix="c"中的c,此处可以随意起,c:if是jstl判断语句 -->
    <c:if test="${g==0}">
        保密
    </c:if>
    <c:if test="${g==1}">
        男
    </c:if>
    <c:if test="${g==2}">
        女
    </c:if>
</body>
</html>

这样我们在打开页面的时候刷新一遍就会出现一个性别。


代码中,我们用到了jstl标签的判断语句,

  • c是在引入标签的时候在prefix写的内容,可以写成任意内容,比如写了s,下面标签中就要换成s:if

  • test属性内我们放需要判断的内容,若test内的结果为true,则执行标签下的内容
  • ${}为EL表达式,${g}的意思是从request作用域中获取名字为g的内容的值。在标签中我们也可以进行各种运算,判断。和EL表达式很像的还有ONGL表达式(格式是#{}),这个以后会学到。
  • request.setAttribute()方法是将参数放入request作用域中。

jstl标签库还有很多,常用的有:

  • 遍历集合 <c:forEach></c:forEach>,方法用在创建结构相同但内容不同的集合,比如后端返回了一个list,list里面包含了一个用户的信息:姓名和年龄,然后我们要把姓名和年龄放到table中。
  • <c:choose>
    <c:when></c:when>
    </c:choose>,choose…when组合标签与Java switch语句的功能一样,用于在众多选项中做出选择.
    还有诸如set,import等标签,暂时不讲了,有兴趣可以私下了解一下,以上三种标签基本上已经满足大部分需求了。
分享到:
1条评论
Ctrl+Enter
作者

大妖怪

大妖怪

APP:1 帖子:76 回复:200 积分:7517

已加入社区[2943]天

梦里巷口,可有你倚门回首

作者详情》
Top