filter之自动登录

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>Insert title here</title>
</head>
<body>
  <form action="${pageContext.request.contextPath}/login" method="get">
	<table>
		<tr>
			<td>用户名</td>
			<td><input type="text" name="username"/></td>
		
		</tr>
		<tr>
			<td>密码</td>
			<td><input type="text" name="password"/></td>
		
		</tr>
		<tr>
			<td colspan="1"><input type="checkbox" name="saveName" value="ok">记住用户名</td>
			<td colspan="1"><input type="checkbox" name="autoLogin" value="ok">自动登录</td>
		</tr>
		<tr>
			<td colspan="2"><input type="submit"></td>
		</tr>
	
	</table>
  </form>
  <script type="text/javascript">
  	onload=function(){
  		var s = "${cookie.savename.value}";
  		s = decodeURI(s);
  		//alert(s);
  		document.getElementsByName("username")[0].value=s;
  		
  		
  	}
  </script>

</body>
</html>

servlet

package com.huida.web.servlet;

import java.io.IOException;
import java.net.URLEncoder;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import com.huida.bean.User;
import com.huida.constant.Constant;
import com.huida.service.UserService;

/**
 * 登录
 */
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//0设置编码
		request.setCharacterEncoding("utf-8");
		//1.获取用户名和密码
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		System.out.println(username+"...."+password);
		//2.调用service
		User user=null;
		
		
		try {
			 user = new UserService().login(username, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//3.判断user是否为空
		if(user==null){
			//System.out.println("没有此用户");
			request.getRequestDispatcher("/login.jsp").forward(request, response);
			//System.out.println("为空了....");
			return;
		}else{
			//System.out.println("有此用户");
			//不为空  跳转到sucess.jsp
			request.getSession().setAttribute("user", user);
			//判断是否勾选了自动登录 若勾选了需要将用户名和密码放入到cookie中,写回浏览器 cookie不支持中文
			if(Constant.IS_AUTO_LOGIN.equals(request.getParameter("autoLogin"))){
				Cookie c = new Cookie("autologin",username+"-"+password);
				c.setMaxAge(3600);
				c.setPath(request.getContextPath()+"/");
				response.addCookie(c);
				
			}
			//判断是否勾选 了记住用户名
			//Constant.IS_SAVE_NAME.equals(request.getParameter("saveName"))
			//Constant.IS_SAVE_NAME.equals(request.getParameter("saveName"))
			if(true){
				System.out.println("进来了");
				//创建cookie
				Cookie c = new Cookie("savename", URLEncoder.encode(username,"utf-8"));
				c.setMaxAge(3600);
				c.setPath(request.getContextPath()+"/");
				response.addCookie(c);

			}
			
			
			
			//页面重定向
			response.sendRedirect(request.getContextPath()+"/success.jsp");
		}
		
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}

filter

package com.huida.web.filter;

import java.io.IOException;
import java.sql.SQLException;

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.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.huida.bean.User;
import com.huida.service.UserService;
import com.huida.utils.CookUtils;

import net.sf.json.JSON;
import net.sf.json.JSONArray;

public class AutoLoginFilter implements Filter{

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
		//强转
		HttpServletRequest request = (HttpServletRequest)arg0;
		HttpServletResponse response = (HttpServletResponse)arg1;
		//判断session中有无登录用户没有的话继续自动登录
		User user = (User) request.getSession().getAttribute("user");
		//System.out.println(JSONArray.fromObject(user));
		if(user==null){
			//没用用户  需要自动登录
			//判断访问的资源是否有和登录注册相关,若相关则不需要自动登录
			String path = request.getRequestURI();
			//System.out.println(path);
			if(!path.contains("/login")){
				//获取指定的cookie
				Cookie c = CookUtils.getCookieByName("autologin",request.getCookies());
				//判断cookie是否为空
				//若不为空 获取值(username password) 调用service完成登录
				if(c!=null){
					String username = c.getValue().split("-")[0];
					String password = c.getValue().split("-")[1];
					//调用service完成登录
					//User user = null;
					try {
						user = new UserService().login(username, password);
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					if(user!=null){
						//将user放入session中
						request.getSession().setAttribute("user", user);
						
					}
					
				}
				
			}
			
		}
		
		
		
		arg2.doFilter(arg0, arg1);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

}

内容概要:本文围绕直驱式永磁同步电机(PMSM)的矢量控制策略开展系统性研究,基于Simulink平台构建了完整的闭环仿真模型,深入探讨了电机在矢量控制下的动态响应特性与控制性能。研究内容涵盖了矢量控制的核心理论与关键技术模块,包括Clarke与Park坐标变换、转子磁场定向控制(FOC)、SVPWM调制算法、双闭环PI控制器(电流环与速度环)的设计与参数整定。通过仿真验证了系统在启动、突加负载及变速工况下的稳定性、抗干扰能力与动态调节精度,有效实现了对电机转矩与转速的精确控制。该模型不仅有助于深化对PMSM控制机理的理解,也为高性能电机驱动系统的算法开发与工程化应用提供了可靠的仿真验证平台。; 适合人群:具备自动控制原理、电机学基础及Simulink仿真能力的电气工程、自动化、新能源等相关专业的高年级本科生、研究生以及从事电机驱动开发的初级科研人员与工程师。; 使用场景及目标:①作为高校课程设计、毕业设计或科研项目中PMSM控制系统的学习案例,用于掌握矢量控制算法的实现流程与模块化设计方法;②帮助研究人员理解各控制环节间的耦合关系,通过调整PI参数优化系统性能,并为进一步研究无传感器控制、弱磁扩速、先进非线性控制策略等高级课题奠定基础; 阅读建议:建议结合经典电机控制教材同步学习,重点剖析各功能模块的信号流向与数学原理,亲自动手搭建仿真模型,通过改变运行条件和控制器参数观察系统响应变化,从而深入掌握矢量控制系统的动态特性和调试技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值