Servlet一般用于写控制器,即MVC开发模式中的c(controller 控制器),但是其也可以用于写网页内容,以下为用servlet文件创建的html网页内容(根据MVC开发模式,最好是使用jsp文件来写HTML内容,因为在jsp文件中可以直接使用HTML语法来描绘网站内容)。即使用jsp来写网页,使用servlet来写控制器。
附:项目中的index.jsp是用来测试创建的web工程是否能正常运行的,而web.xml是用来修改默认的jsp页面、修改写好的servlet-Java程序与在浏览器地址栏中访问该servlet的路径之间关联的
Jsp写HTML
Servlet写HTML
由以上比较可知使用servlet写HTML网页时,会多次使用out.println()语句来输出网页内容,而在jsp文件中直接使用HTML语法对HTML网页进行描述
1.创建第一个servlet文件(servlet文件本质上是一个java程序,一般放在项目下的src包中)
直接new->servlet->为该Java文件取类名,如:helloworld
单击next直到以下页面:
首先只对doGet()进行改写,所以复选框中只勾选doGet()
之后单击finish完成创建
2.写入第一个servlet文件代码:
package p.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/helloworld")
public class helloworld extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
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 ");
out.print(this.getClass());
out.println(", using the GET method");
out.println("<br>Hello World!");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
3.调试运行
首先要将项目添加至tomcat上,其次是运行之前要启动tomcat
若是第一次在src文件夹之下创建servlet文件,则myeclipse会在创建好第一个servlet文件的同时为你打开web.xml文件,打开该文件:
Servlet的web.xml
Jsp的web.xml
对比二者可知,servlet文件比jsp文件的web.xml多了:
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>p.servlet.helloworld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/servlet/helloworld</url-pattern>
</servlet-mapping>
第一个<servlet>中的<servlet-name>是作为一个桥梁与<servlet-mapping>中的<servlet-name>相对应,而<servlet-class>描述的是你写的这个servlet文件的具体位置(即包名:p.servlet + 类名:helloworld)
第二个 <servlet-mapping>中的<servlet-name>是作为一个桥梁与<servlet >中的<servlet-name>相对应,而<url-pattern>描述的是在浏览器的地址栏中应该输入的路径(即该servlet写的HTML文件在tomcat上的url)
比如:
A=
<servlet-name>helloworld</servlet-name>
B=
<servlet-class>p.servlet.helloworld</servlet-class>
C=
<url-pattern>/servlet/helloworld</url-pattern>
以上逻辑为:A=B,A=C,所以B=C
由此将该Java文件与一个tomcat服务器上的url对应起来,在浏览器地址栏中填写该url之后就会请求对应的HTML页面,而tomcat在接收到该网页的请求时就会调用服务器上的这个servlet来响应客户端
在浏览器的地址栏中填入:localhost:8080/工程名/<url-pattern>中的地址
如:http://localhost:8080/helloworld/servlet/helloworld
单击回车即可看见结果: