stanford-oval/wikipedia huggingface dataset:
Người Dukha

Một phụ nữ người Dukha với các vật dụng từ tuần lộc
Người Dukha (tiếng Mông Cổ: Цаатан, Tsaatan) là một nhóm nhỏ người Tuva (Tozhu Tuva) thuộc nhóm người Thổ (Turkic) và là cộng đồng chăn nuôi tuần lộc sống ở vùng Đông Bắc tỉnh Khövsgöl của Mông Cổ. Đây là bộ lạc du mục chăn nuôi tuần lộc và đi săn trong những cánh rừng tại dãy núi Sayan hiểm trở vùng biên giới Mông Cổ-Nga. Đây là một trong những bộ tộc du mục cuối cùng và là bộ lạc chăn nuôi tuần lộc di cư cuối cùng ở Mông Cổ, bộ tộc này ước tính chỉ còn lại khoảng 200-400 người và số tuần lộc cũng đã giảm đi rất nhiều.
Đời sống

Bộ tộc chăn tuần lộc ở Mông Cổ Tsaatan là sống ở những vùng núi tuyết giá lạnh với điều kiện sinh hoạt hết sức nghèo nàn và cách biệt với cuộc sống hiện đại ở vùng cực bắc của Mông Cổ, nơi nhiệt độ có lúc giảm xuống -50 độ C, nơi xa xôi hẻo lánh, nhưng là một phần đặc biệt của thế giới. Vùng đất ấy có những cánh rừng bạt ngàn phủ đầy băng tuyết, những đàn sói hoang dã ban đêm vẫn hú lên tiếng vọng gọi bầy, những cung đường xóc, bùn lầy và sa mạc chỉ có thể vượt qua bằng ngựa, người Dukha đã chăn nuôi và thuần hóa tuần lộc không phải chỉ là thói quen mà đã trở thành truyền thống, một nét văn hóa độc đáo tượng trưng cho người Dukha.
Sống du mục quanh năm, những người Dukha có thể chịu đựng thời tiết lạnh giá lạnh trong rừng. Cả bộ lạc nay chỉ còn 200-400 người với nguồn thu nhập chính đến từ du lịch. Họ bán đồ thủ công hay cho thuê cưỡi tuần lộc. Cuộc sống du mục luôn di chuyển và thời tiết lạnh giá khiến tộc người này khó có thể trồng trọt hay kiếm được nguồn thực phẩm nào khác nên hầu như mọi thứ đều trông chờ vào đàn tuần lộc, họ chăn nuôi chúng để lấy sữa, pho mát và thịt làm thực phẩm, dùng chúng làm phương tiện đi lại, di chuyển hoặc trao đổi lương thực với nhau.
Thức ăn chủ yếu của người Dukha là sữa, thịt tuần lộc và các món bánh từ bột mì. Cuộc sống du mục luôn di chuyển cùng khí hậu lạnh giá khiến họ khó có thể trồng trọt hay kiếm được nguồn thực phẩm nào khác. Do quá phụ thuộc vào động vật này, cuộc sống của người Dukha cũng đang bị đe dọa khi số lượng tuần lộc ngày một giảm đi, sự tồn tại của họ đang bị đe dọa bởi sự suy giảm của số tuần lộc thuần chủng, hiện nay chỉ có khoảng 40 gia đình tiếp tục truyền thống này như một quần thể chăn tuần lộc thu nhỏ.
Kinh tế

