JSP学习笔记之七

JavaServlet基础

JSP根基是servlet技术,在JSP技术出现之前,web应用开发人员自己编写创建servlet对象的类,负责编译和复制字节码到特定目录,从而响应用户请求。JSP屏蔽了servlet对象创建的过程,开发者只需要关心jsp页面本身结构和设计。

需要将tomcat安装目录中的servlet-api.jar放到jdk的lib/ext中。

1 基本准备

1.1   编写

 写一个创建servlet对象的类就是编写一个特殊类HttpServlet(在javax.servlet.http包中)的子类。HttpServlet类实现了Servlet接口,实现了响应用户的方法。

 写好后编译,然后将字节码保存到classes下的响应目录中。这取决于定义serlvet对象的类所在包,这和bean有几分类似。

1.2   web.xml

 编写好了servlet对象的类,那么在使用前,需要知道如何访问这些类,就像使用bean一样。这种对应访问关系在服务目录的WEB-INF下的web.xml中定义,也就是说servlet对象是针对服务目录生成的。

servlet-class:servlet类名,包含了classes下的包路径

servlet-name:tomcat服务器创建的servlet对象名

servlet-mapping中的url-pattern:servlet对象的访问名

  在使用和访问的时候,都是使用 servlet-mapping的url-pattern中的访问名。

2  servlet对象工作

  servlet对象由Tomcat服务器负责管理,通过读取web.xml创建并运行servlet对象。

  servlet对象声明周期:
    1)初始化servlet对象。由对象调用init方法完成

2)servlet对象调用service方法相应用户请求

3)服务器关闭,调用destroy方法,销毁servlet对象

3 访问servlet

   表单访问;浏览器直接访问;超链接访问

   其实servlet对象调用service中,首先检查请求类型(get/post等)然后调用相应的方法doPost或doGet,所以可以在servlet类中重写doPost或doGet来响应用户请求。

4 重定向和转发

   两种:voidsendRedirect(String location)是HttpServletResponse类中的方法;

        Public RequestDispatcher getRequestDispatcher(java.lang.String path)request对象可以调用,然后调用RequestDispatcher类中的forward(ServletRequestrequest,ServletResponse response)方法

使用第二种方法,可以获得request中的参数

5 使用session

   servlet对象获取session对象:request调用HttpSessionsession=request.getSession(true);

 练习1:计算用户输入的正整数的因子

访问页面

<%@page contentType="text/html; charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=3>
<FORM action="getNumber" method="post">
输入一个正整数:<INPUT type=text name="number" value=0>
<BR><INPUT type="submit" value="提交" name="submit">
</FORM>
</FONT></BODY></HTML> 
servlet类代码

package china.dalian;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Computer extends HttpServlet{
  String servletName;
  public void init(ServletConfig config)throws ServletException{
    super.init(config);
	servletName=getServletName();
  }
  public void service(HttpServletRequest request, HttpServletResponse response)
   throws IOException{
    response.setContentType("text/html;charset=GB2312");
	PrintWriter out=response.getWriter();
	out.println("<html><body>");
	String str=request.getParameter("number");
	out.print("我是一个servlet对象"+servletName+"。<BR>");
	out.print("我负责计算"+str+"的因子:<BR>");
	int n=0;
	try{
	 n=Integer.parseInt(str);
	 for(int i=1;i<=n;i++){
	    if(n%i==0)
		out.println(" "+i);
	 }
	}
	catch(NumberFormatException e){
	  out.print(" "+e);
	 }
	 out.println("</body></html>");
	}
}

还需要修改web.xml

 <servlet>
  <servlet-name>computer</servlet-name>
  <servlet-class>china.dalian.Computer</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>computer</servlet-name>
	<url-pattern>/getNumber</url-pattern>
 </servlet-mapping>



 

你可能感兴趣的:(tomcat,jsp,servlet,String,service,web应用开发)