美文网首页
手写ServletDemo

手写ServletDemo

作者: 一条自由自在的鱼 | 来源:发表于2016-06-05 17:15 被阅读273次

慕课网“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。

相关文章

网友评论

      本文标题:手写ServletDemo

      本文链接:https://www.haomeiwen.com/subject/mpdrdttx.html