JSP 양식 처리


웹을 탐색할 때 정보를 서버에 제출하고 백그라운드 프로그램에서 처리하도록 해야 하는 경우가 많습니다. 브라우저는 GET 및 POST 메서드를 사용하여 데이터를 서버에 제출합니다.


GET 방식

GET 방식은 URL 뒤에 요청한 인코딩 정보를 추가하며, URL과 인코딩 정보는 "?" 기호로 구분됩니다. 아래와 같이:

http://www.php.cn/hello?key1=value1&key2=value2

GET 방식은 브라우저가 매개변수를 전달하는 기본 방식입니다. 비밀번호와 같은 일부 민감한 정보에는 GET 방식을 사용하지 않는 것이 좋습니다.

get 사용 시 전송되는 데이터의 크기가 제한되며(제한되는 매개변수 개수가 아님에 유의) 최대값은 1024바이트입니다.


POST 메소드

POST 메소드를 통해 비밀번호 등과 같은 일부 민감한 정보를 전달할 수 있습니다.

POST에 제출된 데이터는 보이지 않으며, URL에 GET이 전달됩니다(브라우저의 주소 표시줄을 확인할 수 있습니다).

JSP는 getParameter()를 사용하여 전달된 매개변수를 얻고, getInputStream() 메소드는 클라이언트의 바이너리 데이터 스트림 요청을 처리하는 데 사용됩니다.


JSP는 양식 데이터를 읽습니다

  • getParameter(): request.getParameter() 메서드를 사용하여 양식 값을 가져옵니다. 매개변수.

  • getParameterValues(): 체크박스 클래스와 같은 데이터를 가져옵니다(이름은 같지만 값이 여러 개임). 체크박스 유형

  • getParameterNames():과 같은 배열 변수를 수신합니다. 이 메소드는 모든 변수의 이름을 가져올 수 있으며, 이 메소드는 Emumeration을 반환합니다.

  • getInputStream():클라이언트에서 바이너리 데이터 스트림을 읽으려면 이 메서드를 호출합니다.


URL의 GET 메소드 사용 예

다음은 단순 URL이며 GET 메소드를 사용하여 URL의 매개변수를 전달합니다.

http://localhost:8080/testjsp/main.jsp?name=php中文网&url=http://ww.php.cn

testjsp는 프로젝트 주소입니다.

다음은 클라이언트가 제출한 양식 데이터를 처리하기 위한 main.jsp 파일의 JSP 프로그램입니다. getParameter() 메소드를 사용하여 제출된 데이터를 가져옵니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<h1>使用 GET 方法读取数据</h1>
<ul>
<li><p><b>站点名:</b>
   <%= request.getParameter("name")%>
</p></li>
<li><p><b>网址:</b>
   <%= request.getParameter("url")%>
</p></li>
</ul>
</body>
</html>

다음으로 사용합니다. 브라우저 방문 http://localhost:8080/testjsp/main.jsp?name=php Chinese website&url=http://ww.php.cn출력 결과는 다음과 같습니다. :


폼의 GET 메소드 사용 예시

다음은 GET 메소드를 통해 클라이언트 데이터를 제출하는 간단한 HTML 폼입니다. main.jsp 파일:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>

<form action="main.jsp" method="GET">
站点名: <input type="text" name="name">
<br />
网址: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>

</body>
</html>

위의 HTML 코드를 test.htm 파일에 저장합니다. 이 파일을 현재 jsp 프로젝트의 WebContent 디렉토리(main.jsp와 동일한 디렉토리)에 배치하십시오.

http://localhost:8080/testjsp/test.html을 방문하여 main.jsp 파일에 양식 데이터를 제출합니다. 데모 Gif는 다음과 같습니다. :

"사이트 이름"과 "웹 사이트" 양식에 정보를 입력하고 "제출" 버튼을 클릭하면 결과가 출력됩니다.


폼의 POST 메소드 사용 예

다음에는 POST 메소드를 사용하여 폼 데이터를 전달하고 main.jsp, Hello.htm 파일 코드를 다음과 같이 수정해 보겠습니다. 🎜>

