JSP的入门学习

JSP页面由指令标签、Java代码、注释、表达式和动作标签组成。指令标签如page、include和taglib用于页面配置和自定义标签加载。嵌入Java代码用于编写动态逻辑。request对象用于获取请求参数,response对象处理HTTP响应,包括设置头部信息和缓冲。session对象提供会话跟踪,而application对象则存储服务器级别的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP页面的基本构成

JSP页面主要由 指令标签、HTML语句、 注释、嵌入Java代码、JSP动作标签 等五个元素组成。

指令标签---通常位于文件的首位

嵌入Java代码---Java代码被包含在<%%>标签中

一、指令标签

指令标签不会产生任何内容输出到网页中,主要用于定义整个JSP页面的相关信息,如,使用的语言,导入的类包,指定错误处理页面等。

语法格式
<%@ 指令名称 属性名称="属性值"%>
  1. page指令
常见属性
1. language属性---设置JSP页面使用的语言,目前仅支持Java语言,属性的默认值是Java
    如<%@ page language="java"%>
2. extend属性---设置JSP页面继承的Java类,并不常用
3. import属性---设置JSP导入的类包
4. pageEncoding属性---定义JSP页面的编码格式,即指定文件编码
5. contentType属性---设置JSP页面的MIME类型和字符编码,浏览器据此显示网页内容
    如<%@page contentType="text/html;charset=utf-8"%>
  1. include指令
该指令用于文件包含,可以在JSP页面中包含另一个文件的内容
实例:
date.jsp文件
<%@page pageEncoding="GB18030"%>
<%@page import="java.util.Date"%>
<%
    Date now=new Date();
    String dateStr;
    dateStr=String.format("%tY年%tm月%td日",now,now,now);
%>
<%=dateStr%>
index.jsp文件中
<%@page language="java" import="java.util.*" 
contentType="text/html;charset=GB18030" pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>
            include指令演示
        </title>
    </head>
    <body>
        <!-- HTML注释信息 -->
        当前日期是:
        <%@include file='date.jsp' %>
        <br>
    </body>
</html>
  1. taglib指令
用于加载用户自定义标签
<%@taglib prefix="" uri=""%>
prefix属性---设置加载自定义标签的前缀
uri---指定自定义标签的描述符文件位置

二、 嵌入Java代码

  1. 代码片段
语法格式
<%编写Java代码%>
  1. 声明
定义全局成员变量或方法
定义全局变量---<%! long startTime=System.nanoTime();%>
定义全局方法---<%! 
                    int getMax(int a,int b){
                        int max=a>b ? a:b;
                        return max;
                     }
             %>
  1. JSP表达式
JSP表达式可以直接把Java的表达式结果输出到JSP页面中
<%= 表达式 %>

三、 注释

  1. HTML注释---<!-- 注释文本 -->
  1. JSP注释---<%--注释文本--%>
  1. 动态注释---<!-- <%注释文本%> -->
  1. 代码注释---//(单行注释) /* */ (多行注释)

四、 request对象

  1. 获取请求参数值
index.jsp文件中

<%@page pageEncoding="utf-8" %>
<body>
<a href="show.jsp?id=001">获取请求参数的值</a>
</body>

show.jsp文件中

<%@page pageEncoding="utf-8"%>
<body>
id参数的值为:<%=request.getParameter("id") %><br>
name参数的值为:<%=request.getParameter("name") %>
</body>
  1. 获取Form表单的信息
index.jsp文件中

<%@page pageEncoding="utf-8"%>
<form action="show.jsp" method="post">
    <ul style="list-style: none; line-height: 30px">
        <li>输入用户姓名:<input type="text" name="name" /><br></li>
        <li>选择性别: 
        <input name="sex" type="radio" value="男">男 
        <input name="sex" type="radio" value="女">女
        </li>
        <li>选择密码提示问题: <select name="question">
                <option value="母亲生日">母亲生日</option>
                <option value="宠物名称">宠物名称</option>
                <option value="电脑配置">电脑配置</option>
        </select>
        </li>
        <li>请输入问题答案:<input type="text" name="key"></li>
        <li>请选择个人爱好:
            <div style="width: 400px">
                <input name="like" type="checkbox" value="唱歌跳舞">唱歌跳舞 <input
                    name="like" type="checkbox" value="上网冲浪">上网冲浪 <input
                    name="like" type="checkbox" value="户外登山">户外登山<br> <input
                    name="like" type="checkbox" value="体育运动">体育运动 <input
                    name="like" type="checkbox" value="读书看报">读书看报 <input
                    name="like" type="checkbox" value="欣赏电影">欣赏电影
            </div>
        </li>
        <li><input type="submit" value="提交"></li>

    </ul>

