建立一个登录界面,将界面信息提交给servlet进行处理,来决定是否进行成功页面的访问操作。并且对成功界面设置一个过滤器对象来进行权限的设置,以此来防止用户对成功界面的随意访问操作.
1:进行登录界面login.jsp的建立:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录界面</title>
</head>
<body>
<form action="login" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
</body>
</html>
2:建立相应的servlet类(loginServlet)对象来对来自客户端的数据信息进行处理操作:
当用户名为qingzhiyu时将跳转到success.jsp页面当中,否则直接跳转到login.jsp页面当中
package com.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 建立一个登录的servlet界面对象用于获取login界面当中所发送过来的请求参数数据信息
*/
@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {
private String username;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("执行dopost方法");
/*System.out.println(request.getAttribute("username"));此处使用getAttribute方法进行jsp页面对象当中的参数获取时,username对象的值将会为空。因为attribute方法
* 是用于进行对象当中属性参数的获取,但是表单当中提交的数据信息值则是以参数的形式跟在了表单所提交的URL地址的后面,所以使用attribute方法是无法获取到表单当中的数据
* 必须要使用Parameter方法才能够对表当当中的数据来进行获取操作
* */
username=request.getParameter("username");
System.out.println("username="+username);
if(username.equals("qingzhiyu"))
{//当登录名为qingzhiyu时,将web容器对象所接收到的请求数据信息和响应直接通过服务器对象来转发到success.jsp页面当中
request.getRequestDispatcher("success.jsp").forward(request, response);
}
else
{//当登录信息的用户名不正确时,则web容器对象直接发送一个响应给客户端让客户端重新取访问登录界面当中的数据信息来重新进行数据信息的填写操作
System.out.println("您所输入的用户名错误,请重新进行信息的输入操作");
response.sendRedirect("login.jsp");
}
}
}
3:建立登录成功的jsp页面,并对用户名信息进行获取输出操作
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录成功界面</title>
</head>
<body>
<!--
在EL表达式对象当中:${username}是用于对request,response,session,application等对象当中的属性值进行输出操作,${param.username}则是用于获取请求对象URL当中所
携带参数信息进行获取操作,所以在使用${username }表达式来对数据信息进行输出操作之后所得到的数据信息为空,以为当登录成功时,web容器将所接收到的URL请求和其后面所携
带的参数直接转发到了success.jsp页面当中。只能够通过对参数信息的获取来得到用户名
-->
恭喜您 ${param.username } 登录成功.
</body>
</html>
4:进行servlet访问时的配置信息web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>过滤器实例</display-name>
<servlet>
<servlet-name>log</servlet-name>
<servlet-class>com.servlet.loginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>log</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
以上代码就可以完成一个通过servlet进行处理的简单的登录界面,但是有一个缺点是用户在直接输入success.jsp页面资源的URL地址之后就可以直接对成功界面当中的资源进行访问操作,以这样的方式来接间的跳过了登录环节,不利于安全。所以要对success.jsp页面来设置一个过滤器对象来对所有的请求数据信息过滤操作,防止不经过登录环节就对页面资源进行访问的事情发生.