Servlet开发

基本功:
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{	// 继承HttpServlet
	public 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();




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值