① 通過 java (servlet) 實現兩個web工程間的文件傳輸
這個思路很簡單,如下:
1、訪問A的servlet,我們在這個Servlet裡面取到這個文件,這個很容易是吧
2、在A的servlet將取到的文件(inputstrema格式),以post的形式,模擬表單提交給B的servlet
3、在B的servlet裡面接收,就像接收普通的表單上傳的一樣
下面是一些上傳和接收的核心代碼,使用的httpclient
A裡面的上傳:
HttpClient httpclient = new DefaultHttpClient();
String url = 「這里是B的servlet的訪問的地址,全地址」;
HttpPost httppost = new HttpPost(url);
// 一個本地的文件
InputStreamBody fileis = new InputStreamBody(is, fileName);
// 多部分的實體
MultipartEntity reqEntity = new MultipartEntity();
// 增加
reqEntity.addPart("bin", fileis);
// 設置
httppost.setEntity(reqEntity);
HttpResponse responses = null;
try {
responses = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (Validator.isNotNull(responses)) {
int httpstatus = responses.getStatusLine().getStatusCode();
if(httpstatus!=200){
System.out.println(url+"訪問錯誤,http狀態"+httpstatus);
}
}
B裡面接收文件的核心代碼,使用的fileupload
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = new ArrayList();
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
FileItem file = null;
if (items.size()>0) {
file =(FileItem)items.get(0);
}
② JavaWeb開發中Servlet是那一層以及用法
JavaWeb開發中Servlet是屬於控制層最底端的部分的 ,也就是MVC c的最底層。
他往往用來處理請求的。他的外一層就是View、他的一層就是Service(Servlet往往調用他做邏輯判斷的操作)
原始的Servlet的生命周期
servlet在第一次訪問的時候就會被初始化
servlet對象一旦被創建就會駐留在內存中,當伺服器關閉或者web應用被移除的時候servlet對象才銷毀
1:當servlet被創建的時候那麼 servlet就會被初始化 調用init方法
2:任何請求來自客戶端,service方法就會被自動調用
3:當servlet從伺服器被移除的時候 distroy方法將會被調用
如下是一個原始的Servlet代碼(這並不是現在開發一貫的做法,請往下看)
importjavax.servlet.*;
classFirstServlet
extendsGenericServlet{
publicvoid
service(ServletRequestrequest,ServletResponseresponse)
throwsServletException,java.io.IOException
{
response.getWriter().write("hello
servlet");
}
}
ServletConfig
getServletConfig 方法 用來獲得servlet的啟動信息,和getServletInfo方法 可以活的servlet的基本信息,和關於它自己的一些信息,例如作者,版本,版權等
為Servlet設置初始參數要在web.xml中配置(只對當前servlet有效)
如下是在Web.xml中為當前servlet配置初始化參數的。
<servlet>
<servlet-name>ServletConfigDemo</servlet-name>
<servlet-class>
cn.itcast.servlet.ServletConfigDemo</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>encoding2</param-name>
<param-value>utf-9</param-value>
</init-param>
</servlet>
ServletCofig對象可以通過this.getServletConfig來獲得,因為在父類中已經在獲得了ServletConfig對象;也可以servletconfig對象可以通過父類的init方法內穿過來的config對象獲取
publicvoidinit(ServletConfigconfig)throwsServletException{this.config=
config;this.init();}()
{returnconfig;}
ServletContext
通常我們稱ServletContext叫Application對象 。也叫域對象
Servlet引擎為每個WEB應用程序都創建一個對應的ServletContext對象,ServletContext對象被包含在ServletConfig對象中,調用ServletConfig.getServletContext方法可以返回
通常獲得ServletContext的方法是直接getservletcontext
因為在父類中已經定義了這樣的方法,子類直接繼承使用
ServletContext對象的引用。getServletContext().getInitParameter("a")
的方式獲得web應用的初始化參數
我們還可以為整個web應用配置初始化參數
Request & Response
基本servlet 中service的方法的request 和 response 對象分別是
RequestFacade 和 ResponseFacade 這個類是Tomcat中的類
他繼承自HttpServletRequest而 HttpServletRequest 又繼承 ServletRequest(Response同理)
一些常用方法:
request.getRequestURL();獲得URl
request.getHeader("accept-encoding"); 獲得支持的壓縮格式
request.getHeader("referer");獲得來自哪裡(防盜鏈)
request.getInputStream(); 獲得消息體
request.getParameter("name") 獲得參數
如下是現代開發中常用的Servlet
publicclass
{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException
{
}
publicvoid
doPost(HttpServletRequestrequest,HttpServletResponse
response)
throws
ServletException,IOException{
doGet(request,
response);
}
}
③ Java web中多個servlet的問題
servlet是按照攔截器攔截url的方式,所以誰的攔截器先攔截到這個url就誰先處理,後面的就不管了
④ java 中web開發servlet主要功能是什麼
JavaWeb中servlet主要功能是承載網路連接,業務邏輯處理,比如一些編碼格式的轉換、登錄攔截等,如下是詳細解釋:
1.servlet是一個類。最初沒有jsp,只有servlet,也就是說最初的開發過程是.java->.class
後來因為html代碼在servlet里寫入太繁瑣,加入了jsp類型。servlet單純的處理後台程序。
在WEB-INF下的web.xml文件下:
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>org.lxh.servlet.HelloServlet</servlet-class>///HelloServlet是類名
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/servletdemo</url-pattern>///當敲入本機地址後,/demo後/servletdemo會找到編譯後的HelloServlet文件。
</servlet-mapping>
具體例子如下:
1.先編寫一個表單,建在D:/java/tomcat jsp/webdemo/servletdemo(新建一個文件夾)-
input.html
<formaction="input"method="get">//"post"也行
<inputtype="text"name="ref">
<inputtype="submit"value="提交">
</from>
2.在編寫InputServlet類
packageorg.lxh.servlet;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
{
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,java.io.IOException{
Stringparam=req.getParameter("ref");
System.out.println("*************"+param);
}
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,java.io.IOException{
this.doGet(req,resp);
}
};
3.然後編譯。
4.再在web.xml中加入這些話
<servlet>
<servlet-name>input</servlet-name>
<servlet-class>org.lxh.servlet.InputServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>input</servlet-name>
<url-pattern>/servletdemo/input</url-pattern>
</servlet-mapping>
5.這時運行tomcathttp://localhost:90/demo能找到servletdemo文件夾中的input.html,點擊提交按鈕。
jsp技術中servlet,可以承載很多的功能,但後期如果項目業務邏輯很復雜,會導致servlet的急劇增多,不易維護,所以又發明了javaweb,將每一層的功能和邏輯都獨立出來,以便於更好的維護管理。
⑤ JAVA WEB中servlet中的反射
就是這兩個class的類定義
javax.servlet.http.HttpServletRequest
javax.servlet.http.HttpServletResponse
反射讀出其中的方法
這個兩個是介面,實際應用中應該傳入真實的方法名和實現類
⑥ java web中的servlet問題
其實沒什麼差別,當你選擇用get方式提交form表單的時候,你看地址欄上 的地址後面會多出 你要提交的數據 比如 xxxx.do?username=XXX&password=XXX,而你用Post方式提交的時候就不會顯示出這些,而是通過 隱藏在 http請求頭的 數據段進行傳輸。
另外剛才我看樓下說 get提交中文會有亂碼,這個我補充一下,在jsp頁面必須要做url coder的轉換。其實中文亂碼 很好解決。
另外post提交同樣有上限,這個是根據伺服器的設置。 tomcat伺服器默認的2m上傳post
⑦ JavaWeb中Servlet必須要在web.xml中配置嗎
Java 的Web標准就是jsp+Servlet,而Structs,Spring MVC的哦是基於攔截器的。。
如果要讓Servlet工作,這必須要多Sevelet進行配置。Servlet 常規都是在web.xml配置的。
⑧ 如何用eclipse創建java web servlet
工具:eclipse
方法如下:
1、在Eclipse開發工具中創建的JavaWeb工程文件目錄結構如下圖:
⑨ servlet和web伺服器的區別是什麼
WEB伺服器是提供WEB服務的程序。
Servlet是一種容器內的技術,其實是 Server applet的簡稱,什麼意思呢,就是說servlet是在伺服器上運行的小程序,所以servlet技術不一定只在WEB伺服器上使用。
只是目前常見的Java技術,都是把WEB伺服器上的Servlet直接叫做Servlet。
所以運行Servlet,首先是需要WEB伺服器的。
然後還要有一個小程序的容器,就是Servlet容器,專門來調用Servlet。
目前就是大部分的J2EE容器能夠完成 Servlet的執行。
支持J2EE容器的WEB伺服器,也叫 WEB伺服器,不支持的,也叫WEB伺服器。
我想已經基本解釋清楚了。
⑩ javaWeb中servlet層和service層有什麼不同
這兩個完全是兩個領域內的概念。
servlet是j2ee標准中用於執行服務端程序的小程序。從實現上講,Servlet可以響應任何類型的請求,一般用來擴展基於HTTP協議的Web伺服器,即用於生成網頁。
service是一個開發層次的概念。現階段j2ee應用的後端一般分為web、service、三個層次。web層處理頁面請求的解析,然後發數據給service層,service層進行具體的業務處理(可以調用)。