<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<c:if test="${!empty sessionScope.error }">
你的密码或用户名错误。<!-- 显示后就需要把里面的值移走 -->
<c:remove var="error" scope="session"/>
</c:if>
<c:if test="${empty sessionScope.user }" var="boo">
<h2>这是登录的页面</h2>
<form action="<c:url value='/LoginServlet'/>" method="post">
NAME:<input type="text" name="name" /><br/>
PWD:<input type="text" name="pwd" /><br/>
不自动登录:<input type="radio" name="time" value="0" /><br/>
一天:<input type="radio" name="time" value="1" /><br/>
七天:<input type="radio" name="time" value="7" /><br/>
<input type="submit" value="提交" />
</form>
</c:if>
<c:if test="${!boo }">
欢迎您,${sessionScope.user },登录成功
<a href="">模块一 </a>
<a href="">模块2 </a>
<a href="<c:url value='/CancelAutoLogin'/>">取消自动登录</a>
</c:if>
</body>
</html>
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
String time=request.getParameter("time");
if(name!=null && pwd!=null && name.equals(pwd)){//此处随意写写,后面应该去servvice-->dao访问数据库
//这里假设登录成功了,我们把信息存入session里面
request.getSession().setAttribute("user", name);
//兼容中文,我们需要进行编码
name=URLEncoder.encode(name, "utf-8");
pwd=URLEncoder.encode(pwd, "utf-8");
Cookie c =new Cookie("autologin", name+","+pwd);//这个value不能采用这种方式的,安全性考虑,我们必须知道采用加密,或者二次加密,
int _time=60*60*24*Integer.valueOf(time);
c.setMaxAge(_time);
response.addCookie(c);
response.sendRedirect(request.getContextPath()+"/index.jsp");//在过滤器中默认的设置是拦截重定向,转发是内部直接转发,不过过滤器,不好办,但是只需要在web.xml中配置就可以了。
}else{
request.getSession().setAttribute("error", "1");
response.sendRedirect(request.getContextPath()+"/index.jsp");
}
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resp=(HttpServletResponse) response;
String session=(String) req.getSession().getAttribute("user");
if(session==null){
System.out.println("非正常登录");
resp.sendRedirect(req.getContextPath()+"/index.jsp");
}else{
System.out.println("成功登录");
chain.doFilter(req, resp);
}
}
<span style="font-size:18px;">public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(character);//去客户端接收的编码
response.setContentType("text/html;charset=utf-8");//设置发出去的编码
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig config) throws ServletException {
character=config.getInitParameter("character");//a</span><span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif;">haracter 设置为全局变量,</span><span style="font-size:18px;">
}</span>
<filter> <filter-name>character</filter-name> <filter-class>cn.hncu.Filter.CharacterFilter</filter-class> <init-param> <param-name>character</param-name> <param-value>UTF-8</param-value> </init-param> </filter>
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//自动登录,必须要设置session里面是都有值,有,则当前登录过,没有,就要去访问cookie里面的数据,cookie里面的数据
//是否和数据库里面的匹配,是,将session里面的值在这里设置,否,放走
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resp =(HttpServletResponse) response;
String session =(String) req.getSession().getAttribute("user");
if(session==null){//说明当前没有登录过
Cookie cs[]=req.getCookies();
if(cs!=null){
for(Cookie c:cs){
if(c.getName().equals("autologin")){
String value=c.getValue();//这是经过加密的,但是我们仅仅只是采用逗号连接了一下。
String[] strs=value.split(",");//在logserlvet里面采用的是先编码,再采用逗号连接,我们这里需要反过来
String name=URLDecoder.decode(strs[0], "utf-8");
String pwd=URLDecoder.decode(strs[1], "utf-8");
//将name,pwd数据拿到后台访问数据库,我们这里只是随便写写
if(name.equals(pwd)){
req.getSession().setAttribute("user", name);//设置session里面的参数
break;
}
}
}
}
}
chain.doFilter(req, resp);//一定要放走哦。。
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resp=(HttpServletResponse) response;
String ip=req.getRemoteAddr();//获取访问的ip;
System.out.println(ip+"IIPP");
if(set.contains(ip)){//在黑名单之内
System.out.println("set");
resp.getWriter().print("您属于黑名单..<a href='"+req.getContextPath()+"/index.jsp'>返回</a>");
//返回也是不行的,因为index向服务器请求的时候就直接拦截了
}else{
chain.doFilter(req, resp);
}
}
public void init(FilterConfig arg0) throws ServletException {
//这里是黑名单列表,从数据库中调取出来。这里只是简单的模拟下
set.add("192.132.0.12");//这是黑IP,这个是从后台数据库拿到的。
set.add("localhost");
set.add("192.132.32.4");
set.add("127.0.0.1");
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Cookie cc=new Cookie("autologin", "");//删除cookie的方法,就建立一个同名connkie,然后设置cookie的setmaxage=0;
cc.setMaxAge(0);
cc.setPath(req.getContextPath());
resp.addCookie(cc);
resp.sendRedirect(req.getContextPath()+"/index.jsp");
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有