一 实验内容:
编写一个Java Web项目,实现密码输入练习的功能。该项目包含三个页面,在输入页面输入要练习输入的头部和尾部,在密码框中输入头部与尾部的连接字符串,系统首先判断头部和尾部的字符串是否满足长度要求,其次判断是否输入正确,如果正确输入,跳转到正确结果页面,如果错误输入,跳转到错误结果页面。
二 实验步骤:
1、创建的项目名称为PasswordTest,创建其中的所需的目录
2、在根目录下创建PasswordInput.jsp,该页面具有一行提示文字:“请输入要联系密码的头部和尾部:”,两个文本框,其前有文字“密码头部:”和“密码尾部:”,一个密码框,其前有文字“练习输入密码:”,一个重设按钮,一个提交按钮
3、PasswordInput.jsp页面中密码头部和密码尾部的长度要求为3-5个,不符合要求会提示“密码头部长度小于3位”/“密码头部长度大于5位”/“密码尾部长度小于3位”/“密码尾部长度大于5位”
3、在合适位置建立PasswordCheckUserBean.java类,用于判断输入的密码是否为密码头部和密码尾部的连接字符串
4、在合适位置建立控制器PasswordTestServlet.java类,获取PasswordInput.jsp传来的密码头部、密码尾部和输入的密码,调用PasswordCheckUserBean类进行判断,如果成功,跳转到success.jsp页面,否则跳转到failure.jsp页面
5、在根目录下创建common目录,创建success.jsp页面,该页面第一行提示“您练习输入的密码正确!”,第二行提示 “输入的密码头部为:”+用户输入的密码头部,第三行提示 “输入的密码尾部为:”+用户输入的密码尾部,第四行提示 “您练习输入的密码为:”+用户输入的密码。
6、在根目录下创建common目录,创建failure.jsp页面,该页面第一行提示“您练习输入的密码错误!”,第二行提示 “输入的密码头部为:”+用户输入的密码头部,第三行提示 “输入的密码尾部为:”+用户输入的密码尾部,第四行提示 “您练习输入的密码为:”+用户输入的密码。
7、在合适的位置创建web.xml,配置PasswordTestServlet,并配置默认显示的欢迎页面为PasswordInput.jsp。
8、将项目部署到Tomcat服务中,运行并调试成功。依次试验Tomcat的四种Web应用部署方式。
三 代码部分:
1.PasswordInput.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'PasswordInput.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script language="JavaScript">
function isValidate(form){
//得到用户输入的信息
password=form.password.value;
first=form.first.value;
last=form.last.value;
if(!MiniLength(first,3)){
alert("密码头部长度小于3位");
form.first.focus();
return false;
}
if(!MaxLength(first,5)){
alert("密码头部长度大于5位");
form.first.focus();
return false;
}
if(!MiniLength(last,3)){
alert("密码尾部长度小于3位");
form.first.focus();
return false;
}
if(!MaxLength(last,5)){
alert("密码尾部长度大于5位");
form.first.focus();
return false;
}
return true;
}
function MiniLength(str,length){
if(str.length>=length)
return true;
else
return false;
}
function MaxLength(str,length){
if(str.length<=length)
return true;
else
return false;
}
</script>
</head>
<body>
<form name="form1" action="PasswordTestServlet " method="post" οnsubmit="return isValidate(form1)">
请输入要练习密码的头部与尾部:<br>
密码头部: <input type="text" name ="first"> <br>
密码尾部: <input type="text" name ="last"> <br>
练习输入密码: <input type="password" name ="password"> <br>
<input type="reset" value="重置">
<input type="submit" value="提交"><br>
</form>
</body>
</html>
2.PasswordTestServlet.java
package servlets;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import bean.PasswordCheckUserBean;
@SuppressWarnings("serial")
public class PasswordTestServlet extends HttpServlet {
//servlet根据需要完成的功能只需要完成服务类方法doGet()即可
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//request.getParameter用于获取表单中单元素的值
String password0 =request.getParameter("password");
String first0 =request.getParameter("first");
String last0 =request.getParameter("last");
//创建UserBean对象
PasswordCheckUserBean password1 =new PasswordCheckUserBean();
//调用业务方法:判断first+last是否等于password
boolean b =password1.validate(password0,first0,last0);
//要想获取session信息,先获取session对象
String forward;
HttpSession session =request.getSession(true);
session.setAttribute("first",first0);//向request中存储信息,前面是信息的名字, 后面是存储对象本身
session.setAttribute("last",last0);
session.setAttribute("password", password0);
if(b){
forward="common/success.jsp";
}else{
forward ="common/failure.jsp";
}
//RequestDispatcher是一个接口,可以完成重定向的功能,也就是说能够实现页面的跳转
RequestDispatcher dispatcher =request.getRequestDispatcher(forward);//指明界面要转向forward
dispatcher.forward(request, response);//完成转向还需要调用此方法
//当前文件和转向的目标文件在执行的过程中,使用的request对象是相同的,也就是说两个文件属于同一次请求
}
//实现doPost方法,只需调用doGet方法就行,目的是为了Servlet能够响应post请求
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
3.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<!-- 第一部分是Servlet的声明 -->
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>PasswordTest</servlet-name> <!--用于声明Servlet的名字-->
<servlet-class>servlets.PasswordTestServlet</servlet-class><!--用于声明Servlet所对应的类-->
</servlet>
<!-- Servlet映射, 第二部分是Servlet访问方式的设置 -->
<servlet-mapping>
<servlet-name>PasswordTest</servlet-name> <!--表示Servlet的名字-->
<url-pattern>/PasswordTestServlet</url-pattern> <!--服务器接收到请求之后会根据url-pattern查找相应的Servlet-->
</servlet-mapping>
<welcome-file-list> <!-- 定义欢迎界面为PasswordInput.jsp -->
<welcome-file>PasswordInput.jsp</welcome-file>
</welcome-file-list>
</web-app>