问题描述:
在 WebRoot 中创建一个目录 Protect 对中的内容进行访问保护,只有登录用户才能访问。若访问Protect 目录中的内容时用户没有登录则跳转到登录页面(login.jsp)。
问题解决:
文件结构如下:
MyServlet.java代码如下(作用:判断用户是否输入用户名和密码,若输入则跳转到被保护页面(protect目录的MyHtml.html)
package cn;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String uname=request.getParameter("uname");
String upassword=request.getParameter("passwd");
HttpSession session=request.getSession(true);
boolean checkOK=false;
if(uname!=null&&upassword != null){
checkOK=true;
session.setAttribute("userinfo",uname);
}
if(checkOK){
response.sendRedirect("protect/MyHtml.html");
}else{
response.sendRedirect("login.jsp");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
tempFilter.java代码如下:(作用:只有登录用户才能访问protect目录下的MyHtml.html。若访问protect 目录中的内容时用户没有登录则跳转到登录页面(login.jsp)。 )
package cn;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class tempFilter implements Filter {
public void destroy() {}
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
HttpSession session=request.getSession(true);
Object tmp=session.getAttribute("userinfo");
if(tmp==null){
response.sendRedirect("../login.jsp");
}else{
chain.doFilter(request,response);
}
}
public void init(FilterConfig arg0) throws ServletException {}
}
login.jsp代码如下:(作用:显示登陆页面)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
系统登录
系统登录
MyHtml.html代码如下:
MyHtml.html
只用登录用户才会看的到我.
web.xml的配置 在标签之前添加如下内容
tempFilter
cn.tempFilter
tempFilter
/Protect/*
MyServlet
cn.MyServlet
MyServlet
/MyServlet
运行效果:当首次访问http://localhost:8080/Demo/Project/MyHtml.html,页面自己跳转到系统登陆页面
输入用户名和密码,点击登录后,显示MyHtml.html的页面