相对路径&绝对路径
粗浅理解:
1)绝对路径:带有访问协议的路径,就是带上http访问协议
2)相对路径:
①以带斜杠开头的相对路径:
A)前台相对路径:以web服务器的根路径为参照路径,比如在jsp、HTML中写的路径,这些页面都是由浏览 器进行解析的。例:http://127.0.0.1:8080/
B)后台相对路径:以web应用的路径为参照路径,比如在xml、java文件中写的路径,这些页面都是由服务器 进行解析的。例:http://127.0.0.1:8080/项目名/
②以不带斜杠开头的相对路径:部分前后台军以当前路路径为参照路径,这个当前路径可以理解为浏览器地址栏 中的路径而不是在项目中的路径。
简单小例子说明一个浏览器地址栏中,路径逐一递增的解决方案:
例:
表单登录界面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My First Struts2 Project</title>
</head>
<body>
<!-- 用ognl表达式将Action中的fieldError中的自定义显示内容展现在页面 -->
<s:fielderror/>
<form action="validate/login_validate.action" method="post">
用户名<input type="text" name="name"><br>
手机号<input type="text" name="mobile"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
Action方法进行数据验证:
package com.bjyinfu.struts.actions;
import java.util.regex.Pattern;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction4 extends ActionSupport {
private String mobile;
private String name;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String execute(){
return "success";
}
@Override
public void validate() {
//等于null是为了防止越过表单方法问
if(name==null || "".equals(name.trim())){
//底层有个集合叫fieldErrors.size()>0,说明有验证失败的信息,此时会自动跳转到input视图
this.addFieldError("name", "用户名不能为空");
}
if(mobile==null || "".equals(mobile.trim())){
this.addFieldError("mobile", "手机号不能为空");
}else if(!Pattern.matches("^1[34578]\\d{9}", mobile)){
this.addFieldError("mobile", "手机号不符合规定");
}
}
}
将Action方法注册到struts2中:(当输入数据符合规范的时候为“success”,跳转到welcome4.jsp页面上,当输入数据不符合规范的时候为“input”,跳转到login4.jsp登录界面,第二个跳转是struts2底层ActionSupport进行封装的,addFieldError("","")方法底层有个集合叫fieldErrors.size()>0,说明有验证失败的信息,此时会自动跳转到input视图)
)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts> <package name="validate" namespace="/validate" extends="struts-default">
<action name="login_*" class="com.bjyinfu.struts.actions.LoginAction4">
<result name="success">/welcome4.jsp</result>
<result name="input">/login4.jsp</result>
</action>
</package>
</struts>
展示页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My First Struts2 Project</title>
</head>
<body>
<s:debug></s:debug><br>
<h1>数据验证的执行</h1>
</body>
</html>
下面故意将数据输入错误,会出现这种情况:
第一次点击登录:

第二次点击登录:

第三次点击登录:

