Servlet开发

来源:互联网 发布:铜陵行知中学 编辑:程序博客网 时间:2024/05/29 13:36

基本功:
1、配置:Servlet – api.jar包导入到jdk1.6.0_10\jre\lib\ext

2、Servlet(服务器端小程序):多线程、可移植。

最大好处:它可以处理客户端传来的HTTP请求,并返回一个响应。(特点:没有Main主程序)

3、接口类继承关系?


第一个Servlet程序――永远的HelloWorld!

package zz.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.*;import javax.servlet.http.*;public class HelloServlet extends HttpServlet{public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{PrintWriter out = resp.getWriter();out.println("<html>");out.println("<body>");out.println("<head><title>Hello World!</title></head>");out.println("<h2>Hello World!</h2>");out.println("</body>");out.println("<html>");out.close();}}

Servlet程序编写完成后,马上配置修改web.xml文件


<servlet><servlet-name>hello</servlet-name><servlet-class> zz.servlet.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/helloServlet</url-pattern></servlet-mapping>

进化-->修改Web.xml文件(吹牛B的事情:我创造了一门语言)

<servlet><servlet-name>hello</servlet-name><servlet-class> zz.servlet.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/helloServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello.asp</url-pattern></servlet-mapping><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello.zz</url-pattern></servlet-mapping><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/zz/*</url-pattern><!—在zz目录下表示任意名称都可以。图3所示-></servlet-mapping>



Servlet与表单 
<html><head><title>表单提交</title><head><body><form action="<%request.GetContentPath()%>/9_servlet/SubmitServlet" method="get">请输入姓名:<input type="text" name="name"><input type="submit" value="提交"></form></body></html>

package zz.servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class SubmitServlet extends HttpServlet{public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{// 处理Get请求String info = req.getParameter("info");// 接收请求参数PrintWriter out = resp.getWriter();// 准备输出out.println("<html>");out.println("<head><title>接收表单参数</title></head>");out.println("<body>");out.println("<h2>" + info + "<h2>");out.println("</body>");out.println("</html>");out.close();}public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{this.doGet(req, resp);}}






问题:标题为何是乱码?



三、Servlet生命周期

package zz.life;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class LifeServlet extends HttpServlet{// 继承HttpServletpublic void init()throws ServletException{// 初始化操作System.out.println("****1、Servlet初始化-->init()***");}public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{// 处理服务System.out.println("****2、Servlet服务-->doGet()/doPost()");}public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{// 处理服务this.doGet(req, resp);// 调用doGet()}public void destroy(){// Servlet销毁System.out.println("****3、Servlet销毁-->destroy()*******");}}

<servlet><servlet-name>life</servlet-name><servlet-class>zz.life.LifeServlet</servlet-class></servlet><servlet-mapping><servlet-name>life</servlet-name><url-pattern>/LifeServlet</url-pattern><!—错误原因:没有/目录标志--></servlet-mapping>



反复F5刷新,结果:



结论:默认状态下,servlet只在第一次运行时初始化;当然也可以经过配置:<load-on-startup>1</load-on-startup>
让其在容器Tomcat启动时进行初始化。

问题:
1、请区分容器和服务器?
2、关闭容器 || 一个Servlet长时间不使用和动态加载怎样实现?(servlet销毁)

3、回顾config对象、模板设计模式(servlet程序本身应用);
4、Servlet生命周期控制的3个方法:init(), service()(doGet()、doPost())和destory();




原创粉丝点击