一、Serlvet简介

serlvet是一个服务器小程序,它可以对用户的请求(request)作出响应(response)。

举个例子,当我们在html页面填写一个表单时,我们点击提交,这就能发送一个请求,服务器可以接收到我们的请求然后执行相应的servlet程序来作出响应。

html表单发送请求:

HttpServletResponse 返回自定义错误_html


响应结果:

HttpServletResponse 返回自定义错误_web_02


浏览器/服务器模式(B/S)图示:

HttpServletResponse 返回自定义错误_java_03

二、如何创建第一个servlet程序

要使用servet程序,你需要先确保你已正确配置好服务器(例如Tomcat)。

1.打开eclipse,新建一个动态web项目,我这里将其命名为了test

HttpServletResponse 返回自定义错误_java_04


2.在创建好的项目下的src文件夹下创建一个Servlet

HttpServletResponse 返回自定义错误_tomcat_05


3.这时需要指定一个包名(Java package),我们不妨写servlets,还需要一个Class name,我们不妨起名为Test,之后点击Next,再点击Next

HttpServletResponse 返回自定义错误_web_06


4.勾选所需要的方法,我们这里只需要勾选前两项以及doGet和goPost,之后点击Finish

HttpServletResponse 返回自定义错误_servlet_07


5.这样servlet程序就创建好了,接下来我们需要编辑我们的servlet程序,这里我们只要删除这样一句话:

@WebServlet("Test")

这句话的功能是让eclipse帮我们做一些服务器配置,但我们希望自己去做配置,所以应该把这句话删除,不然的话就是eclipse已经帮我们配置好了,我们再去配置的话,如果我们配置的一些东西和eclipse帮我们配置的一些东西不一致的,就可能产生服务器错误。总之,我们先把这句话删除吧。

三、配置web.xml文件

1.找到web.xml文件并双击打开

HttpServletResponse 返回自定义错误_html_08


2.如果你的web.xml是这样显示的,那请点击左下角的Source

HttpServletResponse 返回自定义错误_tomcat_09


3.添加如下代码

<servlet>
  	<servlet-name>Test</servlet-name><!-- 这里写你给servlet程序起的别名,不妨就和servlet程序名一样-->
  	<servlet-class>servlets.Test</servlet-class><!-- 这里写你的servlet程序的所在包名加.servlet程序名-->
  </servlet>
  <servlet-mapping>
 	<servlet-name>Test</servlet-name><!-- 这里写你之前给你的servlet程序起的别名,一般和上面的servlet-name标签下的内容一致-->
 	<url-pattern>/test</url-pattern><!-- 这里是给你的servlet程序配一个访问地址,注意加/ --> 
  </servlet-mapping>

这样的话你的web.xml看上去应该像这样

HttpServletResponse 返回自定义错误_html_10


这样就配置好了

四、测试servlet程序

我们现在可以编写一个html或者jsp来生成一个表单,当我们点击提交表单时,将请求传给servlet程序,然后希望servlet程序给我们一些响应。这里以html为例。

1.在项目的WebContent文件夹下新建一个html文件

HttpServletResponse 返回自定义错误_html_11


2.编写html文件为,其中form标签的action属性值为之前在web.xml配置好的访问地址(这里不需要加/),method属性值使用get

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<style>
	input{
		display: block;
	}
</style>
<body>
	<form action="test" method="get">
		用户名<input type="text" name="UserName">
		Email<input type="text" name="Email">
		通信地址<input type="text" name="address">
		个人简历<input type="text" name="resume">
		<input type="submit" value="提交">
	</form>
</body>
</html>

3.之后将你的项目部署到服务器,启动服务器再访问你的html,不出意外你将看到这样的界面:(如果你不知道如何将你的项目部署到服务器,你可以查看这篇文章的第5点)

HttpServletResponse 返回自定义错误_servlet_12


4.输入信息,点击提交之后,将会调用你的serlvet程序。

HttpServletResponse 返回自定义错误_java_13


出现了这样的信息,这是因为我们还没有重写serlvet程序的doGet方法,我们一般需要重写serlvet程序,让serlvet程序能返回一个有意义的结果,例如让它输出我们输入的用户名。

五、重写serlvet程序的doGet方法

1.找到我们的serlvet程序,双击打开

HttpServletResponse 返回自定义错误_servlet_14


2.重写doGet方法为下图所示,这个方法功能仅仅就是将用户输入的用户名输出,你也可以根据自己的需求来重写你自己的doGet方法

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html ; charset = gb2312");//防止中文乱码
		String UserName = request.getParameter("UserName");//获得用户输入的用户名
		
		//将用户名输出至网页上
		PrintWriter out = response.getWriter();
		out.println(UserName);
	}

六、重启服务器,重新访问html,提交表单看效果

运行结果:

HttpServletResponse 返回自定义错误_servlet_15