ارسال پارامتر به Servlet با متد های Http
در سری مقالات آموزش Java Enterprise , به مبحث پارامتر ها در Servlet میپردازیم.
در مقاله های قبلی پیرامون ماهیت و ساختار Servlet صحبت شد. اگر بخواهیم یک مرور کلی بر مباحث گذشته داشته باشیم, وقتی که یک مرورگر یک Request ارسال میکند درون Tomcat از کلاس های HttpServletRequest و HttpServletResponse یک object میسازد. در واقع کلاس مربوط به Request ماهیت درخواست ارسالی از سمت مرورگر را شامل میشود و Response برای ارسال پاسخ از سمت Server به مرورگر میباشد. یکی از مهم ترین اجزا request دریافتی پارامتر های موجود در آن میباشند. همچنین Request ها عمدتا به دو صورت Get و Post میباشند. البته متد های دیگری مانند Head, Put و … نیز وجود دارند.
قبل از شروع کار نگاه اجمالی به متد های post و get در HTTP میاندازیم. در ابتدا باید گفت که HTTP یک protocol برای ارتباط میان Client و Server میباشد و به صورت Request و Response عمل میکند. همانطور که گفته شد عمدتا از متد های Post و Get در Http استفاده میشود. متد get برای درخواست اطلاعات از یک resource میباشد و متد post یکسری اطلاعات را ثبت کرده و به یک resource ارسال میکند تا پردازش شوند. ارسال اطلاعات از متد get به server با استفاده از URL صورت میگیرد.
http://localhost:8080/simpleServlet?user=vhdrjb
از خواص get میتوان به موارد زیر اشاره کرد
- قابلیت cache شدن دارند
- در history مرورگر باقی میمانند
- قابل bookmark شدن میباشند
- محدودیت طول دارند
- برای گرفتن اطلاعات استفاده میشوند
توجه داشته باشید در صورتی که اطلاعات حساسی را ارسال میکنید از این متد استفاده نکنید.
در متد Post پارامتر ها در بدنه پیام HTTP قرار میگیرند. Post برعکس و امن تر از get میباشد. در واقع تمام خواصی که در get گفته شد در post وجود ندارد و نبود بعضی از این خواص باعث امن تر شدن آن است.
اگر بخواهیم پارامتر های ورودی را از طریق get دریافت کنیم به این صورت عمل میکنیم
http://localhost:8080/simpleServlet?user=vhdrjb&message=hello%20zero%20to%20hero
و در Servlet به این صورت مینویسیم
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String user =request.getParameter("user"); String message = request.getParameter("message"); PrintWriter printWriter = response.getWriter(); printWriter.println("<h1>" + user +" : "+ "</h1>"+"<h2>"+message+"</h2>"); }
و خروجی آن به این صورت خواهد بود
<html> <head> </head> <body> <h1>vhdrjb : </h1> <h2>hello zero to hero</h2> </body> </html>
اگر بخواهیم از متد Post در Request استفاده کنیم باید بجای متد doGet با متد doPost کار کنیم.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String user =request.getParameter("user"); String message = request.getParameter("message"); PrintWriter printWriter = response.getWriter(); printWriter.println("<h1>" + user +" : "+ "</h1>"+"<h2>"+message+"</h2>"); }
برای ارسال یک درخواست از نوع Post یک صفحه form در فایل index.jsp ایجاد میکنیم
<body> <form method="post" action="${pageContext.request.contextPath}/simpleServlet"> User : <input type="text" name="user"> Message : <input type="text" name="message"> <input type="submit" value="Send Message"> </form> </body>
توجه داشته باشید آدرسی که به Action در from اختصاص میدهیم باید مقادیر url-pattern مربوط به Servlet باشد. در صورت ارسال, این مقادیر را با متد Post ارسال میکند.
اگر یک لیست از پارامتر ها را داشته باشیم نیز میتوان به این صورت عمل کرد. ابتدا این کد را به index.jsp اضافه میکنیم
<form method="post" action="${pageContext.request.contextPath}/simpleServlet"> User : <input type="text" name="user"> Message : <input type="text" name="message"> <select name="developing" multiple size="2"> <option value="Java">Java</option> <option value="Android">Android</option> <option value="PHP">PHP</option> <option value="Python">Python</option> <option value="C#">C#</option> </select> <input type="submit" value="Send Message"> </form>
و برای دریافت این پارامتر ها به این صورت عمل میکنیم
String[] developing = request.getParameterValues("developing"); for (String s : developing) { printWriter.println("Developing : " + s); }
در این مقاله سعی شد تا پیرامون پارامتر ها و شیوه ارسال آنها به برنامه توضیحاتی داده شود. سری مقالات آموزش Java Enterprise همچنان ادامه دارد.
در مقاله بعدی به Session ها در Servlet میپردازیم.
با ما همراه باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.