慕课网“JAVA遇见HTML——Servlet篇”视频范例。
写类继承HttpServlet
重写doGet()和doPost()方法:IDEA中使用快捷键ctrl+o选择要重写的方法。
在web.xml中注册Servlet
添加servlet和servlet-mapping标签
代码
index.jsp
<body>
<h1>第一个servlet小例子</h1>
<hr> <a href="servlet/HelloServlet">Get方式请求HelloServlet</a><br>
<form action="servlet/HelloServlet" method="post">
<input type="submit" value="Post方式请求HelloServlet"/> </form>
</body>```
`web.xml`在web-app标签中添加如下内容:
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/servlet/HelloServlet</url-pattern>
</servlet-mapping>
`HelloServlet.java`省略import的内容
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("处理Get请求...");
PrintWriter out = response.getWriter();
response.setContentType("text/html;charset=utf-8");
out.println("<strong>Hello Servlet!</strong>
"); }
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("处理Post请求...");
PrintWriter out = response.getWriter();
response.setContentType("text/html;charset=utf-8");
out.println("<strong>Hello Servlet!</strong>
"); }}
####出现的问题
post请求按钮总是返回405:这篇文章虽然没有帮助解决,但看了也有收获。
<a>http://www.cnblogs.com/panjun-Donet/archive/2009/04/04/1429585.html</a>
里面谈及的情况都是没有成功覆写doGet和doPost方法导致的调用父类自己的do*方法,默认返回400或405。但检查我自己的代码,并没有出现上述问题。
最终关闭tomcat并重启后正常运行了。
####Servlet生命周期
#####以下三种时刻Servlet容器装载Servlet
######Servlet容器启动时自动装载某些servlet
1、在`web.xml`中添加代码`<loadon-startup>1</loadon-startup>`,数字越小优先级越高。
2、Servlet容器启动后,客户端首次向Servlet请求servlet实例时。这时先调用构造方法,再调用初始化方法,继而调用service方法,由它判断该请求的类型,进而调用doGet()还是doPost()方法。整个servlet周期内,init方法只被调用一次。
3、Servlet类文件被更新后,重新装载Servlet。
网友评论