Servlet&JSP

1、JSP和servlet区别?

  • Servlet没有内置对象,JSP中的内置对象都需要由程序显示创建。
  • 对于静态的HTML标签,Servlet都必须使用页面输出流逐行输出。
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'form.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <form id = "form1" method = "post" action = "firstServlet" >
          用户名:<br>
          <input type="texy" name="name"><hr>
         性别:<br>
         	男:<input type="radio" name="gender" value="男">
        	 女:<input type="radio" name="gender" value="女">         
   <hr>
   
         喜欢的颜色:<br>
   	红:<input type="checkbox" name="color" value="红">
   	绿:<input type="checkbox" name="color" value="绿">
   	蓝:<input type="checkbox" name="color" value="蓝">
   	黄:<input type="checkbox" name="color" value="黄">
   	粉:<input type="checkbox" name="color" value="粉">
    <hr>
    
         来自的国家:<br>
    <select name="country">
    	<option value="中国">中国</option>
    	<option value="日本">日本</option>
    	<option value="美国">美国</option>
    </select>
    <hr>
    
    <input type="submit" value="提交">
    <input type="reset" value="重置" >
    
    </form>
  </body>
</html>

web.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>form.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  	<servlet-name>firstServlet</servlet-name>
    <servlet-class>FirstServlet</servlet-class>
  </servlet>
  <servlet-mapping>
 	<servlet-name>firstServlet</servlet-name>
    <url-pattern>/firstServlet</url-pattern>
  </servlet-mapping>
</web-app>

Servlet类:

import java.io.IOException;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class FirstServlet extends HttpServlet{
	
	public void service(HttpServletRequest request, HttpServletResponse response) {
		try {
			//设置解码方式
			request.setCharacterEncoding("GBK");
			String name = request.getParameter("name");
			String gender = request.getParameter("gender");
			String[] color = request.getParameterValues("color");
			String national = request.getParameter("country");
			PrintStream out = new PrintStream(response.getOutputStream());
			out.println("<!DOCTYPE HTML PUBLIC \"" 
					+ "-//W3C//DTD HTML 4.01 Transitional//EN \">");
			out.println("<HTML>");
			out.println("<HEAD>");
			out.println("<TITLE>servlet测试</TITLE>");
			out.println("<BODY>");
			out.println("您的名字: " + name + "<hr>");
			out.println("您的性别: " + gender + "<hr>");
			out.println("您喜欢的颜色: ");
			for (String c:color) {
				out.println(c + "  ");
			}
			out.println("<hr>");
			out.println("您来自的国家: " + national + "<hr>");
			out.println("<BODY>");
			out.println("<HTML>");
			
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
}


在浏览器输入:http://localhost:8080/test/form.jsp
显示如下:

用户名:

性别:
男: 女:
喜欢的颜色:
红: 绿: 蓝: 黄: 粉:
来自的国家:

 



点击提交结果如下:
浏览器显示地址:http://localhost:8080/test/form.jsp

您的名字: 二萌
您的性别: 女
您喜欢的颜色: 红 蓝
您来自的国家: 中国


配置Servlet需要配置两个部分:

  • 配置Servlet的名字:对应web.xml文件中的<servlet/>元素
  • 配置Servlet的URL:对应web.xml文件中的<servlet-mapping/>元素
Servlet的生命周期
Servlet在容器中运行,其实例的创建及销毁等都不是由程序员决定的,而是由容器进行控制的。

创建Servlet实例有两个时机:
  • 客户端第一次请求某个Servlet时,系统创建该Servlet的实例,
  • web应用启动时立即创建Servlet实例,即load-on-startup Servlet。
Servlet生命周期:
  • 创建Servlet实例。
  • Web容器调用Servlet的init方法,对Servlet进行初始化。
  • Servlet初始化后,将一直存在于容器中,用于响应客户端请求。
  • Web容器决定销毁Servlet时,先调用Servlet的destroy方法,通常在关闭Web应用之时销毁Servlet。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章