servlet基础

  • 格式:doc
  • 大小:52.50 KB
  • 文档页数:10

一,get和post1.1 getget方式一般用来查询,而且最多不超过256个字符,而且提交的信息将在浏览器的地址栏显示get方式提交数据时,变量之间以"&"链接,然后以Servlet路径问号"?",加查询字符串的形式获取服务器内容。

例如:http://servletNames/servlet?a=aValue&b=bValue,使用HttpServletRequest对象的getParameter("a")来获取a对应的值。

注:必要时要事先用setCharacterEncodeing(endcoding)设置实际编码格式。

例如连接包含中文时如果不修改Tomcat目录conf\server.xml文件默认的编码,就会出现乱码情况,需要指定为UTF-8,默认tomcat 将用ISO-8859-1编码。

1.2 postpost提交的数据不在地址栏显示,数据类型有两种:一,是普通文本类型(ASCII码数据),类型为"application/x-www-form-urlencoded"。

另外一种是文件数据(二进制),类型为"multipart/form-data",post一般用来上传文件,提交密码等。

post也是通过HttpServletRequest的getParameter(String paramName)方式获取参数值。

二,Servlet 接口Servlet实现了javax.servlet.Servlet接口的类。

在JDK中javax.servlet.*,javax.servlet.http.*包下提供了对Servlet的支持,如javax.servlet.http.HttpServlet类已经实现了Servlet 接口中的所有方法,一般只需要继承HttpServlet,并覆盖需要的方法即可,一般只覆盖doGet()和doPost()方法。

2.1 常用apirequest.setCharaterEncoding("UTF-8")设置request编码方式response.setCharaterEncoding("UTF-8")设置response编码方式PrintWriter out=response.getWriter();out.println("要展示的内容");向浏览器前端输出的内容。

out.close();三,配置3.1 配置<servlet>Web容器必须知道浏览器访问的是哪个Servlet,需要配置Servlet 的名称以及类名。

例如:<servlet><servlet-name>DemoServlet</servlet-name><servlet-class>cn.web.DemoServlet</servlet-class></servlet><servlet-name>与<servlet-class>属性是必需配置的。

<servlet-name>配置Servlet的类名,名字可以随意字符串,但是必须是web.xml中唯一的。

<servlet-class>配置的是类路径。

也可以如下:<servlet><servlet-name>DemoServlet</servlet-name><servlet-class>cn.web.DemoServlet</servlet-class><init-param><param-name>message</param-name><param-value>weblcome to demoServlet</param-value> </init-param><init-param><param-name>demo</param-name><param-value>weblcome to demo</param-value></init-param><load-on-startup>1</load-on-startup></servlet><init-param>详情如下:<init-param>可以配置初始化的参数,Servlet可以配置多个初始化参数,可以通过直接调用getInitParameter(String name)来获取值,可以通过getInitParameterNames()获取所有的参数名,也可以通过getServletContext().getInitparam(String paramName)来获取初始化参数<load-on-startup>详情如下:<load-on-startup>配置Servlet启动方式,可选为0和1,如果是1,tomcat启动时就加载该Servlet,如果是0,Tomcat在第一次请求该Servlet时加载该Servlet。

3.2 配置<servlet-mapping>配置好Servlet名称和类名时,还要配置Servlet访问方式。

例如:<servlet-mapping><servlet-name>DemoServlet</servlet-name><url-pattern>/servlet/DemoServlet</url-pattern> 可以访问网址是http://localhost:8080/servlet/servlet/DemoServlet<url-pattern>/servlet/DemoServlet.jsp</url-pattern>可以访问网址是http://localhost:8080/servlet/servlet/DemoServlet.jsp<url-pattern>/servlet/DemoServlet.do</url-pattern>可以访问网址是http://localhost:8080/servlet/servlet/DemoServlet.do<url-pattern>/servlet/DemoServlet.html</url-pattern>如上<url-pattern>/servlet/*.do</url-pattern>如上</servlet-mapping>标签<servlet-name>指明采用该方式访问的Servlet的名称,也就是前面配置的Servlet的名称,注:一个完整的Servlet配置,包括<servlet>配置和<servlet-mapping>,缺一不可3.3 配置<context-param>由于<init-param>只有对应的Servlet能够读取,不是全局的,如果需要配置全局都可以读取的初始化参数,需要使用<Context-param>,例如:<context-param><param-name>upload folder</param-name><param-value>attachment</param-value></context-param><context-param><param-name>allwowed file</param-name><param-value>.gif,jsp</param-value></context-param>注:通过使用Servlet中通过getServletConfig().getServletContext()来获取一个ServletConfig对象,使用ServletContext的getInitParameter()方法来获取指定名称的参数,也可以通过getInitParameterNames()来获取所有的context-param参数名称。

四,提交表单4.1 使用post方式form表单的标签要有name属性,通过HttpServletRequest的getParameter(String paramName)方式获取参数值,4.2 上传文件Web文件上传也要用POST方式,上传文件需要设置FORM的enctype 属性为"multipart/form-data",由于上传的文件过大,因此需要指定参数为二进制方式上传。

如果不指定,enctype默认为"application/x-www-form-urlencoded",浏览器将以ASCII向服务器发送数据。

导致文件失败。

4.2.1 commons-fileupload.jar常用api如下:DiskFileUpload(已失效),作用:解析HttpServletRequest,通过它的paraseRequest(request)获取List<FileItem>集合。

FileItem,作用:封装上传的数据,有普通文件表单字段,还有文件表单字段,通过isFormField()如果是普通文本返回一个ture,否则返回false。

五,Servlet生命周期在服务器启动时,如果配置了load-on-startup为1,或者第一次请求Servlet时,初始化一个Servlet对象,该Servlet开始生命周期,服务器结束时生命周期才结束,无论请求多少次Servlet,最多只有一个Servlet对象。

多个服务器请求Servlet时,服务器会启动多线程分别执行该Servlet的Service()方法。

在Servlet对象的生命周期里,init(ServletConfig conf)方法与destroy()方法均只会被服务器执行一次。

六,Servlet之间的跳转6.1 转发(Forward)转发是通过RequestDispatcher对象的forward(HttpServletRequest req,HttpServletResponse res)方法来实现的。