我对Jsp和HTML有一个非常基本的问题,下面的例子来自Java EE7黑皮书。
的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的代码
<%@page import="java.sql.*" errorPage="\MyError.jsp"%>
<html>
<body>
<%
Connection con=null;
String uname=request.getParameter("uname");
String pass=request.getParameter("pass");
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.123:1521:XE","scott","tiger");
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select * from userdetails where uname='"+uname+ "' and pass='"+ pass +"'");
if (!rs.next())
{
%>
User details given for user name : <%=request.getParameter("uname")%> and
password : <%=request.getParameter("pass")%> are not valid <br/> Try again
<%@include file="Login.html"%>
</body>
</html>
<%
return;
}//if
}//try
finally
{
try
{
con.close();
}catch(Exception e){}
}//finally
%>
This is a Home Page <br/>
Welcome, <%=uname%>
我的问题是关于挂在代码中间的</body> & </html>
标签,在return语句的正上方[不知道如何在代码中突出显示它们]。我不明白这两个标签的目的。我对为什么关闭html和body标签感到困惑。如何在关闭html标记后呈现更多代码。有人可以对此有所了解。
提前致谢。
答案 0 :(得分:3)
所以,虽然它的风格代码非常古老,但让我对它有所了解(为了其他初学者也是如此):
首先,你给出的代码是非常丑陋和古老的风格。
作为学术观点 -
在jsp中,你可以有3种类型的基本标签 -
<强>因此:强>
除了这3个脚本标签外,我们在jsp
中有3个指令标签除此之外,我们还有超过8个标准动作标签:
1. <jsp:useBean >
2. <jsp:forward > etc.
现在提出您的问题: 你对html和body标签关闭的原因感到困惑。如何在关闭html标记后呈现更多代码。
首先,我上面告诉过你的是,这是一种非常古老的风格编码,完全没有趋势。我们总是建议使用JSTL和其他 jsp中的标签,使jsp文件易于阅读,清洁,易于维护。 JSP文件用于视图层,我们不应该将任何java代码放在jsp文件中。 所以你给出的jsp文件是一团糟。
并且在关闭body和html标签之后编写的代码是一个scriptlet,它将在_jspService(req,rs)方法中转换为等效的java代码,该方法适用于jsp等效的servlet类。
<%
return;
}//if
}//try
finally
{
try
{
con.close();
}catch(Exception e){}
}//finally
%>
此代码是简单文本以及表达式标记(再次为您提供以文本格式显示在网页上的输出)
This is a Home Page <br/>
Welcome, <%=uname%>
[&GT;省略html,head和body标签以及在外面写文本 他们 当然,HTML规范允许这样做。根本原因是 浏览器一直试图与现有网页保持一致, HTML的早期版本没有定义这些元素。什么时候 HTML 2.0首先做了,它是以标签的方式完成的 丢失时推断。[来源] 1
有关详细信息,请参阅here