Công việc chính hằng ngày của người Dukha là chăn nuôi tuần lộc. Họ chăn nuôi tuần lộc và sống trong những chiếc lều dựng tạm trên tuyết, nguồn thực phẩm chính của người Dukha lại đến từ việc săn thú rừng và uống sữa tuần lộc. Một số người Tsaatan nuôi tuần lộc để lấy sữa, pho mát và làm phương tiện đi lại mà không lấy thịt của chúng, họ cũng dùng phân tuần lộc để nhóm lò Họ chăn nuôi tuần lộc, sống cuộc sống du mục bên đàn gia súc, ăn bánh mì khô, uống sữa tuần lộc, sống và ngủ trong những chiếc lều dựng tạm trên tuyết. Người Tsaatan thường chăn tuần lộc theo hình thức du mục ở các khu rừng tuyết có nhiệt độ lên tới -50 độ C, tại rừng taiga, họ vẫn tiếp tục chăn thả hàng trăm con tuần lộc trên những khu đất trống.
Không chỉ chăn nuôi tuần lộc, người Dukha còn kiếm sống nhờ vào việc săn bắt thú rừng như nai sừng tấm hay hươu đỏ để lấy thịt và da, sau đó đem đi bán. Người Dukha vẫn thường xuyên sinh sống, săn bắn trong khu rừng mà họ tin là nơi trú ngụ của các thế lực siêu nhiên, dân địa phương săn lùng các loài như nai sừng tấm và hươu đỏ cho thị trường Trung Quốc, khiến số lượng động vật suy giảm trầm trọng họ còn kiếm thêm thu nhập nhờ việc săn bắt các loài động vật hoang dã như nai sừng tấm, hươu đỏ và hươu xạ trong rừng, để lấy da và thịt đem bán, việc săn bắt của người Dukha đã có sự giới hạn khi lệnh cấm săn bắt các loại thú rừng để bảo vệ thiên nhiên do những quy định về hạn ngạch săn bắt từ thời Liên Xô (cũ) nhằm bảo đảm duy trì số lượng động vật hoang dã bị hủy bỏ, nên việc săn bắt trở nên quá mức gây ra những hậu quả nghiêm trọng cho thiên nhiên.
Tương lai

Cuộc sống hiện đại cùng nỗ lực bảo tồn hệ sinh thái của chính phủ Mông Cổ khiến tộc người chăn tuần lộc Dukha lạc hướng trong cố gắng duy trì truyền thống dân tộc. Cả thảy 280 người Dukha trong 59 hộ gia đình đang phải đối mặt với nguy cơ đánh mất bản sắc khi lệnh bảo tồn do chính phủ ban hành cấm mọi hành vi săn bắn trái phép trên vùng đất truyền thống của họ. Năm 2012, chính phủ Mông Cổ chỉ định phần lớn đất của người Dukha là một phần của dự án công viên quốc gia nhằm bảo vệ hệ sinh thái bị tàn phá trong nhiều thập niên trước. Chính phủ đang trợ cấp hàng tháng cho người chăn tuần lộc để đền bù cho lệnh cấm săn bắt
Chính phủ Mông Cổ quyết định bổ sung một phần lớn diện tích đất ở phía Bắc đất nước vào khu vực được bảo tồn nhằm bảo vệ hệ sinh thái Mông Cổ bị tàn phá nặng nề trong nhiều năm trước. Điều đó đồng nghĩa với việc cấm săn bắn, chăn nuôi. Trong khi đó, nguồn thực phẩm chính của người Dukha lại đến từ việc săn thú rừng và uống sữa tuần lộc. Chính phủ đã trích một khoản tiền để trả cho các gia đình bị ảnh hưởng. Các gia đình này sử dụng số tiền đó để chuyển đến các ngôi làng, nơi con em họ được đi học, có bệnh viện, đường xá và chấm dứt cuộc sống du mục với đàn tuần lộc và những túp lều trong rừng. Nhiều gia đình đã chuyển đến sống định cư tại một số ngôi làng có trường học, bệnh viện và cho con cái đi học.
Thelypteris linnaeana

| Thelypteris linnaeana> Phân loại khoa học |
| --- | --- |
Giới (regnum): Plantae
Ngành (divisio): Pteridophyta
Lớp (class): Polypodiopsida
Bộ (ordo): Polypodiales
Họ (familia): Thelypteridaceae
Chi (genus): Thelypteris
Loài (species): T. linnaeana
Danh pháp hai phần
Thelypteris linnaeana C.F.Reed, 1968 
Thelypteris linnaeana là một loài dương xỉ trong họ Thelypteridaceae. Loài này được C.F.Reed mô tả khoa học đầu tiên năm 1968.
Danh pháp khoa học của loài này chưa được làm sáng tỏ.
Chú thích

↑  The Plant List (2010). “Thelypteris linnaeana”. Truy cập ngày 28 tháng 5 năm 2014.
Pilea verrucosa

| Pilea verrucosa> Phân loại khoa học |
| --- | --- |
Giới (regnum): Plantae
(không phân hạng): Angiospermae
(không phân hạng): Eudicots
Bộ (ordo): Rosales
Họ (familia): Urticaceae
Chi (genus): Pilea
Loài (species): P. verrucosa
Danh pháp hai phần
Pilea verrucosa Killip, 1925 
Pilea verrucosa là loài thực vật có hoa trong họ Tầm ma. Loài này được Killip miêu tả khoa học đầu tiên năm 1925.
Chú thích

↑  The Plant List (2010). “Pilea verrucosa”. Truy cập ngày 13 tháng 6 năm 2013.
Pediarcha singularis

| Pediarcha singularis> Phân loại khoa học |
| --- | --- |
Giới (regnum): Animalia
Ngành (phylum): Arthropoda
Lớp (class): Insecta
Bộ (ordo): Lepidoptera
Họ (familia): Noctuidae
Chi (genus): Pediarcha
Loài (species): P. singularis
Danh pháp hai phần
Pediarcha singularis Turner, 1936 
Pediarcha singularis là một loài bướm đêm trong họ Noctuidae.
Chú thích

↑  Bisby, F.A.; Roskov, Y.R.; Orrell, T.M.; Nicolson, D.; Paglinawan, L.E.; Bailly, N.; Kirk, P.M.; Bourgoin, T.; Baillargeon, G.; Ouvrard, D. (2011). “Species 2000 & ITIS Catalogue of Life: 2011 Annual Checklist”. Species 2000: Reading, UK. Truy cập ngày 28 tháng 6 năm 2014.
↑  Beccaloni, G. W., Scoble, M. J., Robinson, G. S. & Pitkin, B. (Editors). (2003) The Global Lepidoptera Names Index (LepIndex). (Geraadpleegd maart 2013).
JSP

Jakarta Server Pages (JSP; trước đây là JavaServer Pages) là một bộ công nghệ giúp các nhà phát triển phần mềm tạo ra các trang web động dựa trên HTML, XML, SOAP hay các loại tài liệu khác. Được phát hành vào năm 1999 bởi Sun Microsystems, JSP tương tự như PHP và ASP, nhưng sử dụng ngôn ngữ lập trình Java.
Để triển khai và chạy Jakarta Server Pages, cần có một máy chủ web tương thích với servlet container, ví dụ như Apache Tomcat hoặc Jetty.
Tổng quan

Về mặt kiến trúc, JSP có thể được coi là một trừu tượng cấp cao của Java servlets. JSP được dịch thành các servlet tại thời gian chạy, do đó JSP chính là một Servlet; mỗi servlet JSP được lưu trữ trong bộ nhớ cache và tái sử dụng cho đến khi JSP gốc bị sửa đổi.
Jakarta Server Pages có thể được sử dụng độc lập hoặc như thành phần chế độ xem của một thiết kế MVC ở phía máy chủ, thường với JavaBeans làm model và Java servlets (hoặc một hệ khung như Apache Struts) làm controller. Đây là một loại kiến trúc Model 2.
JSP cho phép mã Java và một số hành động xử lý đã được định trước nằm xen kẽ với nội dung tĩnh của trang web, ví dụ như HTML. Trang kết quả được biên dịch và thực thi trên máy chủ để cung cấp một tài liệu. Các trang biên dịch, cũng như các thư viện Java phụ thuộc, chứa mã bytecode Java thay vì mã máy. Giống như bất kỳ .jar hoặc chương trình Java nào khác, mã phải được thực thi trong một Máy ảo Java (JVM) có tương tác với hệ điều hành của máy chủ để cung cấp môi trường trừu tượng, độc lập với nền tảng.
JSP thường được sử dụng để cung cấp tài liệu HTML và XML, nhưng thông qua việc sử dụng OutputStream, chúng cũng có thể cung cấp các loại dữ liệu khác.
Web container tạo ra các đối tượng ngầm định JSP như request, response, session, application, config, page, pageContext, out và exception. JSP Engine tạo ra những đối tượng này trong quá trình biên dịch.
JSP và Servlet

Về mặt kiến trúc mà nói, ta có thể xem JSP là một trừu tượng ở mức độ cao của servlet, một phần mở rộng thực thi của Servlet 2.1 API. Cả hai, servlet và, đều nguyên do công ty Sun Microsystems tạo dựng. Bắt đầu từ phiên bản 1.2 đặc tả của JSP, JavaServer Pages đã được xây dựng do Tiến trình cộng đồng Java (Java Community Process). JSR 53 - Java Specification Requests hay "Yêu cầu đặc tả cho Java" - định nghĩa bản đặc tả của cả hai, JSP 1.2 và Servlet 2.4, và JSR 152 định nghĩa bản đặc tả JSP 2.0. Tại thời điểm năm 2006 bản đặc tả JSP 2.1 được xây dựng trên nền của yêu cầu JSR 245.
Cú pháp JSP

Một trang JSP có thể được phân thành từng phần nhỏ như sau:
dữ liệu tĩnh, như HTML
các chỉ thị JSP (JSP directives) như chỉ thị include: <jsp:include>
các phần tử kịch bản JSP (scripting elements) và các biến (variables), ví dụ:
hành động JSP (JSP actions)
thẻ tùy biến (custom tags)
Cú pháp JSP > Dữ liệu tĩnh

Vì dữ liệu tĩnh được viết ra trong phần hồi âm HTTP (HTTP response) cũng giống như nó được viết trong tập tin nhận vào (input file), cho nên dữ liệu nhập hợp lệ của JSP thường là một trang HTML bình thường, không có mã java hoặc hành động JSP nhúng trong đó. Với dữ liệu tĩnh này, bất cứ lúc nào trình chủ web hồi âm, trình chủ web cũng sẽ gửi cùng một dữ liệu sang trang trình khách.
Cú pháp JSP > Các chỉ phối JSP

Chỉ phối JSP (JSP directives) điều khiển cách mà bộ biên dịch JSP khởi tạo một servlet. Các chỉ phối hiện có được liệt kê như sau:
include – Chỉ phối include  thông báo cho bộ biên dịch JSP cho nhập toàn bộ nội dung của một tập tin vào trong nội dung hiện có. Việc làm này tương tự như việc chúng ta lấy nội dung của tập tin đó dán trực tiếp vào trong nội dung của tập tin đang dùng. Tính năng này cũng tương tự như tính năng "#include" của Bộ tiền xử lý C (C preprocessor). Tập tin được nhập thường có đuôi mở rộng (extension) là "jspf" (do JSP Fragment (mảnh, đoạn) mà ra):
<%@ include file="somefile.ext" %>
page (Trang) – Có nhiều tùy chọn với chỉ phối page.
<%@ page import="java.util.*" %> //example import
  <%@ page contentType="text/html" %> //example contentType
  <%@ page isErrorPage=false %> //example for non error page
  <%@ page isThreadSafe=true %> //example for a thread safe JSP
Chú ý: Chỉ có chỉ phối trang "import" là có thể được dùng nhiều lần trong cùng một trang JSP.
taglib – Chỉ phối taglib thông báo rằng chúng ta sẽ sử dụng một thư viện thẻ JSP (JSP tag library). Chỉ phối này đòi hỏi một tiền tố (prefix) (tương tự như namespace trong C++), cũng như kết nối URI của phần mô tả thư viện thẻ (URI for the tag library description) phải được xác định.
<%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %>
Cú pháp JSP > Các thành phần trong văn lệnh JSP và các biến > Các biến văn lệnh tiêu chuẩn

Các biến văn lệnh (scripting variables) sau có thể dùng lúc nào cũng được:
out (xuất) – JSPWriter sử dụng nó để ghi dữ liệu vào luồng dữ liệu hồi âm (response stream).
page (trang) – Bản thân servlet.
pageContext (ngữ cảnh của trang) – Một PageContext là một thực thể có chứa dữ liệu liên kết với toàn bộ trang web. Một trang HTML nào đấy có thể được truyền qua nhiều trang JSP.
request (yêu cầu ) – Đối tượng HTTP request
response (hồi âm ) – Đối tượng HTTP response
session (phiên giao dịch ) – Đối tượng HTTP session. Cái này có thể được dùng để theo dõi tin tức về một người dùng, từ yêu cầu này đến yêu cầu khác.
Cú pháp JSP > Các thành phần trong văn lệnh JSP và các biến > Các thành phần trong văn lệnh

Có 3 thành phần chính trong văn lệnh. Chúng cho phép mã Java được chèn (insert) trực tiếp vào trong servlet.
Một thẻ khai báo (declaration tag) đặt định nghĩa của một biến vào trong lòng phần thân lớp servlet của Java (java servlet class). Những thành viên dữ liệu tĩnh (Static data members) cũng có thể được định nghĩa ở đây nữa.
<%! int serverInstanceVariable = 1; %>
Một thẻ văn lệnh con (scriptlet tag) đặt những câu lệnh đã được bao gọn (contained statements) vào trong phương thức _jspService() của lớp servlet của java.
<% int localStackBasedVariable = 1;
       out.println(localStackBasedVariable); %>
Một thẻ biểu thức (expression tag) đặt một biểu thức cần phải được tính toán (evaluate) vào trong lớp servlet của java. Không nên kết thúc biểu thức bằng một dấu chấm phẩy (semi-colon - ";").
<%= "expanded inline data " + 1 %>
Cú pháp JSP > Các hành động của JSP

Hành động JSP là các thẻ XML được dùng để khởi động chức năng mà máy chủ web vốn có. Những hành động sau đây được cung cấp:
Cú pháp JSP > Các hành động của JSP > Ví dụ về các thẻ > jsp:include

<html>
<head></head>
<body>
<jsp:include page="mycommon.jsp" >
  <jsp:param name="extraparam" value="myvalue" />
</jsp:include>
name:<%=request.getParameter("extraparam")%>
</body></html>
Cú pháp JSP > Các hành động của JSP > Ví dụ về các thẻ > jsp:forward

<jsp:forward page="subpage.jsp" >
 <jsp:param name="forwardedFrom" value="this.jsp" />
</jsp:forward>
Trong ví dụ tiếp tới này, yêu cầu được chuyển về phía trước tới "subpage.jsp". Thao tác xử lý yêu cầu không quay trở lại trang này.
Cú pháp JSP > Các hành động của JSP > Ví dụ về các thẻ > jsp:plugin

<jsp:plugin type=applet height="100%" width="100%"
   archive="myjarfile.jar,myotherjar.jar"
   codebase="/applets"
   code="com.foo.MyApplet" >
 <jsp:params>
  <jsp:param name="enableDebug" value="true" />
 </jsp:params>
 <jsp:fallback>
  Trình duyệt web của bạn không hỗ trợ những applet này.
 </jsp:fallback>
