jsp的包含指令与页面的跳转(用户登录程序的实现(JSP+JDBC))

jsp的包含指令与页面的跳转

1.静态包含是指在jsp编译时插入一个包含文本或代码的文件,先整合到一起再处理显示。即先包含后处理

注意:在一个完整的页面中,<html></html>、<head></head>、<body></body>这几个元素只能出现一次
语法:<% @include file = "文件路径"%>
不常用,知道理解就欧克了。

2.动态包含:可以自动区分被包含的页面是静态还是动态的。如果是静态的则与静态包含一样处理;如果是动态的,则可以先进行动态处理,然后再将处理好的结果包含进来。即先处理后包含。

注意:该语法是标签指令,与html的一样需要完结。
语法:
(1.)不包含参数:<jsp:include page="{要包含的文件路径|<%=表达式%>}" flish="true|flase"/>
(2.)包含参数:

<jsp:include page="{要包含的文件路径|<%=表达式%>}" flish="true|flase">
                        <jsp:param name="参数名称" value="参数内容"/>
                    </jsp:include>
说明:flush的属性默认值为true,flase表示网页完全被读进来菜输出。在每一个jsp的内部都会有一个buffer,true的话,当buffer满了就输出,一般该属性都是true。
buffer:缓冲器。

用法:传递参数该语法可以向被包含的页面传递参数,被包含的页面可以使用 request.getParameter() 方法接收参数。一般前面都会用设置接收的参数编码方式的。

  <%
            //设置请求的字符编码格式
            request.setCharacterEncoding("utf-8");
            String sid=request.getParameter("参数");
        %>
    request.getParameter()的用法:可以接收用户表单的输入内容,返回String类型数据,可以做登录验证。

3.跳转指令:将一个用户的请求(request)从一个页面传递到另一个页面。
语法:
(1.)不传递参数:<jsp:forward page="{要包含的文件路径|<%=表达式%>}"/>
(2.)传递参数:

<jsp:forward page="{要包含的文件路径|<%=表达式%>}">
                        <jsp:param name="参数名称" value="参数内容"/>
                        ...可以向被包含页面传递多个参数
                    </jsp:forward>

注意:这种跳转属于服务器端的跳转,跳转后地址栏不会改变。

例子:用户登录程序的实现(JSP+JDBC)

1.创建数据库和表

CREATE DATABASE webdb;
USE webdb;
CREATE TABLE USER(
userid VARCHAR(30) PRIMARY KEY,
uname VARCHAR(30) NOT NULL,
passwd VARCHAR(32) NOT NULL
);

INSERT INTO USER(userid,uname,passwd) VALUES(‘admin’,‘admin’,‘admin’);

2.(1).login.htm:用户登录表单页面,输入id与密码
(2).login_check.jsp:把登录提交过来的id与密码验证是否存在数据库表中,成功跳转登录成功页面,不成功跳转失败页面。
(3).login_success.jsp:登录成功,显示欢迎页面
(4).login_failure.htm:登录失败页,返回重新登录超链接实

3.程序实现

login.htm
<html>
<head><title>登录表单页面</title></head>
<body>
<center>
<h1>登陆操作</h1>
<hr>
	<form action="login_check.jsp" method="post">
		<table border="1">
			<tr>
				<td colspan="2">
					用户登陆
				</td>
			</tr>
			<tr>
				<td>登陆ID:</td>
				<td><input type="text" name="id"></td>
			</tr>
			<tr>
				<td>登陆密码:</td>
				<td><input type="password" name="password"></td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="submit" value="登陆">
					<input type="reset" value="重置">
				</td>
			</tr>
		</table>
	</form>
</center>
</body>
</html>
login_check.jsp
<%@page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.sql.*"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<center>
<h1>登陆操作</h1>
<hr>
<%!	// 定义若干个数据库的连接常量
	public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
	public static final String DBURL = "jdbc:mysql://localhost:3306/webdb" ;
	public static final String DBUSER = "root" ;
	public static final String DBPASS = "lzyft1030" ;
%>
<%
	Connection conn = null ;		// 数据库连接
	PreparedStatement pstmt = null ;	// 数据库预处理操作
	ResultSet rs = null ;		// 查询要处理结果集
	boolean flag = false ;	// 保存标记
	String name = null ;	// 保存真实姓名
%>
<%
try{
%>
<%
	Class.forName(DBDRIVER) ;
	conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
	String sql = "SELECT name FROM user WHERE userid=? AND password=?" ;
	pstmt = conn.prepareStatement(sql) ;
	pstmt.setString(1,request.getParameter("id")) ;
	pstmt.setString(2,request.getParameter("password")) ;
	rs = pstmt.executeQuery() ;	// 查询
	if(rs.next()){	// 如果有数据,则可以执行
		flag = true ;	//  表示登陆成功
		name = rs.getString(1) ;
	}	
%>
<%
}catch(Exception e)	{
	e.printStackTrace() ;
}
finally{
	try{
		rs.close() ;
		pstmt.close() ;
		conn.close() ;
	} catch(Exception e){}
}
%>
<%
	if(flag){	// 登陆成功
%>
		<jsp:forward page="login_success.jsp">
			<jsp:param name="uname" value="<%=name%>"/>
		</jsp:forward>
<%
	} else {		// 登陆失败
%>
		<jsp:forward page="login_failure.htm"/>
<%
	}
%>
</center>
</body>
</html>
login_success.jsp
 <%@page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>登录成功</title></head>
<body>
<center>
<h1>登陆操作</h1>
<h2>登陆成功</h2>
<h2>欢迎<font color="red"><%=request.getParameter("uname")%></font>光临!</h2>
</center>
</body>
</html>  
<html>
<head><title>登录失败</title></head>
<body>
<center>
<h1>登陆操作</h1>
<h2>登陆失败,请重新<a href="login.htm">登陆</a></h2>
</center>
</body>
</html>
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值