一、創建項目
1.第一步:New ——>Dynamic Web Project
2.第二步:給工程起名,和選擇New Runtime
3.第三步,選擇服務器
4.第四步 選擇Browse(選擇服務器所在文件)
二、Tomcat文件夾文件
1.bin:可執行文件,裏面有打開和關閉服務器可執行文件
2.conf:服務器配置信息
3.lib:服務器依賴的架包
4.logs:服務器日誌
5.temp:服務器臨時產生的文件
6.webbapps:默認的存放工程,存放應用程序/網站
7.跟eclipse關聯後產生的文件夾
三、啓動tomcat服務器
方式一:從控制檯啓動tomcate服務器
sudo chmod 755 *.sh //獲取文件夾的權限
sudo sh ./startup.sh //執行打開服務器
sudo sh ./shutdown.sh //關閉服務器
方式二:
1.
2.
3.
2.檢驗是否啓動成功
訪問服務器網址(url):http://localhost:8080
協議://本地地址:端口號/項目名(應用程序)/訪問資源
<!--http://localhost:8080/sh-web-servlet1/1.html
4.Servlet小服務程序
1.是java類接口
2.在瀏覽器上訪問的每個網頁都有一個Servlet
3.每個Servlet都需要配置一個網址
4.在web.XML中配置
用戶如何從瀏覽器訪問到Servlet類:
1.用戶用網址訪問服務器(tomact)
2.服務器通過網址可以找到,對應項目的web.xml文件
3.通過網址找到對應的servlename
4.通過servletname找到對應的servlet類
5.創建servlet對象
6.執行生命週期的幾個方法
實例化--》初始化--》service服務--》銷燬
五、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 下面是xml文件頭文件,限制了xml文件所能書寫的內容 -->
<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>sh-web-servlet1</display-name>
<!-- 你可以設置歡迎頁面 -->
<welcome-file-list>
<welcome-file>1.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>
<!-- 創建一個Servet -->
<servlet>
<!--設置 servlet 名字 -->
<servlet-name>demo01</servlet-name>
<!--設置該servlet使用哪個類 填寫權限修飾名-->
<servlet-class>com.lanou3g.com.Demo01</servlet-class>
</servlet>
<servlet-mapping>
<!--配置哪一個servlet的映射地址 -->
<servlet-name>demo01</servlet-name>
<!--配置映射地址 -->
<!--這裏的斜槓,代表工程名後面的斜槓,必須加上 -->
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo02</servlet-name>
<servlet-class>com.lanou3g.com.Demo02</servlet-class>
</servlet>
<servlet-mapping>
<!--配置哪一個servlet的映射地址 -->
<servlet-name>demo02</servlet-name>
<!--配置訪問路徑通配符 -->
<!--*.action 只要是以.action結尾的訪問路徑
都可以訪問到demo02這個servlet -->
<!--/*項目目錄下,隨便輸入網址,都能訪問到demo02 -->
<!--注意:上面兩種方式不能連用-->
<url-pattern>/demo02</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo03</servlet-name>
<servlet-class>com.lanou3g.com.Demo03</servlet-class>
<!--添加servlet配置信息 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<!--配置哪一個servlet的映射地址 -->
<servlet-name>demo03</servlet-name>
<url-pattern>/demo03</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo04</servlet-name>
<servlet-class>com.lanou3g.com.Demo04</servlet-class>
<!--添加servlet配置信息 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<!--配置哪一個servlet的映射地址 -->
<servlet-name>demo04</servlet-name>
<url-pattern>/demo04</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo05</servlet-name>
<servlet-class>com.lanou3g.com.Demo05</servlet-class>
<!--添加servlet配置信息 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<!--配置哪一個servlet的映射地址 -->
<servlet-name>demo05</servlet-name>
<url-pattern>/demo05</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo06</servlet-name>
<servlet-class>com.lanou3g.com.Demo06</servlet-class>
<!--添加servlet配置信息 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<!--配置哪一個servlet的映射地址 -->
<servlet-name>demo06</servlet-name>
<url-pattern>/demo06</url-pattern>
</servlet-mapping>
</web-app>
六、Servlet接口實現類,創建servlet三種方式
方式一:
public class Demo01 implements Servlet{
//無參構造方
//無參構造方法
//聲明週期
public Demo01() {
System.out.println("我是實例化方法");
}
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("我是初始化init方法");
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// Servlet只創建一個,多次訪問實際上就是多次調用服務的方法service
System.out.println("我是服務方法 service");
}
@Override
public void destroy() {
// 第一種:刪除該應用程序調用
// 第二種,停止服務器
System.out.println("我是銷燬方法 destroy");
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
}
方式二:通過繼承GenericServlet類
/*
* 創建servlet方式二(適配器模式創建)
* 使用哪個方法就重寫哪個方法,
* 用不上的方法可以不重寫
*
*/
public class Demo02 extends GenericServlet {
//適配器模式的創建
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("我是demo02的service");
}
//接受post請求
}
創建方式三:模板設計模式--必會的
繼承HttpServlet
public class Demo03 extends HttpServlet{
//聲明一個ServletConfig對象,當做成員變量
//獲取ServletConfig方式一
private ServletConfig config;
//初始化方法()通過該方法的ServletConfig對象
//ServletConfig對象保存的是servlet中的配置信息
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
super.init(config);
// 接受一下ServletConfig
this.config = config;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//調用父類的doGet 怎麼都會報錯
//不是400 就是405
//重寫玩doget方法,注意不要調用父類的doget方法,
//否則無論怎麼配置,都會報錯
//super.doGet(req, resp);
//獲取sevlet的配置信息
//參數時 配置時的 name(相當於key)
//用於獲取 key 對應的value
String value = this.config.getInitParameter("encoding");
System.out.println(value);
}
//接受post請求
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(req, resp);
}
}
創建方式二:
/*
* 獲取ServletConfig 方式二
*
*/
public class Demo04 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//通過父類中的方法,獲取ServletConfig對象
// String value = this.getServletConfig().getInitParameter("encoding");
ServletConfig servletConfig = this.getServletConfig();
String value = servletConfig.getInitParameter("encoding");
System.out.println(value);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
七、創建域對象
/*
* 域對象(在一定範圍內,存儲信息的對象)
* ServletContext範圍:是整個程序中,都可以訪問到,並且只有一個--單例對象
* 每個servlet都可以訪問到這個域對象
* 如何訪問ServletContext 兩種方式
*
* 方式一:從ServletConfig對象中獲取
* 方式二:從父類中直接獲取
*
* 所有的域對象,都有設置/獲取/刪除的方法
*
*/
public class Demo05 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//方式一:從ServletConfig對象中獲取
ServletContext application = this.getServletConfig().getServletContext();
//添加一個數據到域中
//相當於添加一個鍵值對,key和value
application.setAttribute("username", "wanglong");
}
}
public class Demo06 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Object object = this.getServletContext().getAttribute("username");
System.out.println(object);
//設置全局配置信息,
//獲取資源的真實路徑,獲取路徑下所有的
}
}