软件编程体系
B\S 系统架构与C\S 系统结构
Web服务器
JavaWeb应用的概念
Java Web应用由一组Servlet、HTML页、类、 以及其它可以被绑定的资源构成。它可以在各种供应商提供的实现Servlet规范的Servlet容器中运行。
Web 程序结构


<Context>元素的常用属性:

Servlet简介


<web-app> ...... <servlet> <servlet-name>AnyName</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> ...... <servlet-mapping> <servlet-name>AnyName</servlet-name> <url-pattern>/demo/hello.html</url-pattern> </servlet-mapping> ...... </web-app>
Servlet映射的细节
<servlet-mapping> <servlet-name> AnyName </servlet-name> <url-pattern> *.do </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> AnyName </servlet-name> <url-pattern> /action/* </url-pattern> </servlet-mapping>
缺省Servlet
为Servlet设置参数的例子:
<servlet> <servlet-name>ConfigTest</servlet-name> <servlet-class>ConfigTestServlet</servlet-class> <init-param> <param-name>Corporation</param-name> <param-value>传智播客公司</param-value> </init-param> </servlet>
getInitParameterNames
getInitParameter
getServletName
getServletContext
GenericServlet类实现ServletConfig接口的目的
String servletName = getServletConfig().getServletName();
public String getServletName()
{
return getServletConfig().getServletName();
}
String servletName = getServletName();
service方法的实现技巧
//Servlet接口中定义的service方法的语法格式及处理代码:
public void public void service(ServletRequest req,ServletResponse res)
throws ServletException,java.io.IOException
{
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)res;
……
request.HttpServletRequest中定义的方法();
response.HttpServletResponse中定义的方法();
……
}
//HttpServlet类中定义的重载service方法的语法格式及处理代码:
protected void service(HttpServletRequest req,HttpServletResponse res)
throws ServletException,java.io.IOException
{
……
req.HttpServletRequest中定义的方法();
res.HttpServletResponse中定义的方法();
……
}
//HttpServlet类中实现的service方法的语法格式及处理代码:
public void service(ServletRequest req,ServletResponse res)
throws ServletException,java.io.IOException
{
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)res;
service(request,response);//这里调用的是那个重载的service方法
}
doXxx方法
GET /it315/servlet/RequestURI?param1=a¶m2=b HTTP/1.1
getMethod方法返回HTTP请求消息中的请求方式。getRequestURI方法返回请求行中的资源名部分。getQueryString 方法返回请求行中的参数部分。getProtocol方法返回请求行中的协议名和版本。getContextPath方法返回请求资源所属于的WEB应用程序的路径。getPathInfo方法返回请求URL中的额外路径信息,额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。getPathTranslated方法返回URL中的额外路径信息所对应的资源的真实路径。getServletPath方法返回Servlet的名称或Servlet所映射的路径。

getHeader方法
getHeaders方法
getHeaderNames方法
getIntHeader方法
getDateHeader方法
getContentType方法
getContentLength方法
getCharacterEncoding方法
使用GET方式传递参数
http://www.it315.org/counter.jsp?name=zhangsan&password=123
使用POST方式传递参数
//POST请求消息的格式: POST /counter.jsp HTTP/1.1 referer: http://localhost:8080/Register.html content-type: application/x-www-form-urlencoded host: localhost:8080 content-length: 43 name=zhangsan&password=123
获取请求参数
getParameter方法
getParameterValues方法
getParameterNames方法
getParameterMap方法
Enumeration paramNames = request.getParameterNames(); while(paramNames.hasMoreElements()) { String paramName = (String)paramNames.nextElement(); out.print(paramName + " : " + request.getParameter(paramName) + "<br>"); /*如果要考虑同一个请求头名可能出现多次,那么应该用下面的代码段代替上面一行程序代码*/ /*String [] paramValues = request.getParameterValues(paramName); //良好的编程习惯,在使用对象和数组之前先判断其是否为null if(paramValues != null) { for(int i=0;i<paramValues.length;i++) { out.print(paramName + " : " + (String)paramValues[i] + "<br>"); } }*/ }
请求域属性
//与请求域属性相关的方法: setAttribute方法 getAttribute方法 removeAttribute方法 getAttributeNames方法
请求域属性的典型应用:
RequestDispatcher接口
forward和include方法接收的两个参数必须是传递给当前Servlet的service方法的那两个ServletRequest和ServletResponse对象,或者是对它们进行了包装ServletRequestWrapper 或ServletResponseWrapper对象。
//获取RequestDispatcher对象的方法: ServletContext.getRequestDispatcher //(参数只能是以“/”开头的路径) ServletContext.getNamedDispatcher ServletRequest.getRequestDispatcher //(参数可以是不以“/”开头的路径)
用sendRedirect方法实现请求重定向
<context-param> <param-name>companyName</param-name> <param-value>it315_new</param-value> </context-param>
application域范围的属性
getAttributeNames方法
getAttribute方法
removeAttribute方法
setAttribute方法
获取虚拟路径所映射的本地路径