</form>
-----------------------------------------------
show.jsp文件中

<%@page pageEncoding="utf-8" import="java.lang.*" contentType="text/html; charset=utf-8"%>

    <ul style="list-style: none; line-height: 30px">
        <li>输入用户姓名: <%=new String(request.getParameter("name").getBytes("ISO8859_1"), "utf-8")%>
        </li>
        <li>选择性别: <%=new String(request.getParameter("sex").getBytes("ISO8859_1"), "utf-8")%>
        </li>
        <li>选择密码提示问题: <%=new String(request.getParameter("question").getBytes("ISO8859_1"), "utf-8")%>
        </li>
        <li>请输入问题答案: <%=new String(request.getParameter("name").getBytes("ISO8859_1"), "utf-8")%>
        </li>
        <li>请选择个人爱好: <%
            String[] like = request.getParameterValues("like");
            for (int i = 0; i < like.length; i++) {
        %> <%=new String(like[i].getBytes("ISO8859_1"), "utf-8") + "&nbsp;&nbsp;"%>
            <%
                }
            %>
        </li>
    </ul>
  1. 获取请求客户端信息
  1. cookie管理

cookie是小段的文本信息,通过使用cookie可以标识用户身份、记录用户名及密码、跟踪重复用户。

首先创建index.jsp文件,在其中创建form表单,用于让用户输入信息,并且从request对象中获取cookie

判断其是否含有此服务器发送过的cookie,如果没有,则说明第一次访问本站;如果有,则将值读取出来,并赋值给相应的表单。

index.jsp文件中

<%@page pageEncoding="utf-8" language="java" contentType="text/html; charset=utf-8" import="java.util.*"%>

<%
    String welcome="第一次访问";
    String[] info=new String[]{"","",""};
    Cookie[] cook=request.getCookies();
    if(cook!=null){
        for(int i=0;i<cook.length;i++){
            if(cook[i].getName().equals("mrCookInfo")){
                info=cook[i].getValue().split("#");
                welcome=",欢迎回来!";
            }
        }
    }
%>
<%=info[0]+welcome%>
    <form action="show.jsp" method="post">
    <ul style="line-height: 23">
        <li>姓&nbsp;&nbsp;&nbsp;&nbsp;名:<input name="name" type="text" value="<%=info[0]%>">
        <li>出生日期:<input name="birthday" type="text" value="<%=info[1]%>">
        <li>邮箱地址:<input name="mail" type="text" value="<%=info[2] %>">
        <li><input type="submit" value="提交">
        
    </ul>
</form>

show.jsp文件中


<%@page pageEncoding="utf-8" language="java" contentType="text/html; charset=utf-8" import="java.util.*"%>

<%
    String name=request.getParameter("name");
    String birthday =request.getParameter("birthday");
    String mail=request.getParameter("mail");
    Cookie myCook=new Cookie("mrCookInfo",name+"#"+birthday+"#"+mail);
    out.print(name);
    myCook.setMaxAge(60*60*24*365); //设置cookie有效期
    response.addCookie(myCook);

%>
表单提交成功
<ul style="line-height: 24px">
    <li>姓名:<%=name %>
    <li>出生日期:<%=birthday %>
    <li>电子邮箱:<%=mail %>
    <li><a href="index.jap">返回</a>


</ul>

五、response对象

  1. 处理HTTP文件头

设置网页每五秒刷新一次---response.setHeader("refresh","5");

设置2秒后自动跳转至指定的页面---response.setHeader("refresh","2;URL=welcome.jsp");

设置相应类型---response.setContentType("text/html");

  1. 设置输出缓冲

通常情况下,服务器要输出到客户端的内容先写到一个输出缓冲区; 有三种情况,才会把缓冲区的内容写到客户端。

  1. jsp页面的输出信息已经全部写入到缓冲区

  1. 缓冲区已满

  1. 在jsp页面中调用了flushbuffer()方法或者out对象的flush()方法

