博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Java-servlet

Posted on 2014-05-11 10:23  星尘的天空  阅读(417)  评论(0编辑  收藏  举报

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日