中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

wordpress無法連接遠(yuǎn)程mysqlseo推廣人員

wordpress無法連接遠(yuǎn)程mysql,seo推廣人員,網(wǎng)站開發(fā)的工資是多少,wordpress創(chuàng)意小工具文章目錄 Servlet3.0新特性全解Servlet 3.0 新增特性Servlet3.0的注解Servlet3.0的Web模塊支持servlet3.0提供的異步處理提供異步原因?qū)崿F(xiàn)異步原理配置servlet類成為異步的servlet類具體實現(xiàn)異步監(jiān)聽器改進(jìn)的ServletAPI(上傳文件) Servlet3.0新特性全解 tomcat 7以上的版本都支…

文章目錄

  • Servlet3.0新特性全解
    • Servlet 3.0 新增特性
    • Servlet3.0的注解
    • Servlet3.0的Web模塊支持
    • servlet3.0提供的異步處理
      • 提供異步原因
      • 實現(xiàn)異步原理
      • 配置servlet類成為異步的servlet類
      • 具體實現(xiàn)
      • 異步監(jiān)聽器
      • 改進(jìn)的ServletAPI(上傳文件)

在這里插入圖片描述


Servlet3.0新特性全解

tomcat 7以上的版本都支持Servlet 3.0

在這里插入圖片描述

Servlet 3.0 新增特性

  1. 注解支持;Servlet、Filter、Listener無需在web.xml中進(jìn)行配置,可以通過對應(yīng)注解進(jìn)行配置;
  2. 支持Web模塊;
  3. Servlet異步處理;
  4. 文件上傳API簡化;

Servlet3.0的注解

  1. @WebServlet :修飾Servlet類,用于部署該Servlet類。
  2. @WebFilter:修飾Filter類,用于部署該Filter類
  3. @WebInitParam:與@WebServlet或@WebFilter注解連用,為它們配置參數(shù)
  4. @MultipartConfig:修飾Servlet類,指定該Servlet類負(fù)責(zé)處理multipart/form-data類型的請求(主要用于處理上傳文件)
  5. @ServletSecurity:修飾Servlet類,與JAAS(Java驗證和授權(quán)API)有關(guān)的注解
  6. @HttpConstrait:與@ServletSecurity連用
  7. @HttpMethodConstrait:與@ServletSecurity連用

示例代碼片
修飾過濾器Filter:

@WebFilter(filterName="log",urlPatterns={"/*"},initParams={@WebInitParam(name="encoding",value="GBK"),@WebInitParam(name="loginPage",value="/login.jsp")})
public class MyFilter implements Filter {//內(nèi)容省略......
}

修飾Servlet

@WebServlet(name="test",urlPatterns={"/basic.do"},initParams={@WebInitParam(name="userName",value="peter"),@WebInitParam(name="age",value="100")})
public class TestServlet extends HttpServlet{//內(nèi)容省略....
}

修飾監(jiān)聽器Listener:

@WebListener
public class MyRequestListener implements ServletRequestListener{//內(nèi)容省略...
}

Servlet3.0的Web模塊支持

  1. 原來一個web應(yīng)用的任何配置都需要在web.xml中進(jìn)行,因此會使得web.xml變得很混亂,而且靈活性差。現(xiàn)在可通過Web模塊來部署管理它們。
  2. Web模塊對應(yīng)一個Jar包,即Servlet 3.0可以將每個Servlet、Filter、Listener打成jar包,然后放在WEB-INF\lib中。
  3. 每個模塊都有自己的配置文件,這個配置文件的名稱為 web-fragment.xml 。
  4. 制作一個Servlet模塊的步驟:
    1. 正常編寫Servlet,并編譯;
    2. 將此編譯class文件及所在包通過jar包命令打成jar包;
    3. 將此jar包用winrar打開,將META-INF中的manifest刪除后添加 web-fragment.xml;
    4. 將此jar包放入WEB-INF\lib中即可;
  5. web-fragment.xml說明:
    1. <web-fragment>為根元素;
    2. <name></name>表示模塊名稱(模塊的唯一標(biāo)識);
    3. <ordering></ordering>定義模塊加載順序的標(biāo)簽,當(dāng)然可以不設(shè)置模塊加載順序;
    4. <before><others/></before>表示在所有模塊前面加載(第一個加載);
    5. <after><name>A</name></after>表示在A模塊后面加載;
    6. 可以在里面部署listener、filter、servlet
    7. 值得注意的是,web.xml中用<absolute-ordering>標(biāo)簽指定的模塊加載順序?qū)采wweb模塊的web-fragment.xml文件中指定的加載順序。
  6. 如何用myEclipse打jar包(有些人不知道)
    右鍵你web項目里的編寫的servlet(或filter或listener)類——>Export…——>JAR file——>NEXT——>(Browse)填寫導(dǎo)出名字和存放位置——>finish
    這樣就生成了我們需要的jar包了
  7. 示例
    servlet類代碼片:
