粗浅理解:

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. ztree学习笔记(一)

    在项目当中,经常会用到ztree树形插件,之前做的几个项目当中都用到了这个插件,感觉功能还是很强大的,而且在网上还找到了中文的API,因为项目中的树形结构不是自己做的,所以现在从头学习一下,并且记录一 ...

  2. Rhythmbox音乐播放器常见问题

    一.歌名中文乱码 对于所有用gstreamer做后端的播放器,如Rhythmbox, 设置如下的环境变量后即可正确读取mp3中GBK编码的id3 tag. export GST_ID3_TAG_ENC ...

  3. Jenkin-持续集成

    1.Jenkins安装 本文将会介绍如何在windows 中安装Jenkins,并且使用Jenkins进行项目的构建. 首先我们进入到Jenkins 的官网下载地址:https://jenkins.i ...

  4. octomap中3d-rrt路径规划

    路径规划 碰撞冲突检测 在octomap中制定起止点,目标点,使用rrt规划一条路径出来,没有运动学,动力学的限制,只要能避开障碍物. 效果如下: #include "ros/ros.h&q ...

  5. jeecg 弹出框 点击按钮回调父页面 返回值

    jeecg 弹出框 点击按钮回调父页面 返回值 <t:base type="jquery"></t:base> <t:base type=" ...

  6. DataTable多线程操作报错情况

    最近在写一个http接口时用了DataTable这个强大的利器,接口用浏览器跑起来没任何问题.当时也没考虑并发问题,后来用一个压力测试工具做大并发测试,1000+/s次速度测试.发现程序报错了.程序报 ...

  7. yii 输出当前的sql语句

    <?php namespace app\controllers; use yii\web\Controller; use yii\data\Pagination; use app\models\ ...

  8. Solr6.6 创建core

    原文:https://github.com/x113773/testall/issues/7 1. 首先在solr-6.6.0目录运行命令,启动solr:`Linux: $ bin/solr star ...

  9. solr学习-基础环境搭建(一)

    目前网上关于solr6.+的安装教程很少,有些6.0之前的教程在应用到6.+的版本中出现很多的问题,所以特别整理出来这一片文章,希望能给各位码农一些帮助! 很少写些文章,如有不对的地方,还希望多多指导 ...

  10. C#设置WebBrowser默认浏览器

    由于VS的WebBrowser控件的默认浏览器是IE7,好多网页兼容性不是很好,所以要修改下默认浏览器. 设置前: 设置后:    在WebBrowser界面加载时执行以下方法,设置浏览器. /// ...