B npexonara uacr or xypca ce sanosnaxme c ocnonnnre xonnennnn n Web-nporpamnpanero, oxcnnxme xaxno e Java cpnner, xax ce csanar cpnnern n xax ce nsnnnxnar cc cpnp Tomcat. B rasn uacr me nponxnm nsyuananero na Java cpnnernre, me noxaxem xax cpnnernre morar a npnemar annn nneenn or norpenrenx nn nn na napamerpn, me oxcnnm xnsnennx nnxn na cpnnernre n xax re morar a paorxr c mnoro norpenrenn enonpemenno xaro nsnonsnar HTTP cecnn.
HTML qopun n nsnnnuane na annn1e o1 1nx Bcnuxn cme nsnonsnann mamnnn sa rpcene n Hnrepner xaro Google n AltaVista n snaem, ue re npecrannxnar Web-npnnoxennx, xonro npnemar or norpenrenx nxxonxo xnmuonn ymn n my namnpar crpannnnre, n xonro resn ymn ce cpemar. Bepoxrno ncexn e saenxsan ue cne saanane na saxnxara sa rpcene n nonero sa apec na payspa ce noxnxna nono URL cpxamo nneenara ]pasa sa rpcene samacxnpana cpe mnoxecrno crpannn cnmnonn. Hanpnmep axo n Google saaem rpcene na ]pasara 'Svetlin Nakov, me nonyunm URL noono na rona: http://www.google.com/search?qSvetlinNakov&iewindows-1251&hlbg&lr. uacrra or URL-ro cne nnpocnrennnx snax cpxa annnre, nsnparenn xaro napamerpn xm rona URL, xonpann no cnennanen naunn, napeuen URL-encoding. annnre or HTML ]opma morar a ar npeaenn xm cpnpa no na naunna c GET nnn POST saxnxa. Hpn GET HTTP saxnxn, re ce npeanar cne URL- ro xaro ce orenxr or nero c nnpocnrenen snax, a npn POST HTTP saxnxn ce npeanar saeno cc saxnxara, orenenn or URL-ro na orenen pe. Java cpnnernre nmar nrpaena nsmoxnocr sa nsnnnuane na nsnparennre or norpenrenx annn. 3a nenra ce nsnonsna meror getParameter() na xnaca HttpServletRequest. Tosn mero npma cronocrra na napamerp no saaeno nme nnn null axo raxn napamerp ne e nsnparen or payspa na norpenrenx. Hapcnanero na napamerpnre n exonpanero nm or URL-encoded ]opmar n uncr rexcr crana nannno anromarnuno, r.e. nporpamncrr ne e neoxonmo a ce rpnxn sa orenxnero na napamerpnre enn or pyr, sa orenxnero nm or URL-ro n sa exonpanero na cnmnonnre, xonro ca nnn samenenn c pyrn crnacno c nen a ce nsernar (escaped symbols). Ero enn npnmepen cpnner, xoro emoncrpnpa necnorara c xoxro ce nonyuanar napamerpnre. To nonyuana xaro nxo nme na norpenren (napamerp c nme username) n my xasna 'spane. import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class HelloServlet extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); ServletOutputStream out = resp.getOutputStream(); String userName = req.getParameter("user_name"); out.println("<HTML>"); out.println("<HEAD><TITLE>Hello Servlet</TITLE></HEAD>"); out.println("<BODY>"); out.println("<H1>Hello, " + userName + "</H1>"); out.println("</BODY></HTML>"); } } Ero n pesynrarr or nsnnnennero na rosn cpnner c napamerp 'Svetlin Nakov :
Moxem a nanpannm HTML ]opma, n xoxro norpenrenx cn nnme nmero n cne narncxane na 'submit yrona rona nme ce noana xaro napamerp na cpnnera HelloServlet. Ero enn npnmep: <html> <head> <title> Hello Form </title> </head> <body>
<form method="GET" action="/servlet/HelloServlet"> Please enter your name: <input type="text" name="user_name"> <input type="submit" value="OK"> </form>
</body></html> Hpnmepnara HTML ]opma saana sa mero na HTTP sxnxara GET. Taxa npn narncxane na 'submit yrona nneennx n nonero username rexcr ce npeana xaro onenen o URL-ro napamerp c nme 'username n cronocr nneenara n rexcronoro none. Ero xax nsrnexa ]opmara n payspa:
Ho nex HTML ]opmnre cnyxar sa anromarnsannx na nponeca na npeanane na napamerpn mexy norpenrencxnx paysp xm cpnpcxn cxpnnrone, xonro opaornar resn napamerpn. Hmero na cxpnnra, xoro payspr nsnnxna npn submit-nane na ]opmara, ce saana n arpnyra 'action, a meror na HTTP saxnxara n arpnyra 'method na rara Iorm~. Bn ]opmara ce saanar pasnnunn rexcronn n pyrn nonera, xaro nm ce saanar nmena. 3aaennre nmena cnnaar c nmenara na napamerpnre, xonro ce renepnpar npn csanane na HTTP saxnxara xm cpnpa. Cnennannnxr yron 'submit cnyxn sa nsnpamane na annnre, nneenn nn ]opmara, xm nocouennx cxpnnr. Hpn nsnpamanero na nonnnennre nn ]opmara annn paysepr ce rpnxn a rn xonpa no cranapra 'URL-encoding n a rn nsnparn npes URL-ro nnn xaro uacr or saxnxara n sanncnmocr ann merop na ]opmara e GET nnn POST. Hpn nsnonsnanero na GET mero ncnuxn napamerpn ce onennar n URL-ro, nopan xoero oemr nm ne moxe a e mnoro ronxm. Hpn nsnonsnanero na POST mero ncnuxn napamerpn ce npeanar cxpnro, ne npes URL-ro n norpenrenxr nnxa camo nmero na cxpnnna, xoro e opaornn annnre, no ne n camnre annn. Ko or nara meroa a ce nsnonsna e nnpoc na npenenxa or crpana na Web-paspaorunxa. 3a yocrno na nporpamncra xnacr HttpServletRequest nma n mero sa nspoxnane na ncnuxn nsnparenn napamerpn getParameterNames(). Tpxna a ce snae, ue npn nmenara na napamerpnre manxnre n rnannnre yxnn ce pasnnuanar.
nsnen nnxsn na cspnne1n1e Xnsnennxr nnxn na cpnnernre onncna rxxnoro noneenne or momenra, n xoro re ar csaenn xaro oexrn na cpnpa (nncrannnpann) o momenra na rxxnoro npemaxnane or nero. Ha xaprnnxara ca noxasann ocnonnnre meron, xoro peannsnpar xnsnennx nnxn na cpnnernre n nocneonarennocrra na rxxnoro nsnnxnane: init() ...() service() doGet() doPost() doDelete() destroy() doPut()
Hpn npno nsnnxnane na cpnnera cpnpr, xoro nsnnnxna cpnnernre n JSP cxpnnronere (raxa napeuennx Web-xonrenep), nsnnxna meroa init(), e]nnnpan n xnaca HttpServet. Cpnnernre, xonro nmar nyxa or enoxparna npnonauanna nnnnnannsannx npen sanounane na paorara cn, rpxna a npnnoxpnxr rosn mero n a peannsnpar rasn cnox nnnnnannsannx. Hanpnmep enn cpnner moxe a npouere or cpnpa nnn or nxxaxn ]an xon]nrypannonna nn]opmannx, xoxro a nsnonsna no-nararx. Hpn nacrnnane na saxnxa sa ocrn o cpnnera, noaena or Web-payspa na nxxo xnnenr, cpnpr nsnnxna meroa service() or xnaca HttpServlet. Tosn mero anannsnpa rnna na saxnxara n nsanncnmocr or rona ann saxnxara e GET, POST, PUT, DELETE nnn pyra, nsnnxna cornerno enn or meronre doGet(), doPost(), doPut(), doDelete() n r.n. Honexe HTTP meronre PUT, DELETE, HEAD, TRACE, OPTIONS n r.n. ce nsnonsnar mnoro pxxo n ne ca rnnnunn sa noneuero cpnnern, nxma a rn pasrnexame. Meror doGet(), rpxna a e peannsnpan or cpnnernre, xonro opaornar saxnxn noaenn no mero GET, nanpnmep axo opaornar annnre, nonyuenn or HTML ]opmn, sa xonro e saaeno method'GET. Ananornuno doPost() meror rpxna a e peannsnpan, xoraro rpxna a ce opaorxr annn nonyuenn or HTML ]opmn, sa xonro meror e POST. Axo ncxame a nanpannm cpnner, xoro opaorna enonpemenno n GET n POST saxnxn, ne e xyano a npnnoxpnname npexrno meroa service(), samoro ro ce rpnxn sa npannnnara opaorxa na HEAD saxnxnre n sa ome pyrn naxnn nema. Bmecro rona moxem a nmnnemenrnpane opaorxara na annnre n meroa doGet(), a or doPost() npocro a nsnnxname doGet(). Tona e npenopunrennnxr naunn sa opaorxa na annn, xonro ce ouaxna a npncrnrar n upes GET n upes POST saxnxn. Cne xaro cpnnerr e nsnnnen nenx, ro ocrana xaro oexr n namerra na nnpryannara mamnna na Java n npn cnenamn nsnnxnannx ce nsnnnxna nenara, es a ce sapexa or .class ]ana ornono. B pamxnre na eno Web-npnnoxenne enn cpnner ce nncrannnpa camo nenx. Koraro nxxonxo xnnenra noncxar enn cpnner enonpemenno, Web-xonrenepr craprnpa enonpemenno nxxonxo nnmxn (threads) n nsnnxna or ncxxa or rxx cpnnera n enn n cm momenr. Honexe ncexn cpnner nma camo ena nncrannnx n cpnpa, ro xnacr, xoro peannsnpa rosn cpnner, saeno c unen-npomennnnnre, xonro ca e]nnnpann n nero, ce nncrannnpar camo nenx n pamxnre na Web- npnnoxennero. Cneonarenno paorara c resn unen-npomennnnn ne e thread-saIe, r.e. ne e oesonacena or nponemn c xonxypenrnnx ocrn npn saxnxn or nxxonxo norpenrenx enonpemenno. 3arona e neoxonmo nporpamncrr a nma npenn, ue e nsmoxno xor na enncrnenara nncrannnx na nanncannx or nero cpnner a ce nsnnnxna enonpemenno or nxxonxo nnmxn (threads) n sarona rpxna a ce rpnxn sa cnnxponnsannx na ocrna o unen-npomennnnnre na cpnnera, xaxro n pyrnre pecypcn, xonro nsnonsna. Koraro cpnpr no nxxaxna npnunna pemn a npemaxne or namerra enn cpnner (nanpnmep npn nameca na amnnncrparopa), ce nsnnxna meroa destroy() na xnaca HttpServet. B peannsannxra na rosn mero cpnnernre rpxna a ocnooxr saernre or rxx pecypcn n a ]nnannsnpar paorara cn. Tnnnuen npnmep sa nsnonsnane na init() n destroy() meronre npn npocrn npnnoxennx e sa ornapxne n sarnapxne na npsxara xm asara annn, xoraro ce nsnonsna raxana. Hpn no-cnoxnn npnnoxennx npsxara xm asara annn ce ynpannxna or cnennanna xomnonenra na cncremara nsnecrna xaro 'connection pool. Meror destroy() ce nsnonsna no-pxxo or meroa init(), samoro Java ocnooxana anromarnuno nxxon rnnone pecypcn, xaro nanpnmep namerra, npn ynnmoxananero na oexr. Ero enn npnmep sa cpnner, xoro nsnonsna meronre init(), destroy(), doGet() n doPost() n cmenpemenno emoncrpnpa xax or cpnner moxe a ce renepnpa nnamnuno JPEG nsopaxenne n a ce npne xaro orronop na xnnenrcxara saxnxa: import javax.servlet.*; import javax.servlet.http.*; import java.awt.*; import java.awt.image.*; import com.sun.image.codec.jpeg.*; import java.io.*; import java.util.Date;
public class ImageServlet extends HttpServlet { private int mVisitCounter; private String mStartDate;
public void init() { mStartDate = new Date().toString(); mVisitCounter = 0; }
public BufferedImage createImage(String msg) { Font font = new Font("Serif", Font.BOLD, 24); FontMetrics fm = new Canvas().getFontMetrics(font); int width = fm.stringWidth(msg) + 20; int height = fm.getHeight(); BufferedImage image = new BufferedImage( width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); g.setColor(Color.red); g.fillRect(0, 0, width, height); g.setFont(font); g.setColor(Color.black); g.drawString(msg, 12, fm.getAscent()+2); g.setColor(Color.yellow); g.drawString(msg, 10, fm.getAscent()); return image; }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } } Hpn nnnnnannsannx, n meroa init(), cpnnerr sanomnx nn nrpemna unen-npomennnna arara n uaca, n xoro e nnnnnannsnpan. B pyra nrpemna unen-npomennnna ro nomnn n pox nrn, xonro e nn nsnnxnan upes GET nnn POST saxnxa. Hpn nsnnxnane na doGet() meroa, cpnnerr renepnpa rexcrono comenne, xoero comana xonxo nrn e nna nocerena crpannnara or npnoro nsnnxnane na cpnnera. 3apan nsmoxnocrra nxxonxo norpenrenx enonpemenno a noncxar crpannnara, e neoxonmo ocrnr o unen-npomennnnnre na cpnnera a e cnnxponnsnpan. Kaxro snaem or remara sa mnoronnmxono nporpamnpane n cnnxponnsannx, n Java cnnxponnsannxra moxe a ce npann no monnropa na nponsnonen oexr. B namnx cnyua cnnxponnsnpame no oexra, cpxam arara n uaca na nnnnnannsannx na cpnnera. Honexe, xaxro cnomenaxme no-rope, cpnnernre ce nncrannnpar camo nenx n pamxnre na eno Web-npnnoxenne, unen-npomennnnnre nm cmo ce nncrannnpar camo nenx n sarona poxur na nocernrenn nma camo eno xonne n namerra, nnpexn, ue ne e oxnen xaro static. Fnaroapenne na cnnxponnsnpannx ocrn o nero, ro orunra nocernrennre npannnno, opn npn xonxyperno nsnnxnane or mnoro norpenrenn enonpemenno. 3a nnamnunoro renepnpane na nsopaxennero ce nsnonsnar cranaprnnre cpecrna na jawa.awt. Hsuncnxnar ce pasmepnre na rexcra npn mpn]ra, xoro me e nsnonsnan, cne rona ce csana nsopaxenne or xnaca BuIIeredImage, nsema ce neronnx oexr sa rpa]nuna mannnynannx Graphics n ce nsopasxna rexcra. Hpno nsopaxennero ce sannna c uepnen nnxr, cne rona ce neuara rexcra, manxo ormecren c uepen nnxr, a cne rona ce neuara c xnro cmnx rexcr na ncrnncxara my nosnnnx. Taxa ce nonyuana rexcr cc cxnxa. Cne xaro nsopaxennero e nsrorneno, ro ce xonneprnpa n JPEG norox or annn xaro ce nsnonsna xoexr na Sun sa JPEG xonpane n my ce saana a paorn c maxcnmanno nnno na xauecrno. Honyuennxr norox or annn ce nsnpama xaro nsxo or cpnnera. 3a a moxe Web-payspr a pasnosnae nsnparennx norox or annn xaro JPEG xaprnnxa, a ne xaro rexcr, n header-a na HTTP orronopa na saxnxara ce cnara 'Content-type: image/jpeg. Ho nopasnpane, axo cpnnerr ne yxaxe pyro, sa rnn na nsnparennre annn ce cnara 'Content-type: text/html. Peannsannxra na meroa doPost() npocro nsnnxna meroa doGet(), xoero nosnonxna na cpnnera a orronapx xaxro na GET, raxa n na POST saxnxn no nporoxona HTTP. Ero n npnmepen pesynrar or nsnnxnanero na cpnnera:
Hopsaxa na no1pen1encxn cecnn Koraro ronopnxme sa Web-npnnoxennx, cnomenaxme, ue re nmar nsmoxnocr a ocnyxnar enonpemenno mnoro norpenrenn, nesanncnmo enn or pyr. Kax snaem, HTTP nporoxonr nma nececnen xapaxrep, r.e. ne nn npeocranx nsmoxnocr a pasnnuaname norpenrennre enn or pyr n a npocnexname xox saxnxa or xo norpenren nna. Ero samo sa npocnexnane n pasrpannuanane na norpenrennre enn or pyr ca neoxonmn onnnnrennn ycnnnx, xonro Web-npnnoxennxra rpxna a nonarar. Horpenrencxa cecnx napnuame nepnoa, n xoro enn norpenren cn nsanmoecrna c eno Web-npnnoxenne. Hpocnexnanero na nocneonarennocrra or saxnxn, nsnpmenn or enn norpenren ce napnua npocnexnane na neronara cecnx. Axo na norpenrenx paorar enonpemenno c ena Web-cncrema, re nmar ne pasnnunn cecnn. Hpnmep sa Web- npnnoxenne, xoero npocnexna norpenrencxara cecnx, e Web-asnpanara cncrema sa enexrponna noma na Yahoo. Bcnuxn snaem, ue e nsmoxno oxaro enn norpenren cn uere nomara or mail.yahoo.com, pyr norpenren, nannno nesanncnmo or nero cmo a cn uere nomara or cmnx car. Web-npnnoxennero sa enexrponna noma, paoremo na mamnnara c nme mail.yahoo.com pasnosnana pasnnunnre norpenrenn n npocnexna rexnnre cecnn. Bsanncnmocr or rona xo norpenren e an HTTP saxnxa xm Web-npnnoxennero, cpnpr pasnosnana neronara cecnx n ana ocrn o neronnre email-n, a ne o resn na ocranannre norpenrenn, paoremn n cmnx momenr. Bsmoxno e or enn n cm xomnmrp a ce ocmecrnxr nxxonxo nesanncnmn cecnn xm eno n cmo Web-npnnoxenne. Hanpnmep norpenrenxr moxe a ornopn na pasnnunn Web-payspa enn Netscape n enn Opera n a nnese n eno Web-npnnoxenne xaro na pasnnunn norpenrenx. B pamxnre na payspa Netscape, ro me nma csaena ena cecnx cc cpnpa, a n pamxnre na payspa Opera ro me nma csaena ome ena, nesanncnma or npnara cecnx cc cmnx cpnp. Tona osnauana, ue sa cpnpa norpenrennre ca pasnnunmn enn or pyr, opn xoraro nnar or enn n cm xomnmrp. Tona ce oxcnxna c mexannsma, no xoro cpnpr pasnnuana norpenrennre enn or pyr. Hma na ocnonnn naunna sa npocnexnane na norpenrencxara cecnx c cookies n c oanxne na onnnnrenen napamerp xm URL-ro. Cookies e nsmoxnocr eno Web-npnnoxenne a uere n sanncna nn]opmannx na mamnnara na xnnenra. Hn]opmannxra or cookies moxe a ce uere camo or npnnoxennero, xoero x e sanncano n moxe a nsuesna axo ne ce nonsna nro npeme, nsanncnmocr or napamerpnre saaenn npn csananero . Hocpecrnom cookies Web-npnnoxennxra morar a sanncnar na mamnnara na norpenrenx nxxaxn nenrn]nxarop na cecnx n cne rona xaro x npounrar npn ncxxa saxnxa, a pasnosnanar norpenrenx. pyrnxr naunn sa cneene na norpenrencxnre cecnn e upes oanxne na onnnnrenen napamerp xm URL-ro. Hpn sanounane na paora na norpenrenx ce renepnpa ynnxanen xnmu n ro ce oanx xaro napamerp npn ncxxa GET nnn POST saxnxa. Tosn noxo nsncxna onnnnrennn ycnnnx sa oanxne na cxpnrn nonera nn ncxxa HTML ]opma n oanxne na napamerpn xm ncexn hyperlink n sarona ce nsnonsna pxxo, onxnoneno xoraro xnnenrcxnxr paysp ne nopxa cookies nnn norpenrenxr rn e sapannn. C cookies ycnnnxra sa npocnexnane na norpenrennre ca snaunrenno no-manxn. B Java cpnnernre n JSP cxpnnronere nopxxara na norpenrencxn cecnn e nannno anromarnuna. Hporpamncrr ne e nyxno a nsnpama n uere cookies nnn a oanx n pasnosnana cne rona onnnnrennn napamerpn xm URL-ro. ocraruno e a ce nsnonsna API-ro sa paora cc cecnn, xoero ce ana or Iramework-a sa Web-npnnoxennx. Ocnonen e xnacr HttpSession, xoro npecranx norpenrencxara cecnx. Honyuananero na oexr, aconnnpan c rexymara cecnx moxem a nsemem or HttpRequest oexra no cnennx naunn: HttpSession session = request.getSession(); Axo cecnx ne cmecrnyna raxana me e csaena. Bsnmanero na cecnxra sa enn n cm norpenren npma enn n cm oexr, a sa pasnnunn norpenrenn npma pasnnunn oexrn. 3a ncexn non norpenren ce csana non oexr or xnaca HttpSession n ce npma rosn oexr. B oexra session morar a ce cxpanxnar nponsnonnn annn sa norpenrenx nocpecrnom meronre cerAttribute(key, value) n getAttribute(key). Benx cxpanenn n cecnxra, resn oexrn ca ocrnnn no npeme na ncxxa saxnxa or norpenrenx n pamxnre na rasn cecnx. Ero enn rnnnuen npnmep sa nsnonsnane na cecnx e xoraro na ncexn norpenren ce npeocranxr pasnnunn pecypcn n sanncnmocr or rona xaro xaxn ce e anrenrnxnpan, a neanrenrnxnpannre norpenrenn ne ce onycxar. Hpecranxme cn copconere na cpnnera LoginServlet: import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { HttpSession session = request.getSession(); String user = (String) session.getAttribute("USER"); PrintWriter out = response.getWriter(); if (user==null) { showMainForm("Not authenticated." + " Please <a href=\""+ "/servlet/LoginServlet\">" + "login</a> first.", out); } else { showMainForm( "Welcome, " + user + "!", out); }
}
private void showMainForm( String captionText, PrintWriter out) { out.println( "<html><title>Main</title>\n" + captionText + "</html>" ); } } Hpnnxr cpnner (LoginServlet) cnyxn sa anrenrnxannx na norpenrennre. Koraro ce nsnnxa es napamerpn, ro noxasna HTML ]opma sa nonnnane na nme na norpenren n napona:
Koraro ce nonnnn n nsnparn ]opmara, ce nsnnxna cmnxr cpnner, no nneennre nme na norpenren n napona ce nsnpamar xm nero xaro napamerpn. Koraro cpnnerr pasnosnae nannna xomnnannx or norpenrencxo nme n napona, sanncna n anromarnuno csaenara sa rexymnx norpenren cecnx no xnmu 'USER nneenoro norpenrencxo nme. 3a npocrora n namnx npnmep nannnn xomnnannn or norpenrencxo nme n napona ca ncnuxn, n xonro norpenrencxoro nme cnnaa c naponara. Cne ycnemna anrenrnxannx norpenrenxr ce npenpama xm ocnonnnx cpnner (MainServlet) upes response.sendRedirect(URL). Ocnonnnxr cpnner pasnosnana neronara cecnx no cmecrnynanero cronocr no xnmua 'USER, npounra or nex nmero na anrenrnxnpannx norpenren n ro nospanxna c xparxo comenne:
Axo n cmnx momenr pyr norpenren ce onnra a sapen MainServlet-a, xaro nannme apeca my n payspa cn, ro me e pasnosnar or cncremara xaro pasnnuen or npnnx. B neronnx HttpSession oexr nxma a nma nnxaxna cronocr no xnmu 'USER n raxa ocnonnnxr cpnner me pasepe, ue rosn norpenren ne e anrenrnxnpan:
Kaxro nnxxme npocnexnanero na norpenrencxara cecnx crana anromarnuno n n nex morar a ce sanncnar pasnnunn oexrn no pasnnunn xnmuone, xaro ce rapanrnpa, ue HttpSession oexra sa ncexn pasnnuen norpenren e pasnnuen. Moxem a saaname npemero na neaxrnnnocr n mnnncexynn, sa xoero ena cecnx nsrnua n ce nsrpnna or cpnpa upes meroa setMaxInactiveInterval() na xnaca HttpSession. Hsrnuanero na cecnnre (session expiration) e nonesno or copaxennx sa cnrypnocr. Cne xaro enn norpenren e anrenrnxnpan nenx, neronara anrenrnxannx naxn camo onpeeneno npeme, sa a ne moxe cne xaro crane or xomnmrpa nxxo pyr a cene na nerono mxcro n a nsnonsna cecnxra my. Horpenrencxnxr nnrep]ec na Web-npnnoxennxra onxnoneno ocnen anrenrnxannx n oropnsannx (login) npenara n nsxo or cncremara (logout), xoero npexparxna norpenrencxara cecnx. Hpexparxnanero na cecnxra na norpenren n namnx npnmep moxe a crane xaro ce nsrpne cronocrra c xnmu 'USER or cecnxra upes session.removeAttribute('USER).
Corporate Governance, Corporate Profitability Toward Corporate Social Responsibility Disclosure and Corporate Value (Comparative Study in Indonesia, China and India Stock Exchange in 2013-2016) .