@WebServlet(value = "/hello/snow")
public class HelloWorldServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().write("DO GEt..." + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));}}

訪問:
在這里插入圖片描述

servlet3.0提供的異步處理

提供異步原因

? 在以前的servlet中,如果作為控制器的servlet調(diào)用了一個較為耗時的業(yè)務(wù)方法,則servlet必須等到業(yè)務(wù)執(zhí)行完后才會生成響應(yīng),這使得這次調(diào)用成了阻塞式調(diào)用,效率比較差

實現(xiàn)異步原理

? 重新開一個線程單獨(dú)去調(diào)用耗時的業(yè)務(wù)方法。

配置servlet類成為異步的servlet類

  1. 通過注解asyncSupported=true實現(xiàn)
  2. 通過web.xml配置
<servlet><servlet-name>test1</servlet-name><servlet-class>com.zrgk.servlet.AsyncServlet</servlet-class><async-suppored>true</async-suppored>       </servlet><servlet-mapping><servlet-name>test1</servlet-name><url-pattern>/basic.do</url-pattern></servlet-mapping>

具體實現(xiàn)

java代碼:

@WebServlet(name="AsyncServlet",urlPatterns={"/testAsyn.do"},asyncSupported=true)  
public class AsyncServlet extends HttpServlet{  public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ //解決亂碼request.setCharacterEncoding("GBK");  response.setContentType("text/html;charset=GBK");  //通過request獲得AsyncContent對象AsyncContext actx = request.startAsync(); //重點(diǎn)方法**//設(shè)置異步調(diào)用超時時長actx.setTimeout(30*3000);  //啟動異步調(diào)用的線程actx.start(new MyThread(actx));//重點(diǎn)方法**// 直接輸出到頁面的內(nèi)容(不等異步完成就直接給頁面)//但這些內(nèi)容必須放在標(biāo)簽內(nèi),否則會在頁面輸出錯誤內(nèi)容,這兒反正我測試是這樣,具體不知對不對??PrintWriter out = response.getWriter();out.println("<h1>不等異步返回結(jié)果就直接返到頁面的內(nèi)容</h1>");  out.flush(); }  
}  //異步處理業(yè)務(wù)的線程類
public class MyThread implements Runnable {private AsyncContext actx;  //構(gòu)造public MyThread(AsyncContext actx){  this.actx = actx;  }  public void run(){  try{  //等待5秒,模擬處理耗時的業(yè)務(wù)Thread.sleep(4*1000); //獲得request對象,添加數(shù)據(jù)給頁面ServletRequest req = actx.getRequest();req.setAttribute("content","異步獲得的數(shù)據(jù)");//將請求dispath到index.jsp頁面,該頁面的session必須設(shè)為falseactx.dispatch("/index.jsp");  }catch(Exception e){e.printStackTrace();}  }   
}

? 頁面代碼(頁頭里session設(shè)為false,表時該頁面不會再創(chuàng)建session):

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" session="false"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>  <body><a href="<%=basePath%>/testAsyn.do">測試異步調(diào)用</a>異步結(jié)果:${content}</body>
</html>

異步監(jiān)聽器

? 異步監(jiān)聽器用來監(jiān)聽異步Servlet的異步處理事件,通過實現(xiàn)AsyncListener接口實現(xiàn),代碼如下:

public class MyAsyncListener implements AsyncListener{//異步調(diào)用完成時觸發(fā)@Overridepublic void onComplete(AsyncEvent event) throws IOException {// 省略....       }//異步調(diào)用出錯時觸發(fā)@Overridepublic void onError(AsyncEvent event) throws IOException {// 省略....       }//異步調(diào)用開始觸發(fā)@Overridepublic void onStartAsync(AsyncEvent event) throws IOException {// 省略....       }//異步調(diào)用超時觸發(fā)@Overridepublic void onTimeout(AsyncEvent event) throws IOException {// 省略....       }}

? 還需要在異步Servlet里注冊異步監(jiān)聽器,即添加如下代碼即可:

 actx.addListener(new MyAsyncListener());

? Filter異步調(diào)用與Servlet一樣。

改進(jìn)的ServletAPI(上傳文件)

  1. 改進(jìn)內(nèi)容

    1. HttpServletRequest增加了對上傳文件的支持
    2. ServletContext允許通過編程的方式動態(tài)注冊Servlet、Filter
  2. HttpServletRequest提供了如下兩個方法處理文件的上傳

    Part getPart(String name) 根據(jù)名稱獲取文件上傳域

    1. Collection<Part> getParts() 獲取所有文件上傳域
  3. 上傳文件時一定要為表單域設(shè)置enctype屬性,它表示表單數(shù)據(jù)的編碼方式,有如下三個值:

    application/x-www-form-urlencoded (默認(rèn)),它只處理表單里的value屬性值,它會將value值處理成URL編碼方式。如果此時表單域里有上傳文件的域(type=”file”),則只會獲取該文件在上傳者電腦里的絕對路徑串,該串沒什么實際意義。

    1. multipart/form-data 此處編碼方式會以二制流的方式來處理表單數(shù)據(jù),此時會將文件內(nèi)容也封裝到請求參數(shù)里。
    2. texst/plain 當(dāng)表單的action屬性為mailto:URL的形式時比較方便,主要適用于直接通過表單發(fā)送郵件的方式
  4. 上傳文件的Servlet需要加上@MultipartConfig注解

  5. 通過request獲取的Part對象就可以操作文件域了

  6. 示例

@WebServlet(name="uploadServlet",urlPatterns="/upload.do")
@MultipartConfig
public class UploaderServlet extends HttpServlet {public void service(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{//獲得Par對象(每個Part對象對應(yīng)一個文件域)Part part = request.getPart("file");long size = part.getSize(); //獲取上傳文件大小String info = part.getHeader("content-disposition");//獲得包含原始文件名的字符串//獲取原始文件名String fileName = info.substring(info.indexOf("filename=\"")+10,info.length()-1);//將文件上傳到某個位置part.write(getServletContext().getRealPath("/uploadFiles")+"/"+fileName);}
}

ServletContext 提供了如下方法動態(tài)注冊Servlet、Filter
addServlet(); 動態(tài)注冊Servlet
addFilter(); 動態(tài)注冊Filter
addListener(); 動態(tài)注冊Listener
setInitParameter(String name ,String value); 為Web應(yīng)用設(shè)置初始化參數(shù)。


http://www.risenshineclean.com/news/56929.html

相關(guān)文章:

  • 真正能賺錢的網(wǎng)站app推廣平臺放單平臺
  • 工信部企業(yè)網(wǎng)站認(rèn)證搜索引擎有哪些平臺
  • 怎么做企業(yè)網(wǎng)站一級懸浮菜單一個萬能的營銷方案
  • 河南做網(wǎng)站聯(lián)系電話輿情網(wǎng)站直接打開的軟件
  • 廣東手機(jī)網(wǎng)站建設(shè)價格百度優(yōu)化
  • 做網(wǎng)站是什么工作天津網(wǎng)絡(luò)關(guān)鍵詞排名
  • 北京住房建設(shè)部網(wǎng)站南寧網(wǎng)站推廣大全
  • 新疆做網(wǎng)站哪家公司好廣東培訓(xùn)seo
  • 平臺網(wǎng)站兼職做sap關(guān)鍵詞優(yōu)化推廣排名多少錢
  • 投票活動網(wǎng)站怎么做seo學(xué)徒招聘
  • 廣告牌的樣式大全福清市百度seo
  • 天津營銷網(wǎng)站建設(shè)公司哪家好虎撲體育網(wǎng)體育
  • 499元做網(wǎng)站微信營銷技巧
  • 珠海市網(wǎng)站建設(shè)開發(fā)公司海南百度推廣公司
  • 網(wǎng)站建設(shè)的欄目百度推廣一個月費(fèi)用
  • 畢業(yè)設(shè)計網(wǎng)站做啥長沙建設(shè)網(wǎng)站制作
  • 如何建立一個網(wǎng)站放視頻適合小學(xué)生的新聞事件
  • 做二手網(wǎng)站有哪些2021百度熱搜年度榜
  • 佛山高端網(wǎng)站建設(shè)比較火的推廣軟件
  • 專業(yè)網(wǎng)站制作技術(shù)程序員培訓(xùn)機(jī)構(gòu)哪家好
  • 海安建設(shè)局網(wǎng)站刷評論網(wǎng)站推廣
  • 寧波趨勢信息科技有限公司網(wǎng)站seo排名優(yōu)化工具在線
  • 微信小程序萬能開掛器seo營銷推廣服務(wù)公司
  • wordpress不跳轉(zhuǎn)網(wǎng)站快速排名優(yōu)化價格
  • 水利部精神文明建設(shè)指導(dǎo)委員會網(wǎng)站免費(fèi)關(guān)鍵詞挖掘網(wǎng)站
  • 如何用kali做網(wǎng)站滲透廣州網(wǎng)站優(yōu)化外包
  • 網(wǎng)站引導(dǎo)頁在線做開網(wǎng)站怎么開
  • 網(wǎng)站成立時間查詢抖音關(guān)鍵詞搜索指數(shù)
  • 北京國稅局網(wǎng)站做票種核定時seo國外推廣軟件
  • 政府網(wǎng)站建設(shè)應(yīng)該注意百一度一下你就知道