Java 在Jsp页面中关闭html和主体标记的目的

Java 在Jsp页面中关闭html和主体标记的目的,java,html,jsp,Java,Html,Jsp,我有一个关于Jsp和HTML的基本问题,下面的例子来自JavaEE7黑皮书 Login.html <html> <body> <pre> <form action="LoginProcess.jsp"> <b>User Name</b> : <input type="text" name="uname"/> <b>Password</b>

我有一个关于Jsp和HTML的基本问题,下面的例子来自JavaEE7黑皮书

Login.html

<html> 
<body>
    <pre>
    <form action="LoginProcess.jsp">
        <b>User Name</b> : <input type="text" name="uname"/>
        <b>Password</b>  : <input type="password" name="pass"/>
        <input type="submit" value="LogIN"/>
    </form> 
    </pre>
</body>
</html>

用户名:
密码:
下面是JSp的代码

 1. <jsp:useBean >
 2. <jsp:forward > etc.

为用户名提供的用户详细信息:和
密码:无效
请重试 这是一个主页
欢迎

我的问题是关于“代码>和/代码>标签,它们挂在返回语句上面的代码中间(不知道如何在代码中突出它们)。我不明白这两个标签的用途。我不明白为什么html和body标记是关闭的。以及在html标记关闭后如何呈现进一步的代码。有人能解释一下吗


提前感谢。

因此,尽管它的代码非常陈旧,但还是让我来解释一下(为了其他初学者):

首先,你给出的代码是非常丑陋和陈旧的

从学术角度来看——

在jsp中,可以有3种类型的基本标记-

  • Scriptlets:
  • 声明:
  • 表达式:
  • 所有jsp页面都会在内部转换为等效的servlet,并在等效的servlet文件中为每个jsp创建一个默认方法&u jspService(httpServletRequest,httpServletResponse)。 放置在Scriptlet中的代码自动进入该_jspService(httpServletRequest,httpServletResponse)中 因此:

    • scriptlet中声明的变量成为_jspService(httpServletRequest,httpServletResponse)方法的局部变量
    • 因为java不支持方法嵌套,所以我们不能在Scriptlet中放置任何方法
    • 在声明标记中,可以声明变量
    • 放置在jsp声明标记中的代码来自 _等价servlet的jspService(httpServletRequest,httpServletResponse)方法
    • 并且声明标记中声明的变量成为实例 等效servlet类的变量
    • 在jsp中,我们有9种类型的隐式对象(请求、响应、输出、, 页面等)
    • 所有隐式对象都是_jspService(req,res)的局部变量 方法,因此这些隐式对象在内部不可访问 jsp的声明标记
    • 表达式标记计算给定表达式并写入 将生成的输出作为网页内容输出到浏览器窗口
    • 算术运算、逻辑运算、java方法调用 返回值等可以放在表达式标记内
    除了这3个脚本标记外,我们在jsp中还有3个指令标记

  • 页面指令标记:此标记为jsp等效servlet程序提供全局信息,如导入包、增加缓冲区大小、指定错误页面等
  • Include Directive标记:此标记包括目标jsp的等效servlet代码和源jsp的等效servlet代码
  • Taglib指令:用于在jsp文件中包含和使用JSTL标记库
  • 除此之外,我们还有8个以上的标准动作标签:

       <% 
                return; 
            }//if
        }//try
        finally 
        {
            try
            {
                con.close();
            }catch(Exception e){}
        }//finally
        %>
    
    1。
    2.等
    
    现在来回答您的问题: 您对html和body标记为何关闭感到困惑。以及在html标记关闭后如何呈现进一步的代码

    首先,我在上面告诉过你的,那是非常老式的编码方式,完全过时了。我们总是建议使用JSTL和其他 jsp中的标签使jsp文件易于阅读、清洁和易于维护。JSP文件用于视图层,我们不应该在JSP文件中放入任何java代码。 所以,您提供的jsp文件是一个完全混乱的问题

    在关闭body和html标记之后编写的代码是一个scriptlet,它将在_jspService(req,rs)方法中转换为等价的java代码,该方法用于jsp等价的servlet类

    This is a Home Page <br/>
    Welcome, <%=uname%>
    
    
    
    这段代码是简单的文本和一个表达式标记(这同样给了您一个以文本格式显示在网页上的输出)

    这是一个主页
    欢迎
    [>省略html、head和body标记并在外部写入文本 他们 HTML规范当然允许 浏览器一直寻求与现有网页保持一致, HTML的早期版本没有定义这些元素 HTML2.0首先做到了这一点,它的实现方式与标记相同 缺失时推断。][来源]


    有关更多详细信息,请参见

    我不知道这本书,但我认为这是打字错误。把那本书扔掉。脚本在JSP中没有位置。那是1990年的风格。可怕、丑陋的东西。除了底部呈现的奇怪内容外,所有内容都是正确的。看起来主体和html标记的结尾在if语句中。这显然是一个错误。同时,打印密码意味着将密码以明文形式存储在数据库中,这是您永远不应该做的。这本书很过时。谢谢你,谢里什。很好的解释。
    This is a Home Page <br/>
    Welcome, <%=uname%>