J2EE/JAVA——HTMLform表单中action的‘/’路径问题

5 篇文章 0 订阅

1.HTML中的form表单简单介绍

HTML中的form表单在JAVA企业级开发中拥有十分重要的地位,HTML表单用于收集用户输入的信息,并将收集到的用户信息发送到web服务器中。在初级阶段,form表单常常使用在设计用户登录、用户反馈和用户选择上。

下面是一个基于form表单的一个简单登录系统:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>
            一个简单登录系统
        </title>
    </head>
    <body>
        <form>
            Username:<input type="text" name="user"><br>
            Password:<input type="password" name="password"><br>
            <input type="submit" value="Submit">
        </form> 
    </body>
</html>

2.HTML表单中的action用法

        在HTML表单中可以在form表单后添加一个action属性,action属性的值是表单提交给的url,当HTML表单提交信息后,提交的信息就会交给action的属性值,不填action或者填为action="",那么表单就会默认提交到当前页面。

下面是一个使用到action属性的登录系统例子:

Servlet代码:

public class LoginServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		
        String username = request.getParameter("username"); 
        String password = request.getParameter("password");         
        
        System.out.println("username = " + username ); 
        System.out.println("password = " + password ); 
        
        response.setContentType("text/html"); 
        response.getWriter().println("Login Success!"); 
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		doGet(request, response);
	}
}

HTML源码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
	
	<form action="login"> 
	
	用户名:<input type="text" name="username"> <br> 
	密 码:<input type="password" name="password"> <br> 
	<input type="submit" value="登录"> 
	</form>
</body>
</html>

浏览器演示效果: 

 

当我们输入数据,然后点击登录在编译器的控制台中就会显示我们刚刚输入的数据,并且浏览器就会跳转到登录成功页面。

 3.form表单action的属性值填写中路劲问题

        首先action需要能成功执行,需要action属性的值在对应的路径下能够找到,这就需要正确理解路径的写法。我们先理解路径中‘/’的具体意义。

        一般情况,在服务器端看,/就是项目的根目录。如http://127.0.0.1:8080/Test/,Test后的/就是指的根目录。

        从客户端看,/指的是服务器的虚拟跟目录webapps,如http://127.0.0.1:8080/,8080后的/就是虚拟跟目录。

        在action路径书写中,./代表的就是本级目录,../代表的就是上一级目录。

例如在上一个例子中:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
	
	<form action="login"> 
	
	用户名:<input type="text" name="username"> <br> 
	密 码:<input type="password" name="password"> <br> 
	<input type="submit" value="登录"> 
	</form>
</body>
</html>

 action="login",这里不没有加/意思也是在本级目录中去找。而找的对象则是在web.xml文件中:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>
</web-app>

值得注意的是,在web.xml文件中用的是/login,在form表单中应该为login。

又因为直接写login,就是在本级目录中找,所以action中login换为./login也可以。

但是不能换为/login,因为换为/login那么就会在html所在目录的根目录下去寻找,就找不到web.xml文件了。

 

直接写/login会在webapp目录下找,无法找到web.xml文件。

同理当html文件在web.xml文件下一级目录中,那么久需要改为../了。

例子:

 

 

 

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值