精华内容
下载资源
问答
  • JavaWeb登陆成功后跳转到上一个页面

    万次阅读 2015-10-07 15:10:23
    JavaWeb登陆成功后跳转到上一个页面,这个标题注定要词不达意,你可能会遇到这样的情形,当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面;还有一种情况,多个页面...

    JavaWeb登陆成功后跳转到上一个页面,这个标题注定要词不达意,你可能会遇到这样的情形,当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面;还有一种情况,多个页面都有登录按钮,登录成功后需要刷新对应的登录信息。

    图文并茂

    1.场景1

    这里写图片描述

    这里写图片描述

    这里写图片描述

    2.场景2

    这里写图片描述

    这里写图片描述

    这里写图片描述

    代码实现

    场景1的代码这次重点说明以下,场景2的代码可以参照本系列其他文章再谈ajax局部刷新

    全局拦截器

    public class LoginInterceptor implements Interceptor {
    	private static Logger logger = Logger.getLogger(LoginInterceptor.class);
    
    	@Override
    	public void intercept(Invocation inv) {
    		BaseController controller = (BaseController) inv.getController();
    		String lastRequestURL = controller.getRequest().getRequestURL().toString();
    
    		logger.info("请求地址:" + lastRequestURL);
    
    		Members loginMem = controller.getSessionAttr("username");
    
    		// 用户如果没有登录,那么就跳转到登录页面
    		if (loginMem == null || loginMem.equals("")) {
    
    			try {
    				controller.redirect("/mem/initLogin?forwardURL=" + URLEncoder.encode(lastRequestURL, "UTF-8"));
    			} catch (UnsupportedEncodingException e) {
    				logger.error(e.getMessage());
    			}
    
    		} else {
    			inv.invoke();
    		}
    	}
    }
    

    注意:

    1. 全局拦截器可参照jfinal官方文档添加到config类中。
    2. 如果用户没有登录,则跳转到登录页,并且将当前的url路径作为参数传递给form表单,至于form表单怎么获取,请看下个小节。

    登录页

    <form class="pop_login_form" action="${ctx}/mem/login?callbackType=forward" method="post"
    			οnsubmit="return validateCallback(this, ajaxDone)">
    

    注意:

    1. action中增加callbackType=forward;
    2. onsubmit中callback函数ajaxDone;
    3. validateCallback函数中将上个小节中传递的参数进行添加;
    4. 其余的可参照再谈ajax局部刷新
    function validateCallback(form, callback, confirmMsg) {
    	var $form = $(form);
    
    	if (!$form.valid()) {
    		return false;
    	}
    
    	var _submitFn = function() {
    		$.ajax({
    			type : form.method || 'POST',
    			url : addForwardForUrl($form.attr("action")),
    			data : $form.serializeArray(),
    			dataType : "json",
    			cache : false,
    			success : callback || YUNM.ajaxDone,
    			error : YUNM.ajaxError
    		});
    	}
    
    	if (confirmMsg) {
    		$.showConfirm(confirmMsg, {
    			okCall : _submitFn
    		});
    	} else {
    		_submitFn();
    	}
    
    	return false;
    }
    
    function addForwardForUrl(url) {
    	var locationURL = location.href;
    	// URL中附带了跳转路径
    	var forwardIndex = locationURL.indexOf("forwardURL");
    	if (forwardIndex != -1) {
    		var forwardURL = locationURL.substring(forwardIndex);
    
    		// 说明已经有了跳转路径
    		if (url.indexOf("?") != -1) {
    			url += "&" + forwardURL;
    		} else {
    			url += "?" + forwardURL;
    		}
    	}
    	return url;
    }
    

    注意:

    1. 如此之前拦截器中提供的url就可以作为参数传递给form的提交请求中。

    login函数

    @Clear({LoginInterceptor.class})
    	public void login() throws UnsupportedEncodingException {
    		logger.info("进行会员登录操作...");
    
    		// 获取用户名
    		String name = getPara("username");
    		// 获取密码
    		String password = getPara("password");
    
    		Members mem = Members.me.getMemByUsername(name);
    
    		if (mem != null) {// 用户不存在
    			// 密码不匹配
    			if (!mem.getStr("password").equals(CipherUtils.generatePassword(password))) {
    				ajaxDoneError("密码不正确!");
    			} else {
    				// 保存session
    				setSessionAttr("username", mem);
    				
    				String forwardURL = getPara("forwardURL");
    				
    				if (forwardURL == null || forwardURL.equals("")) {
    					forwardURL = "/";
    				} else {
    					forwardURL = URLDecoder.decode(forwardURL, "UTF-8");
    				}
    
    				ajaxDoneSuccess("登录成功!", forwardURL);
    			}
    
    		} else {
    			ajaxDoneError("用户不存在!");
    		}
    	}
    
    1. login函数中,将forwardurl取出来,作为**登录页**中的callback函数的参数值; 2. 具体ajaxDoneSuccess方法可以参照以下内容
    public void ajaxDoneSuccess(String message, String forwardURL) {
    		ajaxDone(200, message, forwardURL);
    	}
    protected void ajaxDone(int statusCode, String message, String forwardURL) {
    	// 回调类型
    		if (getAttr("callbackType") == null) {
    			String callbackType = getPara("callbackType");
    			if (callbackType != null && !callbackType.equals("")) {
    				setAttr("callbackType", callbackType);
    
    				if (callbackType.equals("forward") || callbackType.equals("closeCurrentThenForward")) {
    					String contextPath = getRequest().getContextPath();
    					
    					if (forwardURL.indexOf(contextPath) == -1) {
    						forwardURL = contextPath + forwardURL;
    					}
    					
    					setAttr("forwardURL", forwardURL);
    				}
    			}
    		}
    
    		renderJson();
    }	
    
    如果有callbacktype参数,则将forwardurl作为json数据传递到前端的ajaxdone方法中。

    ajaxDone方法

    function ajaxDone(json) {
    	YUNM.ajaxDone(json);
    	if (json[YUNM.keys.statusCode] == YUNM.statusCode.ok || json[YUNM.keys.statusCode] == YUNM.statusCode.info) {
    if ("forward" == json.callbackType) {
    			if (json.forwardURL) {
    				location.href = json.forwardURL;
    			}
    }
    

    跳转到上一个页面。


    1. 当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面 ↩︎

    2. 还有一种情况,多个页面都有登录按钮,登录成功后需要返回到上一个界面。 ↩︎

    展开全文
  • 默认登陆成功后跳转的是刚才访问的页面(也就是登陆页面),其次才是/ 你们可以实现一个类继承至FormAuthenticationFilter,跟着这个类,一点一点去查即可 我先说一下网上的解决办法 这是我按照网上的写法实现的 ...

    1.如果查看shiro源码可以发现,这里确实是一个坑

    默认登陆成功后跳转的是刚才访问的页面(也就是登陆页面),其次才是/

    你们可以实现一个类继承至FormAuthenticationFilter,跟着这个类,一点一点去查即可

    我先说一下网上的解决办法

    这是我按照网上的写法实现的

    package com.read.data.Config;
    
    import org.apache.shiro.authc.AuthenticationToken;
    import org.apache.shiro.subject.Subject;
    import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
    import org.apache.shiro.web.util.WebUtils;
    
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    /**
     * @author: tianyong
     * @Time: 2018/8/15 11:36
     * @description:shiro过滤器类
     */
    public class ShiroFilter extends FormAuthenticationFilter {
    
        /**
          * @author: tianyong
          * @time: 2018/8/15 11:42
          * @description:重写原认证成功后链接跳转方法
          */
        @Override
        protected void issueSuccessRedirect(ServletRequest request, ServletResponse response) throws Exception {
            WebUtils.issueRedirect(request, response,getSuccessUrl(), null, true);
        }
    }

    然后呢,方法的切入,现在网上的教程一般都是使用配置文件,我这里是使用的spring4

    //自定义过滤器注入
    //        Map<String, Filter> map = new HashMap<>();
    //        ShiroFilter shiroFilter = new ShiroFilter();
    //        map.put("authc",new ShiroFilter());
    //        shiroFilterFactoryBean.setFilters(map);

    这个我是在shiroFilter,方法拦截器里面添加的,主要的应该就是最后一句的注入

    采用上面的这个方法,我只有在打断点的情况下,才好使。

    后来呢,我是直接在登陆的controller层做重定向控制实现的避免了这个问题

    展开全文
  •  2,java代码核心(api如何调用) 通过以下代码段,可以看到我们得到了String类型的 token字符串,得到字符串之后,如何登陆页面直接访问报表呢?答案是:直接通过url拼接的方式即可。 /*...

    sap bo端提供了一些api,供java调用,供第三方java应用跳过登陆等。这篇文章详细讲解如何书写代码。主要分为以下3步。

    1,引入的jar包主要有2个。如下图红框中所示。

      

    2,java代码核心(api如何调用)

    通过以下代码段,可以看到我们得到了String类型的 token字符串,得到字符串之后,如何跳过登陆页面直接访问报表呢?答案是:直接通过url拼接的方式即可。

            /**
    	 * 封装登陆逻辑,获取token;
    	 * @throws SDKException 
    	 * 如果服务器及网络均正常,那么这个问题很可能是由于未配置系统IP地址解析。可修改本机的Hosts文件修复该问题.
    	 */
    	@SuppressWarnings("deprecation")
    	public static String getWcaToken(HttpServletRequest request) throws SDKException{
    		String wcaToken = "";
    		HttpSession session = request.getSession();
    		ISessionMgr sessionMgr;
    		IEnterpriseSession entsession = (IEnterpriseSession) request.getSession().getAttribute("boesession");
    		if (entsession == null) {
    			sessionMgr = CrystalEnterprise.getSessionMgr();
    			//以下userName,password需要改为自己bo登录页面的用户名和密码,ip也要修改为bo所在服务器的ip;
    			String userName="???",passWord="???",ip="138.6.4.170";
    			entsession = sessionMgr.logon(userName, passWord,ip+":6400", "secEnterprise");
    			session.setAttribute("boesession", entsession);
    		}
    		request.getSession().setAttribute("boesession", entsession);
    		/* 其中createLogonToken(java.lang.String clientComputerName, int validMinutes, int validNumOfLogons)
    		   clientComputerName为使用这个token的客户端计算机名,空字符串表示该token可被任何客户端使用;
    		   validMinutes为token的有效时间(分钟);
    		   validNumOfLogons 表示该token允许被使用的最大次数。*/		 
    		wcaToken = entsession.getLogonTokenMgr().createLogonToken("", 1000,1000);
    //		wcaToken = entsession.getLogonTokenMgr().createWCAToken("", 1000,1000);//既然提示过期的方法,就可能有问题  
    		return wcaToken;
    	}
    	
    3,拼接url(必须把token字符串拼接到url后面)

    例如系统最终拼成的url为:http://10.6.4.170:8080/BOE/OpenDocument/opendoc/openDocument.jsp?sIDType=CUID&sType=wid&iDocID=AQa.zJ7BBUBAolv5NdN3X2A&lsSP_DATE=20180415&token=BIPRD0:6400@129477Jg4Sy5pocBTNao8qOGGws6j129475J1JhLhH8z4qO7A6adlV4R1hONEOFF

    注:在自己测试的时候,可以直接把上面的url填入浏览器中访问。如果访问通过(也就是直接跳过登陆页面),即为成功。

    4,错误处理

    如果第三步成功跳过则可以忽略下面这一步。

    报错:尝试连接到服务器 10.6.4.170:6400 时出现通信错误 (FWM 01009)

    如果服务器及网络均正常,那么这个问题很可能是由于未配置系统IP地址解析。可修改本机的Hosts文件修复该问题,Hosts文件的地址一般为 %WinDir%\system32\drivers\etc\hosts,用记事本打开host文件。如果服务器IP地址为1.2.3.4,服务器主机名为MYSERVER01,则向文件添加以下内容即可

    1.2.3.4 MYSERVER01


    --over


       

    展开全文
  • 跳转到https://fighting.com:8443/cas/login?service=http%3A%2F%2Ffighting.com%3A8080%2FloginPlatformClient%2Fj_spring_cas_security_check输入账户和密码登陆成功 却跳转到 ... ... 配置如下: ...
  • 4.登录成功跳转到SuccessServlet展示:登录成功!用户名,欢迎您 5.登录失败跳转到FailServlet展示:登录失败,用户名或密码错误 二、逻辑分析 三、开发步骤 1.新建项目选择JavaEE项目,命名为Sign,注意勾选Web Appli

    一、用户登录案例需求:

    1.访问带有验证码的登录页面1ogin.jsp
    2.用户输入用户名,密码以及验证码。
    如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误
    *如果验证码输入有误,跳转登录页面,提示:验证码错误
    *如果全部输入正确,则跳转到主页success.jsp,显示:用户名,欢迎您

    二、逻辑分析

    在这里插入图片描述

    三、开发步骤

    1.新建项目选择JavaEE项目,命名为Sign,注意勾选Web Application,取消web.xml文件

    在这里插入图片描述

    2.部署Tomcat
    选择Local进行创建,命名为sign
    在这里插入图片描述
    配置Http port:8080,JMX port为1099
    在这里插入图片描述
    将其添加到deployment中:通过+号中的Artifact加入Sign项目,注意将虚拟目录(Appilication context)换成/sign
    在这里插入图片描述
    3.项目的目录结构
    在这里插入图片描述

    4.创建项目,导入html页面,配置文件, jar包

    在这里插入图片描述
    5.构造后台数据库和后台

    5.1导入druid要在src中设置配置文件druid.properties

    url=jdbc:mysql://localhost:3306/mydb3?useSSL=false
    driverClassName=com.mysql.jdbc.Driver
    username=root
    password=123456
    maxActive=10
    initialSize=6
    maxWait=60000
    

    5.2创建数据库环境,用来存放用户名和密码

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for user
    -- ----------------------------
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user`  (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
      `password` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of user
    -- ----------------------------
    INSERT INTO `user` VALUES (1, '陈七', '123456');
    INSERT INTO `user` VALUES (2, '李四', '123456');
    INSERT INTO `user` VALUES (3, '王五', '123456');
    
    SET FOREIGN_KEY_CHECKS = 1;
    

    5.3创建包cn.itcast.domain,在里面创建一个User类,用来封装用户名和密码

    public class User {
        private int id;
        private String username;
        private String password;
    
        public int getId() {
            return id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    '}';
        }
    }
    

    5.4 创建包cn.itcast.dao,在里面创建一个UserDao类,使用JDBCTemplate来操作数据库实现查询

    package cn.itcast.dao;
    
    import cn.itcast.domain.User;
    import cn.itcast.util.JDBCUtils;
    import org.springframework.dao.DataAccessException;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    
    import java.util.List;
    
    /*
    * 操作数据库中的User表中的类
    * */
    public class UserDao {
    
        //声明JDBCTemplate对象共用
        private JdbcTemplate template=new JdbcTemplate(JDBCUtils.getDataSource());
    
        /**
         *登录方法
         * @param loginUser 只有用户名和密码
         * @return user包含用户的全部数据,没有查询到数据,返回null
         */
        public User login(User loginUser){
            try {
                //编写sql
                String sql="select * from user where username=? and password=?";
                //调用query方法
                User query = template.queryForObject(sql,
                        new BeanPropertyRowMapper<User>(User.class));
                return query;
            } catch (DataAccessException e) {
                e.printStackTrace();//记录日志
                return null;
            }
        }
    }
    

    5.5 创建包cn.itcast.util,在里面创建一个JDBCUtils类,使用工具类连接数据库

    package cn.itcast.util;
    
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    
    import javax.sql.DataSource;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Properties;
    
    /**
     * JDBC工具类 使用Durid连接池
     */
    public class JDBCUtils {
        private static DataSource ds;
    
        static{
            try {
                //1.加载配置文件
                Properties pro=new Properties();
                //使用ClassLoader加载配置文件,获取字节输入流
                pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
                //2.初始化连接池对象
                ds= DruidDataSourceFactory.createDataSource(pro);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        /**
         *获取连接池对象
         */
        public static DataSource getDataSource(){
            return ds;
        }
        /**
         *获取连接Connection对象
         */
        public static Connection getConnection() throws SQLException {
            return ds.getConnection();
        }
    }
    
    5.6 创建包cn.itcast.test,在里面创建一个UserDao类的测试类进行测试,判断数据库是否异常
    package cn.itcast.test;
    
    import cn.itcast.dao.UserDao;
    import cn.itcast.domain.User;
    import org.junit.Test;
    
    public class UserDaoTest {
    
        @Test
        public void testlogin(){
            User user=new User();
            user.setUsername("李四");
            user.setPassword("123456");
            UserDao dao=new UserDao();
            User user1 = dao.login(user);
            System.out.println(user1);
        }
    }
    
    1. 新建Servlet类的CheckCodeServlet.java来实现验证码的图片
    package cn.itcast.servlet;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Random;
    
    
    @WebServlet("/checkCodeServlet")
    public class CheckCodeServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.创建对象,在内存中画图(验证码图片对象)
            int width=100;
            int height=50;
    
            BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
            //2.美化图片
            //2.1填充背景色
            Graphics g = image.getGraphics();//画笔对象
            g.setColor(Color.PINK);//设置画笔颜色
            g.fillRect(0,0,width,height);
    
            //2.2画边框
            g.setColor(Color.BLUE);
            g.drawRect(0,0,width-1,height-1);
    
            String str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
            Random ran=new Random();
            StringBuilder sb=new StringBuilder();
            int i=0;
            while(i<4){
                int index=ran.nextInt(str.length());
                //获取字符
                char c=str.charAt(index);//随机字符
                sb.append(c);
                //2.3写验证码
                g.drawString(c+"",20+i*20,25);
                i++;
            }
            String checkCode = sb.toString();
            //将验证码存入session
            request.getSession().setAttribute("checkCode_session",checkCode);
    
            i=0;
            //2.4画干扰线
            while (i<10) {
                g.setColor(Color.GREEN);
                int x1 = ran.nextInt(width);
                int x2 = ran.nextInt(width);
                int y1 = ran.nextInt(height);
                int y2 = ran.nextInt(height);
                g.drawLine(x1, x2, y1, y2);
                i++;
            }
            //3.将图片输出到页面展示
            ImageIO.write(image,"jpg",response.getOutputStream());
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request,response);
        }
    }
    
    1. 新建login.jsp来实现登录流程
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>login</title>
    </head>
    <script>
        window.onload=function () {
            var img=document.getElementById("checkCode");
            img.onclick=function () {
                var date=new Date().getTime();
                img.src="/day14/checkCodeServlet?"+date;
            }
        }
    </script>
    <style>
        div{
            color: red;
        }
    </style>
    <body>
        <form action="/day14/loginServlet" method="post">
            <table>
                <tr>
                    <td>用户名</td>
                    <td><input type="text" name="username"></td>
                </tr>
                <tr>
                    <td>密码</td>
                    <td><input type="password" name="password"></td>
                </tr>
                <tr>
                    <td>验证码</td>
                    <td><input type="text" name="checkCode"></td>
                </tr>
                <tr>
                    <td colspan="2"><img id="checkCode" src="/day14/checkCodeServlet"></td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" value="登录"></td>
                </tr>
            </table>
        </form>
    
        <div>
            <%=request.getAttribute("cc_error")==null?"":request.getAttribute("cc_error")%>
        </div>
        <div>
            <%=request.getAttribute("login_error")==null?"":request.getAttribute("login_error")%>
        </div>
    </body>
    </html>
    
    

    8.新建LoginServlet.java来对登录信息及验证码进行验证

    package cn.itcast.servlet;
    
    import cn.itcast.dao.UserDao;
    import cn.itcast.domain.User;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    
    @WebServlet("/loginServlet")
    public class LoginServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.设置request编码
            request.setCharacterEncoding("utf-8");
            //2.获取参数
            String username=request.getParameter("username");
            String password=request.getParameter("password");
            String checkCode=request.getParameter("checkCode");
            //2.1创建User对象
            User loginuser = new User();
            //2.2对对象内容赋值
            loginuser.setUsername(username);
            loginuser.setPassword(password);
            //3.判断验证码是否正确
            HttpSession session = request.getSession();
            String checkCode_session = (String) session.getAttribute("checkCode_session");
            //删除session中存储的验证码,反正回退以后验证码不刷新
            session.removeAttribute("checkCode_session");
            if(checkCode_session.equalsIgnoreCase(checkCode)){
                //忽略大小写,判断用户名和密码是否一致
                //调用UserDao的login方法
                UserDao userDao=new UserDao();
                User user = userDao.login(loginuser);
                if(user!=null){
                    //登录成功
                    //存储信息,用户信息
                    session.setAttribute("user",username);
                    //重定向到success.jsp
                    response.sendRedirect(request.getContextPath()+"/success.jsp");
                }else{
                    //登录失败
                    request.setAttribute("login_error","用户名或密码错误");
                    //转发到登录页面
                    request.getRequestDispatcher("/login.jsp").forward(request,response);
                }
            }else{//验证码不一致,存储提示信息
                request.setAttribute("cc_error","验证码错误");
                //转发到登录页面
                request.getRequestDispatcher("/login.jsp").forward(request,response);
            }
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    

    9.新建Success.jsp来实现成功页面的用户名显示

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>success</title>
    </head>
    <body>
        <h1>
            <%=request.getSession().getAttribute("user")%>,欢迎你
        </h1>
    </body>
    </html>
    
    

    四、成果展示

    1.进入浏览器输入http://localhost:8080/day14/login.jsp,跳转到登录界面
    在这里插入图片描述

    2.输入验证码错误时(优先判断验证码,节省连接数据库时间)
    在这里插入图片描述

    3.输入验证码正确,但是用户名或密码与数据库不匹配

    在这里插入图片描述
    4.输入正确的用户名,密码以及验证码时,跳转到成功页面
    在这里插入图片描述

    展开全文
  • Android Studio 之登陆界面以及转登陆成功

    千次阅读 多人点赞 2018-12-02 15:31:51
    首先先说明下这只是一个简单的登陆界面,有转和返回的功能,并没有连接数据库,所以你不管输入什么都可以登陆成功 接下来我们先看一下布局代码 图片要自己找哦 &lt;?xml version="1.0" encoding=&...
  • 登陆成功后自动跳转页面

    千次阅读 2008-09-04 19:19:35
    登录成功,将立刻跳转到[主页面]
  • 点击登录按钮提交到一个处理登录的servlet 在servlet里面怎么让它到之前浏览的页面呢? 或者用JavaScript实现???
  • java登录跳转页面

    千次阅读 2020-12-07 18:54:52
    java登录跳转页面 java文件的编辑方式,任意文本加.java后缀即可,一个java文件只能有一个主类,用public调用,如果要打包成程序包,每个文件前先声明包命,如com.QQH,调试单个文件可以直接java *.java,也可先 ...
  • 登陆成功后返回前一个页面

    千次阅读 2016-01-22 15:40:35
    由于我自己一天到晚都要使用,而有时页面会放在那里一段时间,就常会遇到session过期后跳转到登陆界面进行登陆。但是登陆后是转向了一个默认界面,这样我每次都还在多一次点击才能来到目标页面。于是,我必须要解决...
  • 一开始用的这个 http .formLogin() .defaultSuccessUrl("/login/success") 后来改成了这个就好了 http.formLogin().successForwardUrl("/login/success") 找到的资料 ...
  • MVC+EF登陆 并跳转成功页面

    万次阅读 热门讨论 2015-08-29 21:02:55
    最近在做.net 的一个项目,我们的开发是基于MVC+... 和普通登陆一样,输入用户名和密码,为空判断,然后调用方法,和数据库信息进行对不,若相同,则登陆成功,把ID信息存到session或cookie中,其他页面直接验证sessi
  • 登录成功回到原来页面

    千次阅读 2017-05-22 14:02:31
    应用场景:一般网页游客和登录用户看到的内容是有区别的,如果一个未登录的用户在看到登录提示后跳转到登录界面登录,那么登录成功后怎么返回到该页面呢? 假设用户在 www.example.com/a.html 看到登录提示...
  • 转自:http://blog.csdn.net/qq_34614629/article/details/52760957(1)Filter实现一个登陆验证的功能...将登陆成功的用户名保存在session中,过滤器要做的就是在每一次跳转到jsp页面的请求时会进行过滤(因此在...
  • 如果只是实现这个功能的话,其实很简单,写一个filter专用类,在web.xml中配置Filter,过滤地址实现页面拦截 下面基础代码奉上 filter类 package com.tjzs.sccms.filter; /** * 配置url地址过滤 * @author ...
  • 修改版本cas-client-3.2.1和cas-server-3.5.2,功能使用maven构建引入cas的相关工程:cas-client-core、cas-server-core、cas-server-webapp通过自定义认证过滤器,添加登录页面路径处理。废话不多说了,直接上代码...
  • 我每次手动访问去NN网的一家酒店,就不需要登陆,一旦我用脚本打开就会让我登陆,而登陆页面又有验证码,不想识别验证码,所以就想:“通过cookies过验证码登陆页面,直接访问网站的其它URL” 转载虫师的文章:...
  • Java 集成域登陆

    2019-05-08 12:53:00
    1.JAVA中使用jcifs集成AD域用户认证 2. https://liaosy.iteye.com/blog/1887092 3.其他库 https://github.com/Waffle/waffle 4. https://blog.csdn.net/iteye_18086/article/details/82072793 5. ...
  • Javaweb---成功登陆后自动跳转jsp页面

    千次阅读 2017-12-02 14:50:57
    首先学习一些能实现自动转页面的方法,择需选择。 使用href超链接标记 客户端跳转 使用javascript 客户端跳转 提交表单 客户端跳转 使用response对象 客户端跳转 使用forward总做标记 服务器跳转
  • java如何使用session或cookie记录当前浏览网页的地址,并能在登陆后直接返回到该页面java如何使用session或cookie记录当前浏览网页的地址,并能在登陆后直接返回到该页面Java session Cookie 分享到: ...
  • 主要介绍了Java Web实现session过期后自动跳转到登陆页功能,涉及java过滤器针对session的判断与跳转相关操作技巧,需要的朋友可以参考下
  • Java-微信 第三方登陆流程+详细代码

    万次阅读 2021-01-21 09:36:01
    用户扫描二维码点击确认成功后,会跳转到本机127.0.0.1/wechat/callback接口,并且携带授权码Code //二维码扫描成功后,跳转到回调接口,并且携带授权码 @RequestMapping("/callback") public String callback...
  • * 主页面拦截,必须从登陆页面进入index */ public class LoginFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest servletRequest, Servlet...
  • JAVA直接跳转到HTML5页面

    千次阅读 2019-09-25 21:19:38
    package net.joystart.taskagent.controller; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.SignatureException; import java.text.SimpleDateFor...
  • 学习selenium的Cookie这一节,用了很多时间没有成功捕获登录信息实现自动登录,最后还是搜到了虫师的文章,详细讲了如何通过fiddler抓包工具获取baidu的cookie的重要参数信息。 参考文章:通过Cookie过登录验证码 ...
  • java web 不能异地登陆

    2017-08-11 10:10:30
    "您已成功登出!" );   }   });   });   });  这种做法确实能实现关闭浏览器实现用户退出的功能,不过通过查阅 jquery 手册,发现beforeunload事件监听的不仅仅是浏览器的...
  • 请确保每个用户每次打开页面时,token都是不同的。建议格式为”您的appkey”+”时间戳”+”随机数” 是 customWidth 滑动条的长度,建议预留300像素以上 否 trans 业务键字段。您可以不...
  • 重定向到登陆页面

    2020-04-04 22:33:05
    重定向(登陆页面) * 登陆页面重定向 * 状态码302 应头location * 需求:登陆页面,用户名和密码的登陆页面,用户名和密码都是admin, 如果有一个不是,重定向到登陆页面,重新登陆。 // 设置302的...
  • 微信授权登陆,授权获取code, 微信提供的snsapi_userinfo可以获取微信用户的信息,snsapi_base只能获取到openId; document.location.replace(‘https://open.weixin.qq.com/connect/oauth2/authorize?appid=’ + ...
  • 首先我们打开DevEco Studio,新建项目,选择wearable和Empty feature ability(java)如图所示->点击next 输入项目名称 我们在下一页中project name填hello->点击next 新建样式 在hello-entry-src-main-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,558
精华内容 3,423
关键字:

java登陆成功跳页面

java 订阅