Servlet 7-1
Web JavaScript Java Applet Flash ActionScript CGI (C, perl, ruby ) PHP Servlet, JSP (JavaServer Pages) ASP 7-2
Servlet Java CGI Tomcat Apache+Tomcat JSP Web HTML Java Java Servlet ( ) 7-3
Servlet $CATALINA HOME/webapps/tomcat-docs/appdev/ sample Ant build build.properties app.name=myapp app.version=0.1-dev catalina.home=/usr/local/lib/tomcat5 manager.username=xxx manager.password=yyy Tomcat ant install http://localhost:8080/myapp 7-4
Ant build.xml build.properties Unix make $ ant compile # $ ant javadoc # Javadoc $ ant dist # war $ ant clean # build, dist $ ant install # Tomcat deploy ( ) $ ant reload # Tomcat deploy $ ant remove # Tomcat 7-5
sample sample/ +- index.html ( ) +- sample.war war ( ) +- build.xml Ant build +- build.properties Ant build +- docs/ +- README.txt ( ) +- src/ +- mypackage/ +- Hello.java +- web/ HTML, JSP +- WEB-INF/ +- web.xml +- index.html HTML +- hello.jsp JSP +- images/ +- build/ ant compile +- dist/ ant dist +- docs/ Javadoc +- myapp-0.1-dev.war war 7-6
web.xml <?xml version="1.0" encoding="iso-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee"...> <!-- --> <display-name>hello, World Application</display-name> <description> This is a simple web application with a source code organization based on the recommendations of the Application Developer s Guide. </description> <!-- Servlet --> <servlet> <servlet-name>helloservlet</servlet-name> <servlet-class>mypackage.hello</servlet-class> </servlet> <!-- Servlet URL --> <servlet-mapping> <servlet-name>helloservlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app> 7-7
Hello.java public final class Hello extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { response.setcontenttype("text/html"); PrintWriter writer = response.getwriter();... } } Hello /myapp/hello HttpServletRequest HttpServletResponse Hello GET doget POST dopost ( ) 7-8
sample2/ +- build.xml +- build.properties +- docs/ +- README.txt ( ) +- src/ +- mypackage/ +- ShowParams.java +- web/ +- WEB-INF/ +- web.xml +- index.html +- showparams.jsp ( ) +- manager/ +- index.html sample sample2 7-9
build.properties web.xml build.properties app.name=myapp2 app.version=0.1 catalina.home=/usr/local/lib/tomcat5 manager.username=xxx manager.password=yyy web.xml <servlet> <servlet-name>showparams</servlet-name> <servlet-class>mypackage.showparams</servlet-class> </servlet> <servlet-mapping> <servlet-name>showparams</servlet-name> <url-pattern>/showparams</url-pattern> </servlet-mapping> 7-10
index.html <h1>get </h1> <form method="get" action="showparams"> <dl> <dd>param1 <input name="param1" type="text"> <dd>param2 <input name="param2" type="text"> <dd><input type="submit" value="submit"> </dl> </form> <h1>post </h1> <form method="post" action="showparams"> <dl> <dd>param1 <input name="param1" type="text"> <dd>param2 <input name="param2" type="text"> <dd><input type="submit" value="submit"> </dl> </form> 7-11
ShowParams.java package mypackage; int accesscounter = 0; public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // response.setcontenttype("text/html; charset=shift_jis"); PrintWriter out = response.getwriter(); // accesscounter++;... // showrequest(out, request);... // showheaders(out, request);... // // JIS showparameters(out, request, "Shift_JIS");... } 7-12
ShowParams.java ( ) public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { doget(request, response); } POST 7-13
ShowParams.java ( ) public static void showrequest(printwriter out, HttpServletRequest request) { out.println("<li>method : " + request.getmethod()); out.println("<li>request URI : " + request.getrequesturi()); out.println("<li>protocol : " + request.getprotocol()); out.println("<li>pathinfo : " + request.getpathinfo()); out.println("<li>remote Address : " + request.getremoteaddr()); } 7-14
ShowParams.java ( ) public static void showheaders(printwriter out, HttpServletRequest request) { out.println("<ul>"); Enumeration e = request.getheadernames(); while (e.hasmoreelements()) { String name = (String)e.nextElement(); String value = request.getheader(name); out.println("<li>" + htmlencode(name) + " : " + htmlencode(value)); } out.println("</ul>"); } 7-15
ShowParams.java ( ) public static void showparameters(printwriter out, HttpServletRequest request, String encoding) { out.println("<ul>"); Enumeration e = request.getparameternames(); while (e.hasmoreelements()) { String name = (String)e.nextElement(); String value = request.getparameter(name); value = decodeparameter(value, encoding); out.println("<li>" + htmlencode(name) + " : " + htmlencode(value)); } out.println("</ul>"); } 7-16
ShowParams.java ( ) public static String decodeparameter(string param, String encoding) { if (param == null param.equals("")) return param; try { param = new String(param.getBytes("iso-8859-1"), encoding); } catch (UnsupportedEncodingException e) { } return param; } decodeparameter encoding Unicode (encoding JISAutoDetect ) request.setcharacterencoding("shift JIS") GET 7-17
ShowParams.java ( ) public static String htmlencode(string str) { return str.replaceall("[\\x00-\\x1f]", " ").replaceall("&", "&").replaceall("<", "<").replaceall(">", ">").replaceall("\"", """); } htmlencode ( ) 7-18
(session) ID ( ) ID 7-19
( ) // HttpSession session = request.getsession(true); // Vector cart = (Vector)session.getAttribute("cart"); // if (cart == null) { cart = new Vector(); } // String item = request.getparameter("item"); cart.add(item); // session.setattribute("cart", cart); 7-20
setattribute, getattribute ( ) / JSP EL Servlet JSP : (forward ) : : (ServletContext ) 7-21
Tomcat Basic Digest Web Form SSL ID (, realm) : conf/tomcat-users.xml JDBC : JDBC RDB JNDI : LDAP 7-22
Tomcat Basic/Digest WEB-INF/web.xml <security-constraint> <web-resource-collection> <web-resource-name>manager pages</web-resource-name> <url-pattern>/manager/*</url-pattern> <!-- --> </web-resource-collection> <auth-constraint> <role-name>manager</role-name> <!-- role --> </auth-constraint> </security-constraint> <login-config> <auth-method>basic</auth-method> <!-- Digest DIGEST --> <realm-name>manager pages</realm-name> </login-config> <security-role> <role-name>manager</role-name> </security-role> 7-23
Tomcat Form (login- WEB-INF/web.xml config ) login.jsp error.jsp <login-config> <auth-method>form</auth-method> <realm-name>manager pages</realm-name> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> 7-24
Tomcat Form ( ) login.jsp <%@ page language="java" contenttype="text/html; charset=shift_jis" %> <html> <head> <title>login</title> </head> <body> <form method="post" action= <%= response.encodeurl("j_security_check") %> > <ul> <li> ID <input type="text" name="j_username"> <li> <input type="password" name="j_password"> <li><input type="submit" value="login"> </ul> </form> </body> </html> 7-25
myapp myapp2 7-26