response.setBufferSize()-----设置缓冲区的大小

response.isCommitted()-----检测服务器端是否已经把数据写入客户端

六、session对象

session对象是由服务器自动创建的与用户请求相关的对象,用于保护用户的信息,跟踪用户的操作状态。

  1. 创建及获取session信息
index.jsp文件中

<%@page pageEncoding="utf-8" language="java" contentType="text/html; charset=utf-8" import="java.util.*"%>

<body>
<%
    String sessionMessage="session练习";
    //message为sessionMessage对象的关键字,相当于是一个别名
    session.setAttribute("message", sessionMessage);//创建session对象
    out.print("保存在session范围内的对象为:"+sessionMessage);

%>
</body>

default.jsp文件中

<%@page pageEncoding="utf-8" language="java" contentType="text/html; charset=utf-8" import="java.util.*"%>

<body>
<%
    String message=(String)session.getAttribute("message");//获取session对象信息
    out.print("保存在session范围内的值为:"+message);
%>
</body>

//但是我的电脑中只有两片代码放到同一个文件中session对象的值才相同,而在两个文件中session对象中
的值不同

  1. 从会话中移除指定的绑定对象

语法格式:

remove.Attribute("关键字");

例如: session.removeAttribute("message");

  1. 销毁session

如果调用了session对象的invalidate()方法后,再调用session对象的任何其他方法时,都将报错。

  1. 会话超时的管理

一般来说session对象的生命周期在20到30分钟,超出这个时间范围或者服务器强行制止,这个session就不能使用。

设置绘画生命周期的方法

以秒为单位设置session的有效时间---setMaxInactiveInterval()

  1. session对象的应用
index.jsp文件中
//主要是构造网页表面

<%@page pageEncoding="utf-8" language="java"
    contentType="text/html; charset=utf-8" import="java.util.*"%>

<body>
    <form id="form1" action="session.jsp" name="form1" method="post">
        <div align="center">
            <table width="23%" border="0">
                <tr>
                    <td width="36%"><div align="center">您的名字是:</div></td>
                    <td width="64%"><label><div align="center">
                                <input type="text" name="name">
                            </div></label></td>
                </tr>
                <tr>
                    <td colspan="2"><label><div align="center">
                                <input type="submit" value="提交">
                            </div></label></td>
                </tr>
            </table>

        </div>
    </form>
</body>
session.jsp文件中
//将上个网页用户输入的用户名保存在session对象中,并添加其他文本框

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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>
    <%
        String name=new String(request.getParameter("name").getBytes("ISO8859_1"),"utf-8");
        session.setAttribute("name", name);
    %>
    <div align="center">
    <form id="form1" name="form1" action="result.jsp" method="post">
        <table width="28%" border="0">
            <tr>
                <td>您的名字是:</td>
                <td><%=name %></td>
            </tr>
            <tr>
                <td>您最喜欢去的地方是:</td>
                <td>
                    <label>
                        <input type="text" name="adress">
                    </label>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <label>
                        <div align="center">
                            <input type="submit" value="提交">
                        </div>
                    </label>    
                </td>
            </tr>
        </table>        
    </form>
    </div>
</body>
</html>
result.jsp文件中
//将用户输入的用户名、最喜欢去的地方显示到页面中

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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>
    <%
        String name=(String)session.getAttribute("name");
        String solution=new String(request.getParameter("adress").getBytes("ISO8859_1"),"utf-8");
    
    %>
    <form id="form1" name="form1" method="post">
        <table width="28%">
            <tr>
                <td colspan="2"><div align="center"><strong>显示答案</strong></div></td>
            </tr>
            <tr>
                <td width="49%">
                    <div align="left">
                        您的名字是:
                    </div>
                </td>
                <td width="51%">
                    <label>
                        <div align="left">
                            <%=name %>
                        </div>
                    </label>
                </td>
            </tr>
            <tr>
                <td>
                    <label>
                        <div align="left">
                            您最喜欢去的地方是:
                        </div>
                    </label>
                </td>    
                <td>
                    <div align="left">
                        <%=solution %>
                    </div>
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

七、application对象

application对象可将信息保存在服务器中,直到服务器关闭,生命周期比session对象长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值