</jsp:plugin>
Ví dụ plugin trên minh họa một phương pháp đồng bộ để nhúng applet trong một trang web. Trước khi thẻ <OBJECT> được tạo ra, chưa có một phương pháp chung nào cho phép người ta nhúng các applet cả. Thiết kế của thẻ này tương đối nghèo nàn. Hy vọng những đặc tả của nó trong tương lai sẽ cho phép những cái như đặc tính năng động (dynamic attributes) (height="${param.height}", code="${chart}" v.v.) và thông số năng động (dynamic parameters). Hiện này, thẻ jsp:plugin không cho phép dùng những applet khởi động một cách năng động. Chẳng hạn, nếu chúng ta có một applet biểu hiện đồ thị và nó cần có các dữ liệu về tọa độ được truyền cho nó thông qua các thông số, chúng ta không thể dùng jsp:params, trừ phi số điểm tọa độ là một số cố định. Chúng ta không thể, ví dụ, luân chuyển qua danh sách loạt kết quả (ResultSet) để kiến tạo các thẻ jsp:param. Chúng ta phải tự tính toán cho từng cái thẻ jsp:param một. Đương nhiên, mỗi một thẻ jsp:param ấy có thể có một cái tên và một giá trị tùy định.
Cú pháp JSP > Các hành động của JSP > Ví dụ về các thẻ > jsp:useBean

<jsp:useBean id="myBean" class="com.foo.MyBean" scope="request" />
<jsp:getProperty name="myBean" property="lastChanged" />
<jsp:setProperty name="myBean" property="lastChanged" value="<%= new Date()%>" />
Những thuộc tính về phạm vi ảnh hưởng (scope attribute) có thể là yêu cầu (request), trang (page), phiên giao dịch (session), hoặc trình ứng dụng (application). Ý nghĩa của các thuộc tính như sau:
yêu cầu (request) — thuộc tính này kéo dài trong toàn bộ thời gian tồn tại của yêu cầu (lifetime of the request). Một khi yêu cầu đã được tất cả cácc trang JSP xử lý, thuộc tính sẽ mất điểm tham chiếu (de-referenced).
trang (page) — thuộc tính chỉ được dùng trong trang hiện tại mà thôi.
phiên giao dịch (session) — thuộc tính được dùng trong toàn bộ thời gian tồn tại phiên giao dịch của người dùng.
trình ứng dụng (application) — thuộc tính có thể được dùng bởi tất cả các thực thể (instance) và sẽ không bao giờ mất điểm tham chiếu. Tương tự như một biến toàn cục (global variable).
Ví dụ trên sử dụng Chương trình quản lý Bean (Bean Manager) để tạo một thực thể (instance) của lớp com.foo.MyBean và lưu trữ thực thể trong thuộc tính (attribute) có tên là "myBean". Thuộc tính tồn tại trong toàn bộ thời gian của yêu cầu. Nó có thể được chia sẻ giữa tất cả các trang JSP đã được bao gồm hay những trang được chuyển về phía trước từ trang JSP nhận yêu cầu đầu tiên.
Cú pháp JSP > Thư viện thẻ JSP

