WEB核心【案例:JSP回显信息】第七章

简介: 本篇章主要介绍JSP。jsp的概述以及格式,用jsp打印99乘法表,jsp作用域的回显,以及jsp的导包和集合的回显。最后一个案例帮助大家更好的巩固和学习

1,JSP回显信息

1,1 引言

目标:熟练掌握JSP信息回显技术

想要进行题目要求的回显:

使用Servlet拼接字符串是可以实现的

举个例子:一个Servlet程序进行写入页面回显:缺点就是很有缺点基本没人用,写了个示例大家了解一下

public void run1() throws IOException {
    boolean result = true;
    String str = "";
    if(result){
        str = "登录成功";
    }else{
        str = "登录失败";
    }
    PrintWriter w = getResponse().getWriter();
    w.write("<!DOCTYPE html>\n" +
            "<html lang=\"zh-CN\">\n" +
            "\t<head>\n" +
            "\t\t<meta charset=\"utf-8\">\n" +
            "\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n" +
            "\t\t<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n" +
            "\t\t<title>传智商城-登录页面</title>\n" +
            "\n" +
            "\t\t<link href=\"css/bootstrap.min.css\" rel=\"stylesheet\">\n" +
            "\t\t<link rel=\"stylesheet\" href=\"css/bootstrap-theme.min.css\" />\n" +
            "\t\t<script src=\"js/jquery-1.11.3.min.js\"></script>\n" +
            "\t\t<script src=\"js/bootstrap.min.js\"></script>\n" +
            "\t</head>\n" +
            "\n" +
            "\t<body>\n" +
            "\t\t<!-- 网站头部  -->\n" +
            "\t\t<div class=\"container\">\n" +
            "\t\t\t<div class=\"row\">\n" +
            "\t\t\t\t<div class=\"col-md-4\">\n" +
            "\t\t\t\t\t<img src=\"img/czxyLogo.png\" />\n" +
            "\t\t\t\t</div>\n" +
            "\t\t\t\t<div class=\"col-md-4\">\n" +
            "\t\t\t\t\t<img src=\"img/header.png\"/> \n" +
            "\t\t\t\t</div>\n" +
            "\t\t\t\t<div class=\"col-md-4\" style=\"padding-top: 20px;\">\n" +
            "\t\t\t\t\t<ul class=\"list-inline\" >\n" +
            "\t\t\t\t\t\t<li><a href=\"login.html\" class=\"btn btn-primary glyphicon glyphicon-user\">登录</a></li>\n" +
            "\t\t\t\t\t\t<li><a href=\"register.html\" class=\"btn btn-danger glyphicon glyphicon-plus\">注册</a></li>\n" +
            "\t\t\t\t\t\t<li><a href=\"cart.html\" class=\"btn btn-primary glyphicon glyphicon-shopping-cart\" onmouseover=\"showCartItem(this)\">购物车<span class=\"badge\">5</span></a></li>\n" +
            "\t\t\t\t\t</ul>\n" +
            "\t\t\t\t</div>\n" +
            "\t\t\t</div>\n" +
            "\t\t</div>\n" +
            "\t\t\n" +
            "\t\t<!-- 头部导航条  -->\n" +
            "\t\t<div class=\"container\">\n" +
            "\t\t\t<div class=\"row\">\n" +
            "\t\t\t\t<div class=\"col-xs-12\">\n" +
            "\t\t\t\t\t<nav class=\"navbar navbar-inverse\">\n" +
            "\t\t\t\t\t  <div class=\"container-fluid\">\n" +
            "\t\t\t\t\t    <div class=\"navbar-header\">\n" +
            "\t\t\t\t\t      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\">\n" +
            "\t\t\t\t\t        <span class=\"sr-only\">Toggle navigation</span>\n" +
            "\t\t\t\t\t        <span class=\"icon-bar\"></span>\n" +
            "\t\t\t\t\t        <span class=\"icon-bar\"></span>\n" +
            "\t\t\t\t\t        <span class=\"icon-bar\"></span>\n" +
            "\t\t\t\t\t      </button>\n" +
            "\t\t\t\t\t      <a class=\"navbar-brand\" href=\"index.html\">首页</a>\n" +
            "\t\t\t\t\t    </div>\n" +
            "\t\t\t\t\t\n" +
            "\t\t\t\t\t    <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n" +
            "\t\t\t\t\t      <ul class=\"nav navbar-nav\">\n" +
            "\t\t\t\t\t        <li class=\"active\"><a href=\"product_list.html\">手机数码<span class=\"sr-only\">(current)</span></a></li>\n" +
            "\t\t\t\t\t        <li><a href=\"#\">电脑办公</a></li>\n" +
            "\t\t\t\t\t        <li><a href=\"#\">家具家居</a></li>\n" +
            "\t\t\t\t\t      </ul>\n" +
            "\t\t\t\t\t      <form class=\"navbar-form navbar-right\" role=\"search\">\n" +
            "\t\t\t\t\t        <div class=\"form-group\">\n" +
            "\t\t\t\t\t          \t<div class=\"input-group\">\n" +
            "      \t\t\t\t\t\t\t\t<input id=\"wordsSearch\" type=\"text\" class=\"form-control\" placeholder=\"Search\" onkeyup=\"searchWords(this)\" onclick=\"showWordsList()\">\n" +
            "      \t\t\t\t\t\t\t\t<div class=\"input-group-addon\" onclick=\"itemulClose()\">×</div>\n" +
            "    \t\t\t\t\t\t\t</div>\n" +
            "\t\t\t\t\t        </div>\n" +
            "\t\t\t\t\t        <button type=\"submit\" class=\"btn btn-default\">Submit</button>\n" +
            "\t\t\t\t\t        <!-- 显示查询信息的div -->\n" +
            "\t\t\t\t\t        <div id=\"completeShow\" style=\"position:absolute;z-index:998;width:200px;\">\n" +
            "\t\t\t\t\t        \t<ul id='itemul' class='list-group'>\n" +
            "\t\t\t\t\t        \t\t<!--\n" +
            "\t\t\t\t\t        \t\t<li class='list-group-item'><a href='#'>查询结果1</a></li>\n" +
            "\t\t\t\t\t        \t\t<li class='list-group-item'><a href='#'>查询结果2</a></li>\n" +
            "\t\t\t\t\t        \t\t<li class='list-group-item'><a href='#'>查询结果3</a></li>\n" +
            "\t\t\t\t\t        \t\t<li class='list-group-item'><a href='#'>查询结果4</a></li>\n" +
            "\t\t\t\t\t        \t\t<li class='list-group-item'><a href='#'>查询结果5</a></li>\n" +
            "\t\t\t\t\t        \t\t-->\n" +
            "\t\t\t\t\t        \t</ul>\n" +
            "\t\t\t\t\t        </div>\n" +
            "\t\t\t\t\t      </form>\n" +
            "\t\t\t\t\t    </div>\n" +
            "\t\t\t\t\t  </div>\n" +
            "\t\t\t\t\t</nav>\n" +
            "\t\t\t\t</div>\n" +
            "\t\t\t\t\n" +
            "\t\t\t</div>\n" +
            "\t\t</div>\n" +
            "\t\t\n" 
            "</html>");

image.gif

1,2 概述及格式

JSP是Java独有,比HTML更强大。重要:JSP本质是一个Servlet

除了可以展示HTML效果,还可以嵌入Java代码进行编程

image.gif编辑

IDEA源码中,可以看到JSP独有内容(包括java代码)

浏览器源码中,看不到JSP独有内容,只能看到htm+css+js

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        int a = 10;
        a+=20;
    %>
    <h1>你好<%out.write(""+a);%></h1>
</body>
</html>

image.gif

image.gif编辑

小结:

JSP可以编写java代码,html不行。

1,3 课堂案例

课堂案例:JSP编写九九乘法表

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>九九乘法表</h1>
    <%
        //外层控制行
        for (int i = 1; i <=9 ; i++) {
            //内层控制列
            for (int j = 1; j <=i ; j++) {
                out.write(j+"*"+i+"="+(j*i)+"&nbsp;&nbsp;");
            }
            out.write("<br/>");
        }
    %>
</body>
</html>

image.gif

1,4 JSP作用域回显

JSP展示作用域数据案例:

Servlet

//需求:访问run2,向request作用域传递 username=小李,请求转发到demo3.jsp
//demo3.jsp上进行username信息回显
public String run2(){
    getRequest().setAttribute("username","小李");
    return "forward:/demo3.jsp";
}

image.gif

JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%-- 相当于:out.write(getRequest().getAttribute("username"))   --%>
    <h1>${username}</h1>
    <%-- 获取不到该键值对,返回空字符串    --%>
    <h1>${xxxx}</h1>
</body>
</html>

image.gif

image.gif编辑

Servlet:getRequest().setAttribute("key","value");

请求转发到JSP

JSP:${key}

如果获取不到该键值对,JSP表达式,返回空字符串

1,5 JSP导包及集合回显

JSP导包和集合数据回显:

<%@ page contentType="text/html;charset=UTF-8" language="java"
         import="java.util.List,java.util.Map,com.czxy.demo1.domain.Person"%>

image.gif

<%@ page import="包1,包2"%>

Demo1Servlet:

//需求:访问run4,向request作用域传递 List<Person>数据,请求转发到demo4.jsp
//demo4.jsp上进行List<Person>数据回显
public String run4(){
    List<Person> plist = new ArrayList<>();
    Collections.addAll(plist,
            new Person("007","坤哥","20"),
            new Person("008","隆哥","20"),
            new Person("009","骄姐","18")
            );
    getRequest().setAttribute("plist",plist);
    return "forward:/demo4.jsp";
}

image.gif

Jsp:

<%@ page import="com.czxy.demo1.domain.Person" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${plist}
    <hr/>
    <%
        List<Person> plist = (List<Person>) request.getAttribute("plist");
        for (Person p : plist) {
            out.write(p.getId()+","+p.getName()+","+p.getAge()+"<br/>");
        }
    %>
</body>
</html>

image.gif

1,6 案例代码实现

image.gif编辑

login.jsp

<form class="form-horizontal" method="post" action="/day04_1/d2">
    <input type="hidden" name="method" value="login"/>

image.gif

Demo2Servlet

public String login(){
    boolean result = true;
    String str = "";
    if(result){
        str = "登录成功";
    }else{
        str = "登录失败";
    }
    getRequest().setAttribute("msg",str);
    return "forward:/login.jsp";
}

image.gif

login.jsp

<div class="col-xs-11 col-xs-offset-1">
    <b><font size="4" color="#2B669A">会员登录</font> USER LOGIN</b>
    <br/>
    <b><font size="2" color="red">${msg}</font> </b>
</div>

image.gif

最后:

       如果文章对您有帮助,就拿起小手赶紧给博主点赞💚评论❤️收藏💙 一下吧!

      愿我们在未来的日子里。熠熠生辉!!!

相关文章
|
2月前
|
Java 数据安全/隐私保护
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
该博客文章通过JavaBean组件和JSP动作元素`<jsp:forward>`与`<jsp:param>`的使用示例,演示了用户登录流程,包括登录信息的提交、验证以及根据验证结果进行的页面跳转。
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
|
23天前
|
前端开发 机器人 测试技术
【RF案例】Web自动化测试弹窗处理
在进行Web自动化测试时,常会遇到不同类型的弹窗,如ajax、iframe、新窗口及alert/Confirm等。这些弹窗可通过Selenium进行定位与处理。其中,ajax弹窗直接定位处理;iframe需先选中再操作;新窗口类似iframe处理;而alert/Confirm则需特殊方法应对。在Robot Framework中,需先定义并获取窗口后使用特定关键字处理。此外,还有部分div弹窗需在消失前快速定位。希望本文能帮助大家更好地处理各类弹窗。
23 6
【RF案例】Web自动化测试弹窗处理
|
24天前
|
前端开发 数据安全/隐私保护
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
本文档详细介绍了HTML表单的多种元素及其用法,包括下拉菜单(`&lt;select&gt;` 和 `&lt;option&gt;`)、文本域(`&lt;textarea&gt;`)、标签解释(`&lt;label&gt;`)、各类按钮(`&lt;button&gt;`)及表单重置功能、无语义布局标签(`&lt;div&gt;` 和 `&lt;span&gt;`)以及字符实体的应用。此外,还提供了一个完整的注册信息表单案例,涵盖个人信息、教育经历和工作经历等部分,展示了如何综合运用上述元素构建实用的表单。
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
|
23天前
|
前端开发
【前端web入门第五天】03 清除默认样式与外边距问题【附综合案例产品卡片与新闻列表】
本文档详细介绍了CSS中清除默认样式的方法,包括清除内外边距、列表项目符号等;探讨了外边距的合并与塌陷问题及其解决策略;讲解了行内元素垂直边距的处理技巧;并介绍了圆角与盒子阴影效果的实现方法。最后通过产品卡片和新闻列表两个综合案例,展示了所学知识的实际应用。
30 11
|
23天前
|
前端开发
前端web入门第四天】03 显示模式+综合案例热词与banner效果
本文档介绍了HTML中标签的三种显示模式:块级元素、行内元素与行内块元素,并详细解释了各自的特性和应用场景。块级元素独占一行,宽度默认为父级100%,可设置宽高;行内元素在同一行显示,尺寸由内容决定,设置宽高无效;行内块元素在同一行显示,尺寸由内容决定,可设置宽高。此外,还提供了两个综合案例,包括热词展示和banner效果实现,帮助读者更好地理解和应用这些显示模式。
|
26天前
|
JavaScript 前端开发
【前端web入门第一天】03 综合案例 个人简介与vue简介
该网页采用“从上到下,先整体再局部”的制作思路,逐步分析并编写代码实现个人简介页面。内容涵盖尤雨溪的背景、学习经历及主要成就,同时介绍其开发的Vue.js框架特点。代码结构清晰,注重细节处理,如使用快捷键提高效率,预留超链接位置等,确保最终效果符合预期。
|
2月前
|
存储 Java
JSP中实现留言页面的编写并将留言信息展示出来
这篇文章介绍了如何在JSP中编写留言页面,并通过JavaBean类存储用户留言信息,同时展示了留言信息的展示方法。
JSP中实现留言页面的编写并将留言信息展示出来
|
2月前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
2月前
|
SQL 缓存 自然语言处理
实战案例1:基于C语言的Web服务器实现。
实战案例1:基于C语言的Web服务器实现。
117 15
|
2月前
|
前端开发 JavaScript API
【独家揭秘】Bottle框架为何能俘获开发者的心?三大实战案例带你领略Web开发新境界!
【8月更文挑战第31天】Bottle是一款轻量级Python Web框架,以简单高效著称,秉持极简设计,适合快速开发小型项目或构建API服务。本文通过具体代码示例展示Bottle框架的独特魅力,从安装到创建应用、路由设置、模板渲染及表单处理等方面进行详细介绍,帮助读者轻松上手并掌握Bottle的应用技巧。
37 1
下一篇
无影云桌面