main.jsp 파일 코드:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<h1>使用 POST 方法读取数据</h1>
<ul>
<li><p><b>站点名:</b>
<%
// 解决中文乱码的问题
String name = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8");
%>
   <%=name%>
</p></li>
<li><p><b>网址:</b>
   <%= request.getParameter("url")%>
</p></li>
</ul>
</body>
</html>

코드에서

new String((request.getParameter("name")).getBytes("ISO-8859-1")을 사용합니다. ,"UTF-8") 인코딩을 변환하여 중국어 깨짐 문자가 발생하지 않도록 합니다.

다음은 test.htm의 수정된 코드입니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>

<form action="main.jsp" method="POST">
站点名: <input type="text" name="name">
<br />
网址: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>

</body>
</html>

http://localhost:8080/testjsp/test.html에 접속하여 main.jsp 파일에 양식 데이터를 제출합니다. 데모 Gif는 다음과 같습니다.


Checkbox 데이터를 JSP 프로그램에 전달합니다.

checkbox checkbox 하나 또는 여러 개의 데이터를 전달할 수 있습니다.

다음은 간단한 HTML 코드이며 test.htm 파일에 코드를 저장합니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>

<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="google" checked="checked" /> Google
<input type="checkbox" name="php"  /> php中文网
<input type="checkbox" name="taobao" checked="checked" /> 
                                                淘宝
<input type="submit" value="选择网站" />
</form>

</body>
</html>

위 코드는 브라우저에서 액세스할 때 다음과 같습니다.

다음은 체크박스 데이터를 처리하는 데 사용되는 main.jsp 파일 코드입니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<h1>从复选框中读取数据</h1>
<ul>
<li><p><b>Google 是否选中:</b>
   <%= request.getParameter("google")%>
</p></li>
<li><p><b>php中文网是否选中:</b>
   <%= request.getParameter("php")%>
</p></li>
<li><p><b>淘宝是否选中:</b>
   <%= request.getParameter("taobao")%>
</p></li>
</ul>
</body>
</html>

http://localhost:8080/testjsp/test.html에 접속하여 양식을 제출합니다. main.jsp 파일의 데이터, 데모 Gif는 다음과 같습니다.


모든 양식 매개변수 읽기

아래에서는 다음을 사용합니다.

HttpServletRequestgetParameterNames()는 모든 양식 매개변수를 읽는 데 사용됩니다. 이 메소드는 모든 변수의 이름을 가져올 수 있습니다.

열거가 있으면 hasMoreElements() 메서드를 호출하여 추가 요소가 있는지 확인하고 nextElement() 메서드를 호출하여 각 매개변수의 이름을 가져올 수 있습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<h1>读取所有表单参数</h1>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>参数名</th><th>参数值</th>
</tr>
<%
   Enumeration paramNames = request.getParameterNames();

   while(paramNames.hasMoreElements()) {
      String paramName = (String)paramNames.nextElement();
      out.print("<tr><td>" + paramName + "</td>\n");
      String paramValue = request.getParameter(paramName);
      out.println("<td> " + paramValue + "</td></tr>\n");
   }
%>
</table>
</body>
</html>

test.htm 파일의 내용은 다음과 같습니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>

<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="google" checked="checked" /> Google
<input type="checkbox" name="php"  /> php中文网
<input type="checkbox" name="taobao" checked="checked" /> 
                                                淘宝
<input type="submit" value="选择网站" />
</form>

</body>
</html>

이제 브라우저를 통해 test.htm 파일에 액세스하여 데이터를 제출하고 출력 결과는 다음과 같습니다.

접속

http://localhost:8080/testjsp/test.html 양식 데이터를 main.jsp 파일에 제출합니다. 데모 Gif는 다음과 같습니다. :

위의 JSP 코드를 사용하여 텍스트 상자, 라디오 버튼, 드롭다운 상자 등 다른 개체와 기타 형식의 데이터를 읽을 수 있습니다.