标签:
Servlet是一种运行于服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面
它担当客户请求与服务器响应的中间层 。
在JSP技术未问世以前,Servlet和Applet分别是Java在服务器段和客户端所推广的解决方案,两者相辅相成,各占优势。
Servlet是在Java代码中嵌入页面代码,JSP是在页面代码中嵌入Java代码
JSP不能执行,必须转译成Servlet并编译成class后才能执行
Servlet是学好JSP的基础,能了解JSP的底层运作方式。
httpServlet中各种接受请求处理的方法。
package com.mipo.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * API中提供了两种不同类型的servlet类,可根据需要决定继承哪个servlet来实现。 * 一般继承HttpServlet * 创建步骤: * 1、创建自定义servlet类继承的父类 * 2、实现init()方法进行初始化设置 * 3、根据客户端请求方式决定用doXXX()方法 * 4、在destroy()中进行善后处理工作 */ public class Login extends HttpServlet { private static final long serialVersionUID = 1L; //初始化方法 @Override public void init(ServletConfig config) throws ServletException { super.init(config); String initParameter = config.getInitParameter("name"); } //构造方法 public Login() { super(); } /* get提交方式的编码 修改tomcat安装目录\conf\server.xml中: <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> 中加入属性URIEncoding=“编码类型"后重启服务器 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String qq = request.getParameter("qq"); String sex = request.getParameter("sex"); String hobby[] = request.getParameterValues("hobby"); String country = request.getParameter("country"); PrintWriter out = response.getWriter(); out.println("你的QQ号是:"+qq); out.println("你的性别是:"+sex); out.println("你的爱好是:"); for(int i=0;i<hobby.length;i++) { out.print(hobby[i]+"\t"); } out.println("你的国籍是:"+country); } //从http得到post请求并回复 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //setCharacterEncoding(String EncodingCode)该方法用于设置接收参数的编码类型,仅适用于post提交方式 request.setCharacterEncoding("UTF-8"); //String getParameter(String CtlName)方法:可取得用户在表单或URL中向服务器传送的相应参数, //其中的CtlName代表html表单中控件的名称或在URL地址中传递的参数的名称 String name = request.getParameter("text"); String pwd = request.getParameter("pwd"); //void setContentType(String TYPE)方法:设置输出流的数据类型。 //向客户端回应一个超文本文件,其编码为charset所指定的编码。 response.setContentType("text/html; charset=UTF-8"); //PrintWriter getWriter()方法:获得向客户端进行文本输出的控制流 //ServletOutputStream getOutputStream()方法: 获得向客户端输出二进制数据的控制流 PrintWriter writer = response.getWriter(); if(name.equals("韩非") && pwd.equals("123456")) { writer.println("<font color=blue>"+name+",欢迎回来"+"</font><br>"); ServletContext sc = getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher("/personinfo.jsp"); rd.forward(request, response); }else { writer.println("<font color=red>"+"登录失败"+"</font>"); } } //释放资源 @Override public void destroy() { // TODO Auto-generated method stub super.destroy(); } }
在web.xml文件中配置<servlet>和<servlet-mapping>
<servlet> <servlet-name>Servlet的名称</servlet-name> <servlet-class>该servlet类的路径</servlet-class> <init-param> <param-name>参数名</param-name> <param-value>参数值</param-value> </init-param> <jsp-file>/路径/XXX.JSP </jsp-file> <load-on-startup>表示web站台被启动时,自动加载该servlet的 优先级别,越小越优先加载 </load-on-startup> </servlet>
<servlet-mapping> <servlet-name>对应的servlet-name名称</servlet-name> <url-pattern>在项目运行时用以访问的URL </url-pattern> </servlet-mapping> url-pattern 取值: 1、可以与具体的某个Servlet对应。 2、也可以用/* 来指定所有的页面。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>JavaServerPages详解</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <description></description> <display-name>Login</display-name> <!-- Servlet的名称 --> <servlet-name>Login</servlet-name> <!-- 该Servelet类的路径 --> <servlet-class>com.mipo.servlet.Login</servlet-class> <init-param> <!-- 参数名 --> <param-name>encoding</param-name> <!-- 参数值 --> <param-value>UTF-8</param-value> </init-param> </servlet> <servlet-mapping> <!-- 对应的servlet-name名称 --> <servlet-name>Login</servlet-name> <!-- 在项目运行时用于访问的URL --> <!-- url-pattern取值:1、可以与具体的某个servlet对应 2、也可以用/*来指定所有的页面 --> <url-pattern>/Login</url-pattern> </servlet-mapping> </web-app>
每个servlet实例的生命周期中只有三种类型的事情,分别对应于由servlet容器所调用的三个方法:
当servlet第一次被装载的时候由servlet容器调用init(),且只调用一次,默认情况下调用超类的init()方法。
接受客户请求并决定调用何种doXXX方法,并将处理结果返回到客户端。
为可选方法,释放不用的servlet实例所占内存和资源。
Servlet的生命周期可以归纳为以下几步
标签:
原文地址:http://blog.csdn.net/qq_34416191/article/details/51934402