Java-servlet 快速入门
我想用Java接口,就类似于现在单位有同事正在做的工作,然后我请教他们,他们告诉我,如果想学习写接口,就从Servlet开始吧。
这篇Blog,第一个为了给自己的学习做一个总结,第二为了以后遗忘后快速的学习
Start
servlet是基于Java技术的,可以捕捉Web请求的一个服务,Servlet部署再Tomcat服务器后,Web发送请求到Servlet,Servlet捕捉请求,提取里面的传递的参数,根据这些参数处理数据,然后返回到客户端即可。
刚开始不是太理解Servlet的左右,后来恍然才明白,Servlet其实就类似于.Net中一般处理问题(.ashx)。因为我之前是学习.Net,也用到过这个来捕捉以及处理请求,因此我就瞬间明白Servlet的作用了。
使用方法
再MyEclipse中,添加Servlet文件即可,文件的扩展名称也是servlet。
这里有两个参数是很重要的,
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
}
我将这两个函数当做某一种形式的委托,当发送POST或者Get请求后,这两个函数就会被调用
这里比较重要的一个参数是:HttpServletRequest request
我们可以从 request 变量中读取请求传递过来的参数,然后根据这些参数的值做进一步的处理。
String name = (String) request.getParameter("name");//参考用法
getParameter("ParameterName")方法可以用来读取请求字符串中问好之后的参数
当然还有其他的方法,可以查看文档
Servlet的配置
创建WebProject的事后,是有个web.xml文件,我们再这里配置Servlet信息,其实再创建Servlet文件的过程中,创建向导里面也会出现填写配置信息,文件创建之后,如果需要修改Servlet,就可以到这个文件中就行修改。
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>myservlet</servlet-name>
<servlet-class>myservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
上面是两个比较重要的两个参数
<servlet-name>myservlet</servlet-name>中,myservlet就表示你创建的Servlet文件的名称
<servlet-class>myservlet</servlet-class>中,myservlet是Servlet类的名称,一般情况下Servlet类的名称和文件的名称是相同的,当然这里我们也可以再类之前加入Package包的名称,写一个完整的路径
<servlet-mapping>中的 <url-pattern>/myservlet</url-pattern>表示我们请求Servlet的URL路径,这个跟Servlet再目录中存在的位置没有关系,我们可以理解为这个配置就是 给硬盘中servlet的路径映射一个请求路径,类似于IIS里面的虚拟目录似的。比如:如果Servlet再硬盘中的实际目录比较复杂和长,不容易记住,这个时候我们就可以用一个名称比较短且容易记忆的名称来表示servlet文件的实际路径,我们可以将这种方法称之为映射。
比如:web的根路径是 http://ServerIP/myweb ,Servlet再硬盘中的路径是A/B/C/D/E/F/G/myServlet.servlet,如果不映射的话,我们就需要输入:http://ServerIP/myweb/A/B/C/D/E/F/G/myServlet.servlet来访问servlet文件,如果我们配置了<url-pattern>/servletPath/myservlet</url-pattern>后,我们就可以使用下面的URL来访问
http://ServerIP/myweb/servletPath/myServlet.servlet,动过对比,我们就可以看出 <servlet-mapping>配置的节点的重要性了哦
Servlet的会话机制:
Servlet页面跟JSP页面类似,也可以使用会话机制来保存和读取属性参数:
public HttpSession getSession(boolean creat)
当create参数为true时,表示如果会话对象存在则直接截取,如果不存在则创建一个新的会话并返回。 当参数为false的时,表示如果会话对象存在则直接截取,如果不存在就直接返回NULL,并不创建新的会话对象
保存属性对象
public Object setAttribute(String name, Object attribute);
读取属性对象
public Object getAttribute(String name);
Servlet请求转发
Web应用中,Servlet除了直接接受客户端请求执行对应的业务逻辑操作之外,它还经常充当控制器(controller).充当控制器的Servlet可以将请求转换给另外一个Servlet或者JSP页面,甚至是静态的HTML页面,然后由他们进行处理并产生对应的响应。 应该注意的是,请求转发只发生在同一个上下文中,这里所谓的上下文就是指Servlet所在的应用程序的范围。
这里需要注意点的是,如果使用Request获取 RequestDispatcher并转发给其他的Servlet时,所使用的路径是 Servlet再Web.xml注册的路径。
Jason
2014年05月11日