JSP实现系统登录
计算机通过统一资源定位符实现资源访问,URL:Uriform Resource Locator
Tomcat服务器的目录结构
- /bin:存放各种平台下用于启动和停止Tomcat的脚本文件
- /conf:存放Tomcat服务器的各种配置文件
- /lib:存放Tomcat服务器所需要的各种JAR文件
- /logs:存放Tomcat的日志文件
- /temp:Tomcat运行时用于存放临时文件
- /webapps:当发布Web应用时,默认情况下会将Web应用的文件存放于此目录中
- /work:Tomcat把由JSP生成的Servlet放于此目录下
web应用的目录结构
- /:Web应用的根目录,该目录下所有文件在客户端都可以访问(JSP、HTML等)
- /WEB-INF:存放应用使用的各种资源,该目录及其子目录对客户端都是不可以访问
- /WEB-INF/classes:存放Web项目中所有的class文件
- /Web-INF/lib:存放Web项目使用的JAR文件
在Tomcat的运行过程中,首先加载classess目录下的class文件,再加载lib目录下的类。如果两个目录下存在同名的类,classes目录下的类具有优先权。
JSP(Java Server Pages)是运行在服务器端的Java页面,使用HTML嵌套Java代码实现。
其工作原理可以总结为:Java代码嵌入在JSP页面,然后JSP页面编译执行到服务器端,与服务器进行数据交互,然后返回页面信息到客户端。
Web容器处理JSP请求的三个阶段
- 翻译阶段:生成Java文件
- 编译阶段:生成class文件
- 执行阶段
当二次请求页面时,Web容器会直接执行上次编译好的字节码文件,而不会重复编译。
JSP中的page指令
- 通过设置内部的多个属性定义整个页面的属性
- 语法:
<%@page 属性1=“属性值” 属性2=“属性值1,属性值2”...属性值n=“属性值n”%>
- 实例
%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
常用属性
- language:指定JSP页面使用的脚本语言,默认值为java
- import:通过该属性来引用脚本语言使用到的类文件,没有默认值
- contentType:用来指定JSP页面所采用的编码方式,默认值为text/html,ISO-8859-1
JSP中的小脚本和表达式
小脚本语法:<% 代码 %>
表达式语法:<%= 代码 %
小脚本实例:
<%
//嵌套的是java代码
int sum=10+20;
//输出到控制台
System.out.println("sum="+sum);
//输出到页面 out内置对象
out.println("sum="+sum);
%>
其中,System.out.println()为输出到控制台,out.println()为输出到页面
表达式实例:
<%=sum %>
此例sum的值为30,表达式输出的值为30。
输出当前日期的小脚本和表达式实例:
<%
SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日");
String time=format.format(new Date());
%>
<br/>
<!-- 输出当前时间 -->
<%=time %>
在上例中,simpleDateFormat方法对日期进行格式化,使其格式成为yyyy年MM月dd日。
JSP页面中定义方法
语法:
<%! Java代码%>
与小脚本不同的是多了一个感叹号。
小实例:编写jsp页面,计算1-100之间的所有偶数之和
<%
int oushusum=0;
for(int a=0;a<=100;a=a+2){
oushusum=a+oushusum;
}
%><br>
<%="1-100偶数的和:"+oushusum %>
对以上“输出当前时间”的页面进行改进,使格式化时间的代码封装到一个方法中。如下:
<%!
public String formatDate(Date d){
SimpleDateFormat fma=new SimpleDateFormat("yyyy-MM-dd");
return fma.format(d);
}
%>
<%=formatDate(new Date())%>
当方法有返回值的时候,可以使用表达式进行输出,当方法没有返回值时,可以用小脚本进行直接调用。方法声明以后,可以在页面中进行多处调用。
注释
页面中HTML代码的注释是可以在客户端看到的,而JSP注释在客户端不可见。
<!--客户端可以查看到-->
<%--客户端不能查看到--%>
JSP内置对象
JSP内置对象是Web容器创建的一组对象,比如out对象,没有出现new关键字,但可以使用。
<%
int[] value={56,65,45,65};
for(int i:value){
out.println(i);
}
%>
常用的JSP内置对象
out、request、response、session、application、pageContext(页面上下文对象)、config(配置对象)、page(页面对象)、exception(异常对象)
- out对象
out对象是JSP的内置对象,无需实例化就可以使用,可以实现数据的输出显示。其方法有:print(向页面输出显示),println(向页面输出显示,在结尾处添加换行)
- request对象
request对象主要用于处理客户端的请求
常用的方法
- String getParameter(String name):根据表单组件名称获取提交数据
- String[] getParameterValues(String name):获取表单组件对应多个值时的请求数据
- void setCharacterEncoding(String charset):指定每个请求的编码
- RequestDispatchergetRequestDispatcher(String path):返回一个RequestDispatcher对象,该对象的forward()方法用于转发请求
实例:
获取用户表单用户提交的信息(用户名、密码、多选框的值),用到的方法:String getParameter(String name),String[] getParameterValues(String name)
//获得用户名
String username=request.getParameter("username");
//获得密码
String pwd=request.getParameter("password");
//获得爱好
String[] hobbys=request.getParameterValues("hobby");
乱码处理
无论使用get方法或post方法传值,值为中文,页面都会产生乱码。get方法乱码的处理方法之一是修改tomcat服务器的配置文件。路径为:Tomcat目录结构\conf\server.xml,追加URLEncoding="UTF-8"。见下方代码块:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
post方法乱码的处理方式之一是在处理表单的java代码最前面,增添以下代码,指定为UTF-8。
request.setCharacterEncoding("UTF-8");
使用属性保存数据
语法
request.setAttribute(String name, Object obj);
其中,name为属性名称,obj为属性的值,实例:
request.setAttribute("name", username);
从属性中读取数据
语法
request.getAttribute(String name);
其中,name为属性名称,实例:
request.getAttribute("name");
使用属性存取数据时,要确保数据在保存时必须是Object类型,而在取出时还要转换为原先自己的类型。
- response对象
response对象用于响应客户请求并向客户端输出信息
常用的方法
- void sendRedirect(String localtion):将请求重新定位到一个不同的URL,即页面重定向
实例:
response.sendRedirect("login.jsp");
页面转发
利用转发可以携带信息到其他页面,在登录案例中,利用页面转发可以实现在登录成功页面输出相关信息。
语法
request.getRequestDispatcher(到达的页面地址).forward(request, response);
实例
request.getRequestDispatcher("success.jsp").forward(request, response);
转发与重定向的比较
转发:Web服务器调用内部方法实现请求处理,在同一个Web应用中,共享request请求数据。
重定向:Web服务器返回一个响应后,浏览器再次发送一个新的请求,重定向后数据无法共享。
转发:服务器端发挥作用,通过forward()方法在多个页面间传递数据。
重定向:在客户端发挥作用,通过新的请求完成页面跳转。
转发:内部控制的转移,地址栏不会发生变化。
重定向:新的请求导致地址栏会发生变化。
JSP实现系统登录的更多相关文章
- 使用JSP实现用户登录
本文讲述使用JSP实现用户登录,包括用户登录.注册和退出功能等. 1.系统用例图 2.页面流程图 3.数据库设计 本例使用oracle数据库 创建用户表 包括id,username,password和 ...
- Java中SSM+Shiro系统登录验证码的实现方法
1.验证码生成类: import java.util.Random; import java.awt.image.BufferedImage; import java.awt.Graphics; im ...
- $.post系统登录校验
AJAX方式:$.post系统登录校验 https://blog.csdn.net/woshisangsang/article/details/66560238?utm_source=blogxgwz ...
- 苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转
昨天下午,测试提了一个bug,问题是:在苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转. 思前想后找了半天没思路,后来经过同事的点拨,说可能是禁用了cookie之类的,反正我也没思路就顺 ...
- 从其它系统登录到SharePoint 2010系统的单点登录
以前做的只是使用SharePoint的单一登录,用SharePoint去登录其他的系统,现在要反过来,用Form认证的系统来登录SharePoint. 我们都知道,SharePoint使用的是域认证系 ...
- Winform开发框架之权限管理系统改进的经验总结(3)-系统登录黑白名单的实现
在一般的权限系统里面,可能经常会看到系统的黑名单或者白名单的拦截功能.在一般权限系统里面,常见的黑名单就是禁止用户在某些IP上登录系统,白名单就是允许用户只在某些IP上登录系统.本随笔主要介绍在我的权 ...
- VB.NET版机房收费系统---七仙女之系统登录
VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...
- 服务器windows2008系统登录报错:由于远程桌面服务当前正忙,因此无法完成您尝试的任务。请在...
1.问题描述:windows server 2008服务器通过远程桌面登录时很慢,登录不进去,把远程桌面关掉后,再用远程桌面登录时,出现下图提示. 把服务器接上显示器键盘鼠标后,卡在系统登录的欢迎界面 ...
- 单系统登录机制SSO
一.单系统登录机制 1.http无状态协议 web应用采用browser/server架构,http作为通信协议.http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关 ...
随机推荐
- golang常用的http请求操作
之前用python写各种网络请求的时候写的非常顺手,但是当打算用golang写的时候才发现相对来说还是python的那种方式用的更加顺手,习惯golang的用法之后也就差别不大了,下面主要整理了常用的 ...
- 「雕爷学编程」Arduino动手做(9)——火焰传感器模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- LeetCode_62_不同路径
/** * @author jianw.li * @date 2019/1/22 11:11 PM * @Description: 不同路径 * 一个机器人位于一个 m x n 网格的左上角 (起始点 ...
- GoAccess 分析 Nginx 日志
0x00 事件 帮助朋友搭建了博客,运行过了一段时间,准备发个网站分析报告给他. 有效的数据只有 Nginx 的访问日志,于是使用决定 GoAccess 工具对这个日志进行分析, 0x01 安装 吾使 ...
- 【数据结构】线段树(Segment Tree)
假设我们现在拿到了一个非常大的数组,对于这个数组里面的数字要反复不断地做两个操作. 1.(query)随机在这个数组中选一个区间,求出这个区间所有数的和. 2.(update)不断地随机修改这个数组中 ...
- https理论及实践
什么是https协议? http协议以明文的方式在网络中传输,安全性难以保证,https在http协议的基础上加入SSL/TLS层.TLS是SSL协议的最新版本,SSL使用SSL数字证书在通信两端建立 ...
- Yii2 登录Model
<?php namespace app\models; use Yii; class User extends \yii\db\ActiveRecord implements \yii\web\ ...
- 通过Blazor使用C#开发SPA单页面应用程序(4) - Ant Design Button
前面学习了Blazor的特点.环境搭建及基础知识,现在我们尝试的做个实际的组件. Ant Design是蚂蚁金服是基于Ant Design设计体系的 UI 组件库,主要用于研发企业级中后台产品.目前官 ...
- Hbase多版本(version)数据写入和读取
1. 首先创建一个支持多版本的hbase表 create } 2.put几条测试数据 put ','f1:name','jack1' put ','f1:name','jack2' 3.读取多版本 ...
- [HEOI2013]SAO(树上dp,计数)
[HEOI2013]SAO (这写了一个晚上QAQ,可能是我太蠢了吧.) 题目说只有\(n-1\)条边,然而每个点又相互联系.说明它的结构是一个类似树的结构,但是是有向边连接的,题目问的是方案个数,那 ...