粗浅理解:

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"此为绝对路径

相对路径&绝对路径的更多相关文章

  1. JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址

    在写java程序时不可避免要获取文件的路径...总结一下,遗漏的随时补上 1.可以在servlet的init方法里 String path = getServletContext().getRealP ...

  2. C#中网站根路径、应用根路径、物理路径、绝对路径,虚拟路径的区别

    C#中网站根路径,请站点的最外一层 /表示 应用根路径 ~/表示,有时候C#程序路径并不是网站路径 物理路径 server.mappath("~/") 是指应用程序放在服务器硬盘的 ...

  3. 根据图片的路径(绝对路径/相对路径都可以),生成base64的

    根据图片的路径(绝对路径/相对路径都可以),生成base64的 <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  4. javaWeb项目中的路径格式 请求url地址 客户端路径 服务端路径 url-pattern 路径 获取资源路径 地址 url

    javaweb项目中有很多场景的路径客户端的POST/GET请求,服务器的请求转发,资源获取需要设置路径等这些路径表达的含义都有不同,所以想要更好的书写规范有用的路径代码 需要对路径有一个清晰地认知 ...

  5. html5-绝对路径/相对路径

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  6. Linux之文档与目录结构 (/ 用法, 相对路径,绝对路径)

    Linux之文档与目录结构   Linux文件系统结构 Linux目录结构的组织形式和Windows有很大的不同.首先Linux没有“盘(C盘.D盘.E盘)”的概念.已经建立文件系统的硬盘分区被挂载到 ...

  7. Java相对路径/绝对路径总结

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00019826 Java相对路径/绝对路径总结(2) 修 ...

  8. JAVA File的创建及相对路径绝对路径

    http://blog.sina.com.cn/s/blog_9386f17b0100w2vv.html JAVA File的创建及相对路径绝对路径 (2011-12-09 08:27:56) 转载▼ ...

  9. 绝对路径-相对路径和File类的构造方法

    绝对路径和相对路径 绝对路径:是一个完整的路径,以盘符开始(c: d:)c:\a.txt 相对路径:相对指的是相对于当前项目的根目录(可以省略项目的根目录) 注意: 1.路径不区分大小写 2.路径中的 ...

  10. JSP Servlet 路径解析 路径设置

    转自:http://ethen.iteye.com/blog/800415 在用JSP和Servlet编写Web应用时,经常遇到的问题就是找不到.do路径,或者.do路径不能解析,其实归根到底就是Se ...

随机推荐

  1. Java程序设计环境概述

    本文主要Java程序设计环境的要点,以及相关注意事项. 一.安装Java开发包 Oracle公司为Linux.Mac OS X.Solaris和Windows提供了Java开发工具包(JDK)的最新. ...

  2. javascript走马灯的效果(文档标题文字滚动)

    做一些网站的时候,文档标题会滚动,这个效果是走马灯的效果. <!DOCTYPE html> <html> <head> <meta charset=" ...

  3. 标准IO和重定向

    1.标准输入/输出/错误 当shell启动,它继承三个文件:stdin.stdout.stderr,标准输入通常来自键盘,标准输出和标准错误通常是屏幕.标准输入/输出/错误的文件描述符为0.1.2 2 ...

  4. SQL Server2012数据库的备份和还原

    一.数据库的备份: 1.选择要备份的数据库“accountInfo”,点击鼠标右键 → 任务 → 备份 2.在打开的“备份数据库 —accountInfo”对话框中,先点击删除,然后点击“添加” 3. ...

  5. WCF学习——构建一个简单的WCF应用(二)

    我们接着上一篇文章进行讲解 http://www.cnblogs.com/songjianhui/p/7060698.html 一:客户端通过添加引用调用服务 WCF应用服务被成功寄宿后,WCF服务应 ...

  6. Javaee需不需要培训?培训完可以顺利找到工作吗?

    Javaee需不需要培训?培训完可以顺利找到工作吗? 在IT行业中Java以它通用性.高效性.平台移植性和安全性遍布各个领域,它的火热也给IT市场发展带来一定影响,随着Java技术的广泛运营,企业对J ...

  7. php通过cURL下载网络上面的一个HTTPS的资源

    <?php /** * php通过cURL下载网络上面的一个HTTPS的资源 * 案例:从google的CDN上下载jquery- v1.7.1 */ $curlobj = curl_init( ...

  8. 【LeetCode】73. Set Matrix Zeroes

    题目: Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Fo ...

  9. Swift 路由机制设计

    设计模式 APP设计模式多种多样,从最初的MVC到MVVM,再到MVP,VIPER等.越来越多的设计模式被开发出来并得以应用,但不论我们用到哪种设计模式,只需要记住高内聚.低耦合那边是好的设计模式.在 ...

  10. ionic搭建与基础

    ionic搭建与基础 一.环境搭建 安装 npm install -g cordova npm install -g ionic 创建 项目 ionic start MyProject blank i ...