Cùng với các hành động JSP định sẵn, các nhà phát triển có thể thêm vào các hành động tùy biến của họ dùng các hàm API của JSP hỗ trợ cho việc mở rộng thẻ (JSP Tag Extension API). Các nhà phát triển sẽ viết một lớp Java (class) để thực thi một trong các thẻ giao diện (Tag interfaces) và cung cấp một tập tin chứa mô tả XML về thư viện thẻ. Tập tin này được dùng để xác định các thẻ và các lớp Java (java classes) thực hiện các thẻ đó.
Xem xét ví dụ sau:
<%@ taglib uri="mytaglib.tld" prefix="myprefix" %>
...
<myprefix:myaction> <%-- thẻ mở đầu %>
...
</myprefix:myaction> <%-- thẻ kết thúc %>
...
Bộ biên dịch JSP sẽ đọc tập tin XML mytaglib.tld và phát hiện rằng thẻ myaction được thực hiện bởi lớp Java (java class) tên MyActionTag (xem ở dưới). Lần đầu tiên, khi thẻ này được dùng trong tập tin JSP, nó sẽ tạo nên một thực thể (instance) của MyActionTag. Sau đó (và mỗi lần thẻ này được dùng lại), nó sẽ khởi động phương thức doStartTag() khi nó gặp thẻ "mở đầu" (start). Nó thẩm tra kết quả của thẻ "mở đầu", và quyết định phương pháp để xử lý phần thân của thẻ. Thân của thẻ là phần văn bản nằm giữa thẻ "mở đầu" và thẻ "kết thúc" (end). Phương thức doStartTag() có thể trả về một trong những hằng sau:
SKIP_BODY - Phần thân giữa thẻ không được xử lý (bỏ qua)
EVAL_BODY_INCLUDE - định giá trị phần thân của thẻ
EVAL_BODY_TAG - định giá trị phần thân của thẻ và đẩn kết quả vào luồng dữ liệu (được lưu trong thuộc tính về nội dung thân của thẻ).
Khi gặp thẻ "kết thúc", nó gọi phương thức doEndTag(). Phương thức này có thể trả lại một trong hai giá trị:
EVAL_PAGE - ám chỉ rằng phần còn lại của tập tin JSP cần phải được xử lý.
SKIP_PAGE - ám chỉ rằng không còn phần xử lý nào cần phải làm nữa. Quyền khống chế sẽ rời khỏi trang JSP. Phương pháp này được dùng trong hành động chuyển trang (forwarding action).
Thẻ myaction cần phải có một lớp (class) thực thi nó, tương tự như phần sau đây:
public class MyActionTag extends TagSupport {
 //Giải phóng mọi thực thể của biến (instance variable) - trong bộ nhớ.
 public void release() {...}

 public MyActionTag() {... }

 //gọi khi gặp thẻ "mở đầu"
 public int doStartTag() {... }

 //gọi khi gặp thẻ "kết thúc"
 public int doEndTag() {... }  
}
Quốc tế hóa

Quốc tế hóa trong JSP có thể được thực hiện tương tự như phương pháp làm trong các trình ứng dụng Java thông thường, nghĩa là bằng cách dùng gói tài nguyên (resource bundle).
Việc thay đổi ngôn ngữ thể hiện trên các trang web được thực hiện một cách đơn giản thông qua việc thay đổi đơn vị locale. Bằng cách đó, lập trình viên có thể thực hiện thay đổi nội dung, ngôn ngữ... thông qua thay đổi các resource bundle này chứ không cần trực tiếp tác động lên code của trang JSP hay code của taglib.
JSP 2.0

Phiên bản đặc tả mới của JSP bao gồm những đặc trưng mới nhằm nâng cao hiệu năng của nhà lập trình (hầu cho họ làm việc được nhanh và có kết quả hơn), gọi là:
Ngôn ngữ biểu thức (JSP Expression Language - viết tắt là JSP EL) nhằm cho phép các nhà phát triển tạo ra mẫu (templates) theo phong cách Tốc lực (Velocity) (và những cái khác nữa).
Một phương thức nhanh gọn / dễ dàng để tạo ra các thẻ mới.
Hello, ${param.visitor} <%-- giống như: Hello, <%=request.getParameter("visitor")%> --%>
Mẫu hình MVC

Sun khuyến cáo việc sử dụng mẫu hình MVC (Model-View-Controller - tạm dịch là "Mô hình dữ liệu - giao diện người dùng - lôgic điều khiển", có thể gọi ngắn là "mô hình - giao diện - điều khiển") cho các tập tin JSP để có thể tách biệt phần trình bày (presentation) khỏi phần xử lý yêu cầu (request processing) và lưu trữ dữ liệu (data storage). Hoặc là các servlets thông thường 
hoặc là các tập tin JSP phải được sử dụng để xử lý yêu cầu. Sau khi đã hoàn thành việc xử lý yêu cầu, quyền điều khiển được chuyển sang cho một trang JSP khác. Trang này chỉ được dùng để tạo xuất liệu, tức là hiển thị ở đầu ra. Hiện nay có một vài hệ nền (platforms) được tạo dựa trên nền của nguyên lý mẫu hình MVC cho các tầng máy web (web tiers) (chẳng hạn như Struts và cơ cấu Spring (Spring framework))
Ví dụ

