编程环境:IDEA,Tomcat,JavaEE

一、实例二登录

1、在自己建的工程下的web目录下建一个文件夹为login,在login中编写登录代码(其实就是和实例一同一个项目)

2、先建登录页面jsp文件login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="check.jsp" method="post">
用户名: <input type="text" name="uname" ><br/>
密码: <input type="password" name="upwd"><br/>
<input type="submit" value="登录"><br/>
</form>
</body>
</html>

校验check.jsp页面代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>校验登录</title>
</head>
<body>
<form>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("uname");
String password=request.getParameter("upwd");
if(name.equals("zz")&&password.equals("1111")){
//页面跳转方式一,重定向,数据会丢失
//response.sendRedirect("success.jsp");
//页面跳转方式二,请求转发,数据不会丢失
request.getRequestDispatcher("success.jsp").forward(request,response);
}else{
out.println("登录失败,用户名或者密码有误");
}
%>
</form>
</body>
</html>

登录成功页面success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String name=request.getParameter("uname");
%>
成功登录
欢迎您: <br/>
<%=name%> <br/> </body>
</html>

3、运行结果

在check.jsp 中有两种跳转方式:(1)请求转发request.getRequestDispatcher(2)重定向response.sendRedirect("xxx.jsp")

在重定向中调用的是response类

4、response---内置对象,响应对象

常见方法:(1)void addCookie(Cookie cookie)服务端向客户端增加cookie对象(2)void sendRedirect(String location)throws IOException 重定向页面跳转(3)void setContextType(String type)设置服务端响应编码

5、请求转发request.getRequestDispatcher和重定向response.sendRedirect("xxx.jsp")的区别(这个知识挺重要的,我觉得)

(1)相同点:都是改变客户端的请求方向

(2)不同点:

  请求转发 重定向
地址栏是否改变 不改变

改变

是否保存第一次请求时数据 保留 不保留
请求次数 1 2
跳转发生位置 服务端 客户端(发出二次请求)

对于这些不同点,我画个图来解释(请忽略我的渣画技。。)

根据上述图可以看到请求转发是服务端内部将响应客户端的对象指针改变了,而重定向是响应告诉客户端他应该向别的对象请求,然后客户端再一次请求。

补充一点:是否保存第一次请求时数据中数据指的是客户端第一次请求时保存在request中的请求信息,请求转发时,仍然会携带该信息,重定向则不会。

学习jsp篇:jsp简单实例之二登录的更多相关文章

  1. (Hibernate进阶)Hibernate搭建开发环境+简单实例(二)

    hibernate是非常典型的持久层框架,持久化的思想是非常值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hibernate,不深究Hibernate的思想和原理,否则,一味追求,苦学思想和 ...

  2. 自动化测试基础篇--Selenium简单的163邮箱登录实例

    摘自https://www.cnblogs.com/sanzangTst/p/7472556.html 前面几篇内容一直讲解Selenium Python的基本使用方法.学习了什么是selenium: ...

  3. 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二)

    Hibernate是很典型的持久层框架,持久化的思想是很值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hibernate,不深究Hibernate的思想和原理,否则,一味追求,苦学思想和原理 ...

  4. IoC容器Autofac正篇之简单实例

    先上一段代码. namespace ConsoleApplication3 { class Program { static void Main(string[] args) { ContainerB ...

  5. IoC容器Autofac正篇之简单实例(四)

    先上一段代码. namespace ConsoleApplication3 { class Program { static void Main(string[] args) { ContainerB ...

  6. JAVA遇见HTML——JSP篇:JSP内置对象(上)

    JSP九大内置对象 JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象. <% int[] value={60,70,80}; for(int i:value){ o ...

  7. SharePoint 2010 BCS - 简单实例(二)外部列表创建

    博客地址 http://blog.csdn.net/foxdave 接上篇 由于图片稍多篇幅过长影响阅读,所以分段来写. 添加完数据源之后,我们需要为我们要放到SharePoint上的数据表定义操作, ...

  8. backBone.js之Model篇 (1) 简单实例

    “Model是js应用的核心,包括基础的数据以及围绕着这些数据的逻辑:数据转换.验证.属性计算和访问控制”. 一.初始化方法 我们先来看一个demo,initialize,这是一个初始化方法,但是写这 ...

  9. vue mock(模拟后台数据) +axios 简单实例(二)

    需装上axios,build文件夹中webpack.dev.conf.js文件添加上vue mock配置的东东,  如,继(一) //组件<template> <div> &l ...

随机推荐

  1. django 修改模型中默认字段类型

    在ADMIN页面实现一个密码框,模型中是CharField默认类型是textinput,实现方法是在admin.py中重写widgets. 来自为知笔记(Wiz)

  2. Selenium_使用switch_to.alert处理弹窗(14)

    与switch_to.window 和 switch_to.frame 相比,switch_to.alert的alert方法使用了@property 装饰器,所以在使用时alert被当成属性调用. 演 ...

  3. C# 使用vs2017 创建类 时 注意点

    1.创建新类后,在其他类无法new 这个新创建的类 ,怎么回事? 原因很简单,创建类时不带修饰符,默认是被保护的类 上图为创建类后的默认代码 ,没有修饰符 ,在其他类中无法引入改类的命名空间,会显示找 ...

  4. 华为云 Kubernetes 管理员实训 四 课后作业

    练习一 创建一个Service和一个Pod作为其后端.通过kubectl describe获得该Service和对应Endpoints的信息. Service的名称为<hwcka-004-1-s ...

  5. POJ2891Strange Way to Express Integers

    http://poj.org/problem?id=2891 实际上就是一个一元线性同余方程组.按照合并的方式来解即可. 有一个注意点,调用函数是会慢的. #include<iostream&g ...

  6. 关于APP设计规范和一些图层命名

    首先,本人大学计算机专业出身,学过编程,工作的时候做过 产品经理,设计师,前端工程师,对工作的流程都有一些见解. 现在主攻前端工程师,做Web APP.今天收到设计师的设计稿,一看图层分类,这让我感觉 ...

  7. python多环境管理一(venv与virtualenv)

    一.背景 我们经常会遇见这样的场景: 1.各个项目使用的python版本不相同 由于Python的解释器版本众多,各版本之间差异非常大.特别是python2和python3,互不兼容. 有些项目可能用 ...

  8. 记一次异步处理导致Jetty Request对象泄漏

    最近排查一个bug,发现了一系列有意思的东西,对「自定义线程池」.「Jetty线程模型」都有了一些新的认识. 本文预计阅读时间10分钟,包括: 问题表现 常见原因筛查 根因与源码分析 最佳实践 一些小 ...

  9. spring 事务失效的几种场景

    以下场景是基于mysql数据库,InnoDB的存储引擎. 一.没有添加@Transactional注解 二.方法声明是private或者static 三.没有抛出异常而是try catch了异常 下面 ...

  10. Cesium中文网的朋友们

    目前已开通知识星球-Cesium中文网的朋友们 注意:仔细思量好再进来,一旦付费,概不退费.下述内容均尽力而为. 1. 每月一次技术交流(Cesium为主),提供源码. 2. 每人5次/周免费提问(C ...