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是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关 ...
随机推荐
- JS扫雷小游戏
HTML代码 <title> 扫雷 </title> <!-- ondragstart:防拖拽生成新页面 oncontextmenu:屏蔽右键菜单--> <b ...
- Netty源码分析--内存模型(上)(十一)
前两节我们分别看了FastThreadLocal和ThreadLocal的源码分析,并且在第八节的时候讲到了处理一个客户端的接入请求,一个客户端是接入进来的,是怎么注册到多路复用器上的.那么这一节我们 ...
- 【原创】微信小程序支付java后台案例(公众号支付同适用)(签名错误问题)
前言 1.微信小程序支付官方接口文档:[点击查看微信开放平台api开发文档]2.遇到的坑:预支付统一下单签名结果返回[签名错误]失败,建议用官方[签名验证工具]检查签名是否存在问题.3.遇到的坑:签名 ...
- NFS Debian 服务器,CentOS 客户端
0x00 事件 最近买了一台 500G 储存的 VPS,但是与国内的连接.下载速度都比较差,于是想了个「曲线救国」的方式. 另外有一台 GIA 与 VPS-500G 通信比较理想,同时 GIA 与国内 ...
- Sublime Text 3 使用手册
Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...
- 【模板】树链剖分(Luogu P3384)
题目描述 众所周知 树链剖分是个好东西QWQ 也是一个代码量破百的算法 基本定义 树路径信息维护算法. 将一棵树划分成若干条链,用数据结构去维护每条链,复杂度为O(logN). 其实本质是一些数据结 ...
- springboot 整合shiro
参考: https://blog.csdn.net/fuweilian1/article/details/80309192(推荐) https://blog.csdn.net ...
- 再见 Spring Boot 1.X ,Spring Boot 2.X 走向舞台中心
2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束. 其实早在2018年7月30号,Spring 官方就已经 ...
- tensorflow如何继续训练之前保存的模型
https://blog.csdn.net/qq_23981335/article/details/81480220
- 从 View 的四个构造方法说起
View 类的四个构造函数 写过自定义 View 的都知道,View 有四个构造函数,一般大家都知道第一个构造方法是简单的在代码中new View 的时候调用的,第二个构造方法使用最广泛,是对应的生成 ...