01 07Servlet与表单

下面要结合表单输入来实现一个Servlet,首先还是按照已有的方式建立一个InputServlet,这个Servlet要负责接收一个msg的请求参数。
范例:定义InputServlet

package org.lks.demo;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class InputServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		response.setCharacterEncoding("UTF-8");
		String msg = request.getParameter("msg"); //接收一个msg的请求参数
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is <strong>");
		out.print(msg);
		out.println("</strong>, using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

}

随后还需要在web.xml文件之中配置此Servlet。

<servlet>
 	<servlet-name>InputServelt</servlet-name>
 	<servlet-class>org.lks.demo.InputServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 	<servlet-name>InputServlet</servlet-name>
 	<url-pattern>/input.do</url-pattern>
 </servlet-mapping>

随后建立一个input.jsp的页面,这个页面就是编写一个表单,而后进行信息的提交。
范例:定义input.jsp

<%@ page language="java" pageEncoding="UTF-8"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<base href="<%=basePath%>">

	<title>Input&nbsp;Servlet</title>

</head>
  
<body>
	<form action="input.do" method="post">
		please input info:&nbsp;<input type="text" name="msg" id="msg">
		<input type="submit" value="submit">
	</form>
</body>
</html>

以上已经可以成功的处理了表单的get请求与post请求,单并不是说只是处理请求就够了,对所有刚刚接触到Servlet的开发者而言,最大的难度就在于路径的问题。

任何的情况下JSP文件都不可能直接放在根路径下,但是由于页面中存在有:<base>元素,所以即使此时页面的路径改变了,Servlet也可以使用,因为当前的Servelt就定义在了根路径下;

但是既然Servlet的功能和JSP是类似的,而且最为重要的是如果执行某一个操作时路径来回变化,这样对于程序的维护是非常不方便的,所以在以后的开发之中,强烈建议将Servlet配置在与之功能相匹配的目录下。

<servlet>
 	<servlet-name>InputServlet</servlet-name>
 	<servlet-class>org.lks.demo.InputServlet</servlet-class>
 </servlet>
<servlet-mapping>
 	<servlet-name>InputServlet</servlet-name>
 	<url-pattern>/pages/back/admin/news/input.do</url-pattern>
 </servlet-mapping>
String inputUrl = basePath + "pages/back/admin/news/input.jsp";
<form action="<%=inputUrl %>" method="post">

以后如果在编写Servlet的时候出现了404的错误路径,请一定要记住观察浏览器上的当前路径是否是Servlet的配置路径。

总结:
(1)Servlet的开发的确是比较高级,可以明确的区分出post与get请求,但是大部分的情况下get和post的请求处理是相同的,也就是说本次给出的Servlet程序就是日后使用最多的程序结构。
(2)Servlet接收请求参数时的访问路径,一定要和所用的JSP页面保持在同一个路径下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章