J2EE
J2EE(java 2 platform Enterprise edition)是指“java 2企業版”。
web應用就是J2EE最核心的功能。
J2EE由13個功能模塊:
- Servlet web服務器小程序。
- JSP 服務器頁面。
- JDBC 數據庫交互模塊。
- XML XML交互模塊。
- EJB 企業級Java Bean。
- RMI 遠程調用。
- JNDI 目錄服務。
- JMS 消息服務。
- JTA 事務管理。
- JavaMail 發送/接收email
- JAF 安全框架
- CORBA CORBA集成
- JTS CORBA事務監控
Apache Tomcat
Tomcat是Apache 軟件基金會旗下一款免費的開放源代碼的web應用服務器程序。
Tomcat是運行Servlet()的容器。
Tomcat下載、安裝
下載
下載後解壓。進入文件夾內的bin文件夾啓動cmd,使用startup.bat命令啓動。
瀏覽器打開http://localhost:8080/
IDEA配置Tomcat
J2EE和Tomcat的關係
J2EE是一組技術規範與指南,具體實現由軟件廠商決定。
Tomcat是J2EE web (Servlet與JSP)標準的實現者。
J2SE是J2EE運行的基石,運行Tomcat離不開J2SE。
Servlet
Servlet (Servlet App)服務器小程序,主要功能用於生成動態web內容。
Servlet是J2EE 最重要的組成部分。
新建一個web項目,創建一個Servlet。
項目目錄
FirstServlet .java內容
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
public class FirstServlet extends HttpServlet{
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String name = request.getParameter("name");
String html = "<h1 style='color:red'>hi,"+name+"</h1>";
PrintWriter out = response.getWriter();
out.println(html);
}
}
web.xml文件修改如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>FirstServlet</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 -->
<servlet>
<!-- Servlet別名 -->
<servlet-name>first</servlet-name>
<servlet-class>com.study.FirstServlet</servlet-class>
</servlet>
<!-- 將Servlet和URL綁定 -->
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/hi</url-pattern>
</servlet-mapping>
</web-app>
然後將項目發佈到Tomcat上。
Servlet的開發步驟
- 創建Servlet類,繼承HttpServlet。
- 重寫service方法,編寫程序。
- 配置web.xml,綁定URL。
實例:
package com.study;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SampleServlet extends HttpServlet{
public void service(HttpServletRequest request ,HttpServletResponse response) {
try {
PrintWriter out = response.getWriter();
out.println("<a href='http://www.baidu.com'>Baiddu</a>");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
web.xml 添加如下配置
<servlet>
<servlet-name>sample</servlet-name>
<servlet-class>com.study.SampleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sample</servlet-name>
<url-pattern>/sample</url-pattern>
</servlet-mapping>
Servlet訪問方式
- http://IP地址:端口/context-path/url-mapping
- 遠程訪問使用IP地址,本地訪問使用localhost(127.0.0.1)
- context-path 爲上下文路徑 默認爲工程名。
請求參數
- 請求參數是指瀏覽器通過請求向Tomcat提交的數據。
- 請求參數通常是用戶輸入的數據,待Servelet進行處理。
- 參數名1=值1&參數名2=值2&…
Servlet接收請求參數
- request.getParameter() 接收單個參數
- request.getParameterValues() 接收多個參數
GET與POST請求處理方式
- 所有請求 — service()方法
- Get請求 — doGet()方法
- Post請求 — doPost()方法
Servlet生命週期
- 裝載-web.xml
- 創建-構造函數
- 初始化-init()
- 提供服務 - service()
- 銷燬 - destory()
public class FirstServlet extends HttpServlet{
public FirstServlet() {
System.out.println("正在創建FirstServlet對象");
}
public void init(ServletConfig config) throws ServletException{
System.out.println("正在初始化FirstServlet對象");
}
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String name = request.getParameter("name");
String html = "<h1 style='color:red'>hi,"+name+"</h1>";
PrintWriter out = response.getWriter();
out.println(html);
}
public void destroy() {
System.out.println("正在銷燬FirstServlet對象");
}
}
使用註解配置Servlet
- Servlet 3.x 之後引入了“註解Annotation”特性
- 註解用於簡化web應用程序的配置過程。
- Servlet核心註解:@WebServlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
@WebServlet("/anno")
public class AnnotationServlet extends HttpServlet {
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().println("annotation servlet");
}
}
啓動時加載Servlet
- web.xml使用load-on-startup設置啓動加載。
<load-on-startup>0-9999</load-on-startup>
- 啓動時加載在工作中常用於系統的預處理。
web.xml中的配置
<servlet>
<servlet-name>import</servlet-name>
<servlet-class>job.ImportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
註解中使用
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
@WebServlet(urlPatterns="import",loadOnStartup=2)
public class ImportServlet extends HttpServlet{
@Override
public void init() throws ServletException {
System.out.println("正在導入數據");
}
}