Mặc dầu bộ biên dịch JSP kiến tạo mã nguồn Java cho servlet hoặc phát ra mã byte của Java (byte code) trực tiếp, chúng ta cũng nên hiểu quá trình bộ biên dịch JSP biến đổi một trang JSP trở thành một servlet của Java như thế nào. Chẳng hạn, chúng ta thử cân nhắc những dữ liệu nhập của JSP sau đây, và kết quả Java Servlet mà nó sinh tạo.
Trang JSP nhập vào
<%@ page errorPage="myerror.jsp" %>
 <%@ page import="com.foo.bar" %>

 <html>
 <head>
 <%! int serverInstanceVariable = 1;%>
...
 <% int localStackBasedVariable = 1; %>
 <table>
 <tr><td><%= toStringOrBlank("expanded inline data"  + 1) %></td></tr>
...
Kết quả servlet được sinh tạo
package jsp_servlet;
 import java.util.*;
 import java.io.*;
 import javax.servlet.*;
 import javax.servlet.http.*;
 import javax.servlet.jsp.*;
 import javax.servlet.jsp.tagext.*;

 import com.foo.bar; //nhập nội do kết quả của dòng <%@ page import="com.foo.bar" %>
 import...

 class _myserlvet implements javax.servlet.Servlet, javax.servlet.jsp.HttpJspPage {
     //được chèn thêm vào  
     //do kết quả của dòng <%! int serverInstanceVariable = 1;%>
     int serverInstanceVariable = 1; 
...

     public void _jspService(javax.servlet.http.HttpServletRequest request,
                              javax.servlet.http.HttpServletResponse response)
       throws javax.servlet.ServletException,
              java.io.IOException
     {
         javax.servlet.ServletConfig config =...;//lấy cấu hình của servlet vào
         Object page = this;
         PageContext pageContext =...;//lấy ngữ cảnh của trang đối với yêu cầu này 
         javax.servlet.jsp.JspWriter out = pageContext.getOut();
         HttpSession session = request.getSession(true);
         try {
             out.print("<html>\r\n");
             out.print("<head>\r\n");
    ...
             //sinh ra từ dòng <% int localStackBasedVariable = 1; %>
             int localStackBasedVariable = 1; 
    ...
             out.print("<table>\r\n");
             out.print("   <tr><td>");
             //để ý, toStringOrBlank() đổi biểu thức thành chuỗi ký tự hoặc 
             // nếu biểu thức không tồn tại (null), dùng chuỗi ký tự trống rỗng (empty string) thay thế.
             //từ dòng <%= "expanded inline data " + 1 %>
             out.print(toStringOrBlank("expanded inline data " + 1));
             out.print("   </td></tr>\r\n");
    ...
         } catch (Exception _exception) {
             //dọn dẹp sạch sẽ và chuyển hướng điều khiển tới trang báo lỗi như trong dòng <%@ page errorPage="myerror.jsp" %>
         }
    }
 }
Sách

JavaServer Pages, Third Edition, Hans Bergsten, O'Reilly & Associates, Inc., Sebastopol, California, 2003. ISBN 0-596-00563-6
Kiến trúc JSP Model 2.
Oreoneta tienshangensis

| Oreoneta tienshangensis> Phân loại khoa học |
| --- | --- |
Giới (regnum): Animalia
Ngành (phylum): Arthropoda
Phân ngành (subphylum): Chelicerata
(không phân hạng): Arachnomorpha
Lớp (class): Arachnida
Bộ (ordo): Araneae
Họ (familia): Linyphiidae
Chi (genus): Oreoneta
Loài (species): O. tienshangensis
Danh pháp hai phần
Oreoneta tienshangensis SaaristoMichael Ilmari Saaristo& Marusik, 2004 
Oreoneta tienshangensis là một loài nhện trong họ Linyphiidae.
Loài này thuộc chi Oreoneta. Oreoneta tienshangensis được Michael Ilmari Saaristo & Yuri M. Marusik miêu tả năm 2004.