Java Servlet基础


Servlet就是运行在服务器端的应用程序,Servlet接收来自客户端的请求,将处理结果返回给客户端
Servlet的优点:跨平台、速度快且性能更佳、可扩展、安全、可用于各种客户端。
Servlet是一种在服务器端运行的Java程序,从某种意义上说,它就是服务器端的Applet。

servlet的部署、创建与运行

Servlet与JSP的区别

  • 编程方式不同
  • Servlet中没有内置对象,对于静态的HTML标签,Servlet都必须使用页面输出流逐行输出。
  • Servlet必须在编译以后才能执行
  • 运行速度不同

Servlet的开发

如果有一些资源需要在Servlet启动时初始化,或关闭时销毁资源,必须重写init()和destroy()方法
如果重写了init(),应在第一行调用super.init(config)。该方法将调用HttpServlet的init方法。
(1)import两个包

import javax.servlet.*;
import javax.servlet.http.*;

(2)字节码保存
字节码文件在moon\sun中,则保存到\WEB-INF\classes\moon\sun中,“保存类型”为“所有文件”,“编码”为“ANSI”

(3)步骤
编写servlet类
在web.xml中配置servlet或者在servlet类中使用@WebServlet标注进行配置

package servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
//Servlet3.0标注:
@WebServlet(/HelloWorldServlet”)
public class HelloWorldServlet extends HttpServlet
{
       public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
    {
		response.setContentType("text/html;charset=gb2312");
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<head>");
		out.println("<title>HelloWorld</title>");
		out.println("</head>");
		out.println("<body bgcolor=\"white\">");
		out.println("<hr>");
		out.println("HelloWorld");
		out.println("你好!世界");
		out.println("</body></html>");
    }
    public void doPost(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
    {
           doGet(request,response);
    }
        
}

配置:@WebServlet(“/HelloWorldServlet”)

servlet工作原理

一个servlet的生命周期

(1)初始化servlet。第一次被请求加载时,初始化这个servlet,即创建一个servlet,调用init方法完成初始化工作。(init只在第一次加载时被调用)
(2)新诞生的servlet再调用service()响应用户的请求。
(3)服务器关闭时,调用destroy销毁servlet

通过JSP页面访问servlet

(1)web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app>
	<servlet>
		<servlet-name>computer</servlet-name>
		<servlet-class>star.moon.Computer</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>computer</servlet-name>
		<url-pattern>/getResult</url-pattern>
	</servlet-mapping>
</web-app>

computer为部署的servlet的名字,star.moon.Computer是servlet类文件

(2)表单提交的页面,结果提交到getResult.jsp

<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY ><FONT size=2>
<P>输入一个数,servlet求这个数的平方根:
<FORM action="getResult" method=post>
  <Input type=text name=number>
  <Input type=submit value="提交">
</FORM></BODY></HTML>

(3)getResult.jsp

package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Computer extends HttpServlet{
   public void init(ServletConfig config) throws ServletException{
      super.init(config);
   }
   public void service(HttpServletRequest request,HttpServletResponse response)
                       throws IOException {    
       response.setContentType("text/html;charset=GB2312");
       PrintWriter out=response.getWriter();
       out.println("<html><body>");
       String number=request.getParameter("number");     //获取客户提交的信息
       double n=0;
       try{  n=Double.parseDouble(number);
            out.print("<BR>"+number+"的平方根是:");
            out.print("<BR>"+Math.sqrt(n));
       }
       catch(NumberFormatException e) { out.print("<H1>请输入数字字符! </H1>"); }       
       out.println("</body></html>");
   } 
}

doGet 和doPost方法

用来处理用户的请求并作出响应,如果get或post,tomcat服务器的处理过程完全相同,那么可以只在其中一个方法中编写处理过程,再在另外一个方法中调用此方法即可。
如果get和post类型的请求进行的处理过程不同,则需要在两个方法中分别编写。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值