在java中如何限制后台只能指定某些电脑登录

javaweb中如果用户没有登录,不能访问别的页面,只能访问登录页面
需要用拦截器,先写一个拦截器的工具类!
package rihong.send.
import java.io.IOE
import javax.servlet.F
import javax.servlet.FilterC
import javax.servlet.FilterC
import javax.servlet.ServletE
import javax.servlet.ServletR
import javax.servlet.ServletR
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpS
* 拦截器,查看用户是否登录过,未登录禁止访问页面
: zhangshulong&br&
: sendFood Maven Webapp&br&
public class AuthFilter implements Filter {
public void destroy() {
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
* 1,doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括*
* 表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过*
* 滤器中忽略此参数。最后一个参数为FilterChain,此参数用来调用servlet或JSP页。
HttpServletRequest request = (HttpServletRequest) servletR
* 如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中*
* 无法得到的方法,就要把此request对象构造成HttpServletRequest
HttpServletResponse response = (HttpServletResponse) servletR
String currentURL = request.getRequestURI();
// 取得根目录所对应的绝对路径:
String targetURL = currentURL.substring(currentURL.indexOf("/", 1),
currentURL.length());
// 截取到当前文件名用于比较
HttpSession session = request.getSession(false);
if (!"/login.jsp".equals(targetURL)) {// 判断当前页是否是重定向以后的登录页面页面,如果是就不做session的判断,防止出现死循环
if (session == null || session.getAttribute("user") == null) {
// *用户登录以后需手动添加session
System.out.println("request.getContextPath()="
+ request.getContextPath());
response.sendRedirect(request.getContextPath() + "/WEB-INF/login.jsp");
// 如果session为空表示用户没有登录就重定向到login.jsp页面
// 加入filter链继续向下执行
filterChain.doFilter(request, response);
* 调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作* 为它
* 的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另*
* 一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。
public void init(FilterConfig filterConfig) throws ServletException {
}然后是配置文件,web.xml用来配置拦截器
&!-- 检查用户是否登录过的web.xml配置 --&
&filter-name&AuthFilter&/filter-name&
&filter-class&rihong.send.util.AuthFilter&/filter-class&
&filter-mapping&
&filter-name&AuthFilter&/filter-name&
&url-pattern&*.jsp&/url-pattern&
&/filter-mapping&
如此就可以实现,当用户没有登录时,无论地址输入的是什么,都自动跳转到指定页面
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Java web 怎样限制同一个ip地址访问网页查询次数,每天只允许一个IP查询一次,怎么实现?_百度知道
Java web 怎样限制同一个ip地址访问网页查询次数,每天只允许一个IP查询一次,怎么实现?
我想的的是获取客户IP 和访问时间,存到hashmap中,查询前,判断IP在map中是否存在,若存在,提示访问次数过量,若没有,正常查询。每隔24小时自动清空一下map,可代码怎么写?若有更好的办法,或源码,给我留一个,谢谢
不安我的想法写也行,只要能实现,我就采纳!!!!!在线急等!
我有更好的答案
用你这种方式也可以实现,但是不能100%控制,因为代理服务器什么的可以隐藏IP不过可以控制绝大多数的人吧用Map去记录IP的话,如果访问量很大,后台服务器内存也会加大,建议用数据库去记录写个拦截器或者过虑器,访问的时候获取客户端IP存到数据库,之后只需要查一下数据库就可以了数据库可以写个Job,24小时执行一次,清除24小时以前的数据即可实现你的需求了.很简单的
有代码吗?我小白
你就用map呗,外加一个java的定时器,实在不行留下Q吧,我帮你远程一下.
为啥不把 客户IP 和访问时间
访问次数放到数据库不更加方便
读ip是不行的吧,ip是可以变动的,你得读mac地址
我知道,不管IP还是MAC 给我个可行的代码吧?
获取并保存IP,每次查询前,遍历IP,若相等,跳过查询,提示次数受限!
本回答被提问者采纳
需要考虑集群环境,在集群环境下单节点应用压根控制不住,有两种思路:1、在DB 中设置常量,访问后加1操作,但是定时恢复是个问题。2、引入第三方工具,例如redis.
2条折叠回答
为您推荐:
其他类似问题
ip查询的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java中如何限制一个账号多人使用_百度知道
java中如何限制一个账号多人使用
我有更好的答案
如果用户正常点退出,把lastOnlineTime设置为0即可, 而且用户长时间不操作,到了session-timeout也会自然退出,你可以在sessionlistener捕捉到timeou并设置lastOnlineTime=0。 BS架构的本身的性质就决定了无法判断用户是否实时在线,就只能假设“在一定时间内,如果用户没任何操作,即视作用户离线” 这个刚好跟某些CS的程序相反,CS一旦连接上,就时刻保持连接,服务器为了释放资源或安全考虑,只能假设“在一定时间内,用户没有其他操作,即强制连接断开”。
采纳率:95%
来自团队:
java监听器listener可以实现单态登录
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。增进学习,互相切磋
java后台可能遇到的问题
误区:不知道向前端返回json数据的时候,是怎么做到的。
然后把需要的数据装在List中
SeatService service = new SeatService();
List&Seat& list = service.GetAllSeat();
String seatList = JsonUtils.toJson(list);
response.getWriter().write(seatList);
这样就可以返回json数据了
前端使用的是h5开发,我们在开发中使用的ip地址是不一样的,因此对于他来说,是跨域访问,要使用jsonp通过jsonpcallback来回调后台的数据,所以我们返回的时候要这样返回数据
String jsonp=request.getParameter("jsonpcallback");
String json = "[{\"State\":\"000001\"}]";
String ret = jsonp+"("+json+")";
如果不用跨域访问的话,那么只需
String json = "[{\"State\":\"000000\"}]";
response.getWriter().print(json);
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!javaweb后台管理系统如何实现在一个页面中,通过固定的div中的按钮去访_百度知道
javaweb后台管理系统如何实现在一个页面中,通过固定的div中的按钮去访
javaweb后台管理系统如何实现在一个页面中,通过固定的div中的按钮去访问另一个,能够显示数据的div。就像邮箱那样,是通过ajax吗?
我有更好的答案
深圳远标有这样的解答:1、与C++/c 相比,java的编程风格与他们极其相似,但是他没有与C++的类似的指针,运算符重载,多重继承等特性。取而代之的是引用,接口等特性。2、垃圾回收器用来回收不再使用的内存空间。1.5版本之后, Generic Programming、类型安全的枚举、不定长参数和自动装/拆箱等语言特性被引进。3、Java执行代码是靠安装在不同平台的虚拟机,在执行之前,这些代码编译成二进制字节码。这个特性的好处是编译一次后,可以多处执行。每次编译都需要耗费时间,因此java的效率降低了,不过在1.4.2版本之后,效率明显提高。
采纳率:64%
。。。你这个
ajax肯定可以啊 异步效果好点
不用也可以啊
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

 

随机推荐