Servlet了解
1 Servlet介紹
Servlet用于接收及回應前端發送的請求,可以在同一個Servlet中處理多個請求,也可以定義回傳的資料型別,
Servlet和JSP之間的關系
先有的Servlet再有JSP,JSP檔案執行需要先翻譯成java檔案(servlet),然后再進行編譯成class檔案,最后執行
查找路徑:eclipse中配置本地的Tomcat,專案啟動運行后,在Tomcat的work中查找
2 Servlet入門案例
需求:定義Servlet接收前端發送的登錄請求,對請求進行處理
<form action="loginServlet" method="post">
<input type="text" name="uname">
<input type="submit" value="提交">
</form>
//自定義的Servlet要繼承HttpServlet
public class LoginServlet extends HttpServlet {
/**
* Servlet中提供了service方法用于接收及回應web客戶端的請求
* service可以執行多次(每次請求都會執行該方法)
* super.service(req, resp);用于請求分發
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("------service------");
//設定編碼
request.setCharacterEncoding("utf-8");
//獲取請求中的引數
String uname = request.getParameter("uname");
if(uname.equals("admin")){
//重定向
response.sendRedirect("success.jsp");
} else{
response.sendRedirect("fail.jsp");
}
}
}
servlet配置
<!--
配置Servlet,指定請求地址與Servlet之間的對應關系
servlet-name:給Servlet指定一個唯一標識
servlet-class:指定servlet所在的位置
-->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>cn.yunhe.servlet.LoginServlet</servlet-class>
</servlet>
<!--
給指定的Servlet配置請求路徑
servlet-name:指定該路徑要關聯的servlet
url-pattern:指定請求地址(特別注意必須給/[web專案的根目錄])
-->
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
3 Servlet生命周期
Servlet的生命周期依賴于web容器的生命周期,生命周期劃分為:初始化(一次)、執行(多次)、銷毀(一次),
public LifeCycleServlet(){
System.out.println("-----LifeCycleServlet構造器執行-------");
}
@Override
public void init() throws ServletException {
System.out.println("------LifeCycleServlet 初始化執行--------");
super.init();
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("------LifeCycleServlet service執行--------");
}
@Override
public void destroy() {
System.out.println("------LifeCycleServlet destroy執行--------");
super.destroy();
}
默認Servlet的初始化是在web客戶端發送對應的請求到Servlet的時候,才會被初始化(不用就不初始化)
4 Servlet配置
4.1 加載順序
配置Servlet加載順序(默認是使用的時候才初始化),需要在配置Servlet的時候去指定load-on-startup標簽
<servlet>
<servlet-name>LifeCycleServlet</servlet-name>
<servlet-class>cn.yunhe.servlet.LifeCycleServlet</servlet-class>
<!--設定Servlet在web容器初始化的時候也進行初始化-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>LifeCycleServlet</servlet-name>
<url-pattern>/lifeCycleServlet</url-pattern>
</servlet-mapping>
初始化順序:值越大越靠后加載,值一樣按照在xml檔案中的配置順序,靠后的先加載,如果不寫該標簽,只有在第一次請求的時候才會初始化
4.2 全域引數與區域引數
區域引數只在對應的Servlet中使用,全域引數是在所有的Servlet中都可以使用
<!--配置Servlet-->
<servlet>
<servlet-name>paramServlet</servlet-name>
<servlet-class>cn.yunhe.servlet.ParamServlet</servlet-class>
<!--設定區域引數-->
<init-param>
<param-name>count</param-name>
<param-value>1</param-value>
</init-param>
</servlet>
獲取結果
//獲取區域變數引數
String count = getInitParameter("count");
System.out.println("ParamServlet count="+count);
全域變數配置
<!--Servlet的全域變數-->
<context-param>
<param-name>name</param-name>
<param-value>application</param-value>
</context-param>
//獲取全域變數(需要獲取到背景關系物件)
ServletContext servletContext = getServletContext();
String value = servletContext.getInitParameter("name");
System.out.println("ApplicationParamServlet name="+value);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/245655.html
標籤:java
下一篇:上班無聊 ,手敲九九乘法表!
