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>
<?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
性別:
男: 女:
喜歡的顏色:
紅: 綠: 藍: 黃: 粉:
來自的國家:
您的性別: 女
您喜歡的顏色: 紅 藍
您來自的國家: 中國
- 配置Servlet的名字:對應web.xml文件中的<servlet/>元素
- 配置Servlet的URL:對應web.xml文件中的<servlet-mapping/>元素
- 客戶端第一次請求某個Servlet時,系統創建該Servlet的實例,
- web應用啓動時立即創建Servlet實例,即load-on-startup Servlet。
- 創建Servlet實例。
- Web容器調用Servlet的init方法,對Servlet進行初始化。
- Servlet初始化後,將一直存在於容器中,用於響應客戶端請求。
- Web容器決定銷燬Servlet時,先調用Servlet的destroy方法,通常在關閉Web應用之時銷燬Servlet。