结:
a:获取项目名:String path = request.getContextPath();
此示例中的输出<%=path %> 结果:/AjaxPostProject
b:EL表达式中也可以获取项目名:${pageContext.request.contextPath }
此示例中输出 m=${pageContext.request.contextPath } 结果:/AjaxPostProject
c:获取带项目名的请求路径:
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
此示例中输出 <%=basePath %> 结果:http://127.0.0.1:8080/AjaxPostProject/
三种解决方案:
1:所以表单中的action可以写成action="<%=path %>/validate/login_validate.action"此为带斜杠的前段相对路径
2:action="${pageContext.request.contextPath }/validate/login_validate.action"此为带斜杠的前段相对路径
3:action="<%=basePath %>validate/login_validate.action"此为绝对路径
相对路径&绝对路径的更多相关文章
- JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址
在写java程序时不可避免要获取文件的路径...总结一下,遗漏的随时补上 1.可以在servlet的init方法里 String path = getServletContext().getRealP ...
- C#中网站根路径、应用根路径、物理路径、绝对路径,虚拟路径的区别
C#中网站根路径,请站点的最外一层 /表示 应用根路径 ~/表示,有时候C#程序路径并不是网站路径 物理路径 server.mappath("~/") 是指应用程序放在服务器硬盘的 ...
- 根据图片的路径(绝对路径/相对路径都可以),生成base64的
根据图片的路径(绝对路径/相对路径都可以),生成base64的 <!DOCTYPE html> <html> <head> <meta charset=&qu ...
- javaWeb项目中的路径格式 请求url地址 客户端路径 服务端路径 url-pattern 路径 获取资源路径 地址 url
javaweb项目中有很多场景的路径客户端的POST/GET请求,服务器的请求转发,资源获取需要设置路径等这些路径表达的含义都有不同,所以想要更好的书写规范有用的路径代码 需要对路径有一个清晰地认知 ...
- html5-绝对路径/相对路径
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- Linux之文档与目录结构 (/ 用法, 相对路径,绝对路径)
Linux之文档与目录结构 Linux文件系统结构 Linux目录结构的组织形式和Windows有很大的不同.首先Linux没有“盘(C盘.D盘.E盘)”的概念.已经建立文件系统的硬盘分区被挂载到 ...
- Java相对路径/绝对路径总结
Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00019826 Java相对路径/绝对路径总结(2) 修 ...
- JAVA File的创建及相对路径绝对路径
http://blog.sina.com.cn/s/blog_9386f17b0100w2vv.html JAVA File的创建及相对路径绝对路径 (2011-12-09 08:27:56) 转载▼ ...
- 绝对路径-相对路径和File类的构造方法
绝对路径和相对路径 绝对路径:是一个完整的路径,以盘符开始(c: d:)c:\a.txt 相对路径:相对指的是相对于当前项目的根目录(可以省略项目的根目录) 注意: 1.路径不区分大小写 2.路径中的 ...
- JSP Servlet 路径解析 路径设置
转自:http://ethen.iteye.com/blog/800415 在用JSP和Servlet编写Web应用时,经常遇到的问题就是找不到.do路径,或者.do路径不能解析,其实归根到底就是Se ...
随机推荐
- Bash函数
一.什么是Bash函数 Bash不支持goto语句,可以用function实现程序流程跳转.当前shell中一组组织在一起并被命名的命令.比脚本的效率高,一旦定义,就成为shell内存的一部分,可以随 ...
- ubuntu 系统 更改屏幕亮度为最大(15级亮度)
历经千辛万苦终于搞定屏幕亮度,现将成果分享如下. 硬件:联想K29 系统:UBUNTU 14.04 一.执行命令 sudo gedit /etc/default/grub 二.更改文本 然后找到 GR ...
- 关于MATLAB处理大数据坐标文件2017529
今天我们离成功又近了一步,因为又失败了两次 第一次使用了所有特征,理由:前天的特征使用的是取单个特征测试超过85分的特征,结果出现过拟合现象. 本次使用所有特征是为了和昨天的结果作比较. 结果稍好:比 ...
- Elasticsearch5.0.1安装
最新研究了下ES5.0,ES就是为高可用和可扩展而生的,你可以很方便的增加也减少一个节点.顺便记录下安装过程,也方便以后查看. 1 安装部骤 1.1 安装JDK ES依赖于 ...
- RDLC报表纵向合并单元格。
在做RDLC报表时发现居然没有纵向合并单元格,震惊! 网上查了一些资料,有些方法很可爱,采用去除边框法,但是用这种方法如果要求文本属性居中的话那则达不到美观效果,还有些复杂一点的方法,我都没耐心看,然 ...
- Spring Boot 集成 Mybatis
原文:https://github.com/x113773/testall/issues/9 方式一:mybatis-spring-boot-starter---这种方式比较简单,具体步骤如下:1. ...
- [leetcode-573-Squirrel Simulation]
There's a tree, a squirrel, and several nuts. Positions are represented by the cells in a 2D grid. Y ...
- jq-fadeIn&fadeOut
jq-fadeIn&fadeOut: <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...
- JQuery——banner旋转木马效果
博主在浏览网页时无意间发现了一种banner图的轮播方式--像旋转木马一样的轮播方式,博主感觉非常新颖独特,经过查阅资料,观看某课网教程总算搞了出来的,其原理主要利用了JQuery代码实现,好了不多说 ...
- ionic ios项目真机运行-不用开发者账号
ionic ios项目真机运行-不用开发者账号 1. 添加ios平台 ionic platform add ios 2.使用XCODE打开项目 3.使用APPID登录XCODE 打开XCODE账号登录 ...