jsp 语言 JSP 处理表单提交的多种方式

JSP阿木 发布于 15 天前 4 次阅读


JSP处理表单提交的多种方式

JavaServer Pages(JSP)是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,从而实现动态内容的生成。在Web开发中,表单提交是用户与服务器交互的重要方式。本文将围绕JSP处理表单提交的多种方式进行探讨,包括传统的表单提交、AJAX表单提交以及使用Servlet和JSP结合的方式。

1. 传统表单提交

1.1 基本概念

传统表单提交是指用户填写表单后,通过HTTP POST或GET请求将表单数据发送到服务器,服务器端通过JSP页面接收并处理这些数据。

1.2 代码示例

以下是一个简单的JSP表单提交示例:

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>


<!DOCTYPE html>


<html>


<head>


<title>传统表单提交示例</title>


</head>


<body>


<form action="submit.jsp" method="post">


用户名:<input type="text" name="username" /><br/>


密码:<input type="password" name="password" /><br/>


<input type="submit" value="提交" />


</form>


</body>


</html>


在`submit.jsp`页面中,我们可以通过`request.getParameter()`方法获取表单数据:

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>


<%@ page import="java.io." %>


<!DOCTYPE html>


<html>


<head>


<title>表单提交处理</title>


</head>


<body>


<%


String username = request.getParameter("username");


String password = request.getParameter("password");


// 处理表单数据


out.println("用户名:" + username + "<br/>");


out.println("密码:" + password + "<br/>");


%>


</body>


</html>


2. AJAX表单提交

2.1 基本概念

AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,与服务器交换数据和更新部分网页的技术。在JSP中,我们可以使用AJAX技术实现异步表单提交。

2.2 代码示例

以下是一个使用AJAX进行表单提交的示例:

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>


<!DOCTYPE html>


<html>


<head>


<title>AJAX表单提交示例</title>


<script type="text/javascript">


function submitForm() {


var xhr = new XMLHttpRequest();


xhr.open("POST", "submit.jsp", true);


xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");


xhr.onreadystatechange = function () {


if (xhr.readyState == 4 && xhr.status == 200) {


document.getElementById("result").innerHTML = xhr.responseText;


}


};


xhr.send("username=" + document.getElementById("username").value + "&password=" + document.getElementById("password").value);


}


</script>


</head>


<body>


<form onsubmit="event.preventDefault(); submitForm();">


用户名:<input type="text" id="username" /><br/>


密码:<input type="password" id="password" /><br/>


<input type="submit" value="提交" />


</form>


<div id="result"></div>


</body>


</html>


在`submit.jsp`页面中,我们可以处理AJAX请求:

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>


<%@ page import="java.io." %>


<!DOCTYPE html>


<html>


<head>


<title>表单提交处理</title>


</head>


<body>


<%


String username = request.getParameter("username");


String password = request.getParameter("password");


// 处理表单数据


out.println("用户名:" + username + "<br/>");


out.println("密码:" + password + "<br/>");


%>


</body>


</html>


3. 使用Servlet和JSP结合的方式

3.1 基本概念

使用Servlet和JSP结合的方式,可以将表单提交的处理逻辑分离到Servlet中,从而提高代码的可维护性和可扩展性。

3.2 代码示例

创建一个Servlet类:

java

import javax.servlet.;


import javax.servlet.http.;


import java.io.IOException;

public class FormServlet extends HttpServlet {


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


String username = request.getParameter("username");


String password = request.getParameter("password");


// 处理表单数据


request.setAttribute("username", username);


request.setAttribute("password", password);


RequestDispatcher dispatcher = request.getRequestDispatcher("result.jsp");


dispatcher.forward(request, response);


}


}


然后,创建一个JSP页面用于显示处理结果:

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>


<%@ page import="java.io." %>


<!DOCTYPE html>


<html>


<head>


<title>表单提交处理结果</title>


</head>


<body>


<%


String username = (String) request.getAttribute("username");


String password = (String) request.getAttribute("password");


// 显示处理结果


out.println("用户名:" + username + "<br/>");


out.println("密码:" + password + "<br/>");


%>


</body>


</html>


修改表单的`action`属性,指向Servlet:

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>


<!DOCTYPE html>


<html>


<head>


<title>Servlet表单提交示例</title>


</head>


<body>


<form action="FormServlet" method="post">


用户名:<input type="text" name="username" /><br/>


密码:<input type="password" name="password" /><br/>


<input type="submit" value="提交" />


</form>


</body>


</html>


总结

本文介绍了JSP处理表单提交的多种方式,包括传统表单提交、AJAX表单提交以及使用Servlet和JSP结合的方式。在实际开发中,我们可以根据需求选择合适的方式,以提高项目的可维护性和可扩展性。