Closed ioseb closed 11 years ago
@demonno @revazi @reflooding @vaxop ეს არის საწყისი მონახაზი განხილვისთვის.
ზემოთ ნაჩვენები ინტერფეისის ერთერთი კონკრეტული რეალიზაციის ნიმუში:
String path = "/path/to/resource";
File file = new File(path);
if (file.isFile()) {
HttpRequestHandler<File> handler = new HttpRequestFileHandler<File>();
try {
handler.process(file, request, response);
} catch (HttpRequestException e) {
// do something here
}
}
MimeTypeDetector.java
ამ კლასში ხომ ხდება იმის დადგენა path
არის თუ არა ფაილი , დირექტორია თუ სკრიპტი , ა.შ. ....
დადგენის შემდეგ ვიქცევი შესაბამისად და ვქმნი შესაბამისი ჰენდლერის ობიექტს(ინტერფეისის ტიპის), როგორც ბოლო კომენტარში დაწერე ..
ყველა ჰენდლერს აქვს საერთო ინტერფეისი ...
@demonno მანდ არ უნდა მოხდეს ეგ ანუ MimeTypeDetector - ში. სხვა უნდა იყოს დისპეჩერი. და MimeTypeDetector - ში რაც გაქვს ახლა ანუ MIME ტიპის დადგენა მთლიანად გადაინაცვლებს ერთ კონკრეტულ HttpRequestFileHandler
- კლასში. ჯერ ბოლომდე არ ვარ ჩამოყალიბებული ნიუანსებში მაგრამ სავარაუდოდ ამ გზით წავალთ. უკეთესი იდეები ცხადია მისაღებია.
MIME ტიპის დადგენა ანუ ეს ნაწილი გადაინაცვლებს ჰენდლერ კლასში
URL url = new URL("file", "", file.getPath());
URLConnection conn = url.openConnection();
mime = conn.getContentType();
MimeTypeDetector.java ამ კლასს მაშინ სახელი გადავუკეთოთ და დავაკისროთ დისპეჩერის ფუნქცია ?
@demmno არ გინდა ჯერ, არ არის ამ მომენტში დისპეჩერის აუცილებლობა მოდი ასე შევთანხმდეთ, მე კიდევ ვიფიქრებ ცოტას რომ უფრო გავაუმჯობესოთ დიზაინი მანამდე სააზროვნოდ კი არის მგონი საკმარისი ეს. ვეცდები რომ რაც შეიძლება მალე დავიწყოთ უკვე ჰენდლერების რეალიზაცია.
On Tuesday, March 5, 2013 at 1:53 AM, Demur Nodia wrote:
MIME ტიპის დადგენა ანუ ეს ნაწილი გადაინაცვლებს ჰენდლერ კლასში
URL url = new URL("file", "", file.getPath()); URLConnection conn = url.openConnection(); mime = conn.getContentType();MimeTypeDetector.java (https://github.com/reflooding/serv-cst/blob/master/src/main/java/edu/cst/webserver/env/MimeTypeDetector.java) ამ კლასს მაშინ სახელი გადავუკეთოთ და დავაკისროთ დისპეჩერის ფუნქცია ?
— Reply to this email directly or view it on GitHub (https://github.com/reflooding/serv-cst/issues/20#issuecomment-14408256).
String path = "C:/path/to/folder/resource/1";
File f = new File(path);
if (f.exists() && f.canRead()) {
if (f.isDirectory()) {
// vaxos klasi
} else if (f.isFile()) {
if (isExecutable(f)) {
// aq server side javascript
} else {
String mimeType = // demuris klasi romelic gveubneba mime tips
}
}
}
response
NOT_FOUND
MimeType
ს response
set 200_OK
და response
set MimeType
new HttpRequestFileHandler(file, request, response);
isDirListingAllowed == true
response
set 200_OK
და response
set MimeType.TEXT_HTML
new HttpRequestDirectoryHandler(file, request, response);
p.s. Content Length
იწერება ჰენდლერ კლასებში #34 #16
მაგალითი : response.setHeader(HttpHeader.CONTENT_LENGTH,String.valueOf(size));
@demonno ვხურავ ამას, უკვე ჩამოვყალიბდით რაც საჭირო იყო იმ საკითხებზე.
მოკლედ ახალგაზრდებო ბევრი ვიფიქრე თუ ცოტა სხვადასხვა ტიპის მოთხოვნათა მომსახურებისთვის მოვიფიქრე გარკვეული დიზაინი რომელსაც გაგანდობთ.
პირველ რიგში თუ რისი მომსახურება მოგვიწევს:
ამ ეტაპისთვის მნიშვნელოვანია ერთგვაროვანი მიდგომის მიღწევა. და გასათვალისწინებელია შემდეგი რამ:
მომსახურე რეალიზაციის დადგენის მიმდევრობა ასეთია:
path
არის თუ არა ფაილი;საჭიროების შემთხვევაში ვამატებთ სხვა ჰენდლერებსაც. პირველ რიგში აუცილებელია დავადგინოთ თუ როგორ უნდა იყოს მოწყობილი. გარკვეული კვლევის და ექსპერიმენტების შემდეგ დავადგინე სასრული რაოდენობის ზიარი დეტალები და გთავაზობთ ინტერფეისს რომლის რეალიზაციაც უნდა გააკეთოს ცალკეულმა ჰენდლერმა: