在Java中配置Servlet及Servlet常用方法

来源:互联网 发布:七日杀优化最好的版本 编辑:程序博客网 时间:2024/05/29 18:15

引言: 最近在写servlet的时候有一点生疏, 特地写个笔记记录一下学习心得, 重点的地方特地加粗放大, 方便日后查阅

什么是Servlet:

Servlet是一个JavaEE的组件,也是JavaEE中的一个规范
该规范有以下约束.
1:约束服务器
2:约束web的项目结构

3:约束程序的执行

Servlet是JavaEE中的一个规范:
服务器其实是对Servlet的实现.
Servlet是一个JavaEE的组件:
Servlet是一个程序(类),只不过必须要遵循Servlet的规范.

重点: 要求类:必须实现javax.servlet.Servlet接口.

搭建标准的JavaWeb的项目结构:
1.创建一个Java项目:servlet;
2.在HelloServlet中创建一个文件夹webapp,表示Web项目的根;
3.在webapp中创建WEB-INF文件夹,
4.在WEB-IN中创建文件夹:lib,classes
5.在WEB-IN中去Tomcat根/conf拷贝web.xml文件,只需要保留根元素.
6.把当前项目的classpath路径改成webapp/WEB-IN下的classes中.

重点: Servlet属于JavaEE的范畴,只依赖JavaSE是不能开发的,得依赖JavaEE的jar.

Servlet的第一个程序编写步骤:

 1):拷贝Tomcat根/lib/servlet-api.jar到项目的WEB-INF/lib目录中,并做build path. 2):编写Servlet程序,使之实现javax.servlet.Servlet接口,并覆盖接口中的方法.    public class HelloServlet implements javax.servlet.Servlet{...实现方法...} 3):发现方法中参数出现arg0,arg1的情况是因为没有关联Servlet的源代码.    是否关联源代码和程序最终的运行没有关系,只是在开发阶段参数美观,可阅读源代码.    Tomcat的源代码程序:apache-tomcat-7.0.57-src.zip 4):在service(ServletRequest req, ServletResponse res)方法,打印一句话.    引导:此时HelloServlet类,和Tomcat一点关系都没有:我们需要告诉Tomcat来帮我们管理HelloServlet类.(Tomcat是Servlet的容器,会负责Servlet对象的生命周期和方法调用).    所以,得以配置的形式,告诉Tomcat来帮我们管理自定义的Servlet类.

ServletRequest接口: 请求对象,封装了获取所有请求信息(请求行,请求头,请求实体)的方法.

HttpServletRequest接口:是ServletRequest的子接口,处理HTTP协议请求的方法.

常用方法:
1.String getMethod():返回请求方式:如GET/POST
2.String getRequestURI():返回请求行中的资源名字部分:如/test/index.html
3.StringBuffer getRequestURL():返回浏览器地址栏中所有的信息
4.String getContextPath():返回当前项目的上下文路径,该值以/开头(元素的path属性值.)
5.String getRemoteAddr():返回发出请求的客户机的IP地址
6.String getHeader(String name):返回指定名称的请求头的值。

获取请求参数的方法:(从页面获取提交参数)
1.String getParameter(String name):根据参数名获取单个参数值。
2.String[] getParameterValues(String name):根据参数名获取多个参数值。
3.Enumeration getParameterNames():返回包含所有参数名的Enumeration对象。
4.Map

String username = new String(data,”UTF-8”);

一个参数需要使用两行代码来转码,如果有N个参数,需要转N次,代码重复.
解决方案:
针对于POST请求方式:
request.setCharacterEncoding(“UTF-8”);
注意:1:只对POST有效,2:必须放在获取任意参数之前.

针对于GET请求方式:
修改Tocmcat中的server.xml配置文件中修改端口的元素,对GET方式的默认编码
建议:凡是涉及到参数提交都是用post

HttpServletResponse:

ServletResponse接口响应对象.封装了获取响应信息的方法.

HttpServletResponse接口:ServletResponse的子接口,可以处理HTTP响应的方法.

常用方法:
1:OutputStream getOutputStream():获取字节输出流对象
2:PrintWriter getWriter():获取字符输出流对象
注意:上述方法,不能共存,否则报错.

//设置输出的MIME类型(内容的类型):
response.setContentType(“text/html”);//不能写错
//设置输出数据的编码方式:
response.setCharacterEncoding(“UTF-8”);

可以将上述两行代码合并成一行代码:
5:response.setContentType(“text/html;charset=utf-8”);
注意:必须先设置MIME类型和编码,再获取输出流,否则没有效果.