







































































学习Java Web 技术,首先必须先把Servlet搞明白。没有Servlet基础,别的都是扯淡!
主要就是掌握Servlet的生命周期,所关联到的类,以及他们的方法。
我简要回顾一下
打开Servlet-API
Servlet接口,三个关乎生命周期的重要方法签名
ServletConfig,是一个较重要的对象。
功能:1,获得初始化参数
2,获得Servlet上下文对象。public ServletContextgetServletContext()
GeneralServlet抽象类,等待你去重写service方法。
功能主要就是,为程序员编写Servlet提供一些方便
方便:1,直接覆盖public void init() throws ServletException
2,直接调用getInitParameter(java.lang.String name)
直接调用public ServletContextgetServletContext()
直接调用public void log(java.lang.String msg)
因为GeneralServlet是个懒家伙,都委托给相应ServletConfig/ServletContext完成功能
HttpServlet没什么,自己看API吧
ServletRequest能做什么,几件事
事情1: public java.lang.Object getAttribute(java.lang.String name)/////还有set
事情2: public java.lang.String getParameter(java.lang.String name)
两方面参数,
方面1:html表单中,有name属性的值.
eg. <input type="text" name="userid" size="20" maxlength="20" />
request.getParameter("userid");
方面2:地址栏参数,eg. http://www.infogo.com.cn/action.do?name=admin
request.getParameter("name");
由于参数的值有时会是一组,那么就要用public java.lang.String[] getParameterValues(java.lang.String name)
eg.
====================================================
<c:forEach items="${cart.cartItem}" var="item">
<TR align=middle>
<TD height=30><INPUT type=checkbox value="${item.value.product.id}" name=item></TD>
<TD height=30>${item.value.product.name} </TD>
<TD height=30>${item.value.product.price} </TD>
<TD height=30><INPUT maxLength=10 size=10 value="${item.value.number}" name=itemnum></TD>
<TD height=30>${item.value.cost} </TD>
</TR>
</c:forEach>
====================================================
//获得页面,checkbox组的信息,可以知道用户选择的商品
String[] itemkeystr = request.getParameterValues("item");
System.out.println(itemkeystr);
Integer[] itemkeyigr = new Integer[itemkeystr.length];
for(int i = 0; i < itemkeystr.length; i++)
{
itemkeyigr[i] = Integer.valueOf(itemkeystr[i]);
}
================================================
事情3:public RequestDispatchergetRequestDispatcher(java.lang.String path)
事情4:public void setCharacterEncoding(java.lang.String env)
throws java.io.UnsupportedEncodingException
eg.主要防止用户在表单中输入了中文。
过滤器实例:






















































ServletResponse,就是负责输出呗。
负责1: public void setContentType(java.lang.String type)
eg. response.setContentType(text/html;charse=gbk)
负责2: public java.io.PrintWriter getWriter() throws java.io.IOException
这里注意:
1 必须先设置setContextType或者setCharacterEncoding,再获得输出。否则设置编码无效!
2不得在ResquestDispatcher.forward()调用前,进行向客户端的输出。有风险。
ServletContext整个应用只有一个实例,可以为应用放置一些只读的共享数据。
责任1:public java.lang.String getInitParameter(java.lang.String name)
责任2:public RequestDispatchergetRequestDispatcher(java.lang.String path)绝对路径
责任3:public void log(java.lang.String msg)
Filter接口,实现对于某一个url匹配的过滤。是一个责任链模式的应用










































