Java Web编程——1、Servlet

1、Servlet是一个运行在Web服务器中的Java小程序。Servlet将会接收和响应来自Web客户端的请求,使用HTTP进行同行。

A servlet is a small Java program that runs within a Web server. Servlets receive and respond to requests from Web clients, usually across HTTP, the HyperText Transfer Protocol.

2、Servlet作为所有Web应用程序的核心类,它是唯一的既可以直接处理和响应用户请求,也可以将处理工作委托给应用中其他部分的类。

4、目前,JavaEE支持的唯一Servlet协议是:HTTP。

3、所有的的Servlet都必须实现javax.servlet.Servlet接口,改接口包含的方法如下:


4、在多数情况下,Servlet,都继承了javax.servlet.GenericServlet。GenericServlet extends java.lang.Object implements ServletServletConfig, java.io.Serializable。GenericServlet只包含一个抽象方法:service()。

5、javax.servlet.Servlet和javax.servlet.GenericServlet都不依赖具体协议。

6、作为相应HTTP请求的java.servlet.http.HttpServlet,继承了GenericServlet。并且实现了只接受HTTP请求的service方法。并且提供了相应每种HTTP方法类型(get、post、head、put、delete、options、trace)的方法的空实现。我们使用的Servlet总是会继承HttpServlet。当我们继承,但是不重写其中的方法的时候,我们的Servlet就可以接受HTTP请求了,但是会返回一个405 METHOD NOT ALLOWED的错误(WARNING:任何未重写的方法都会返回该错误。)

7、配置Servlet:

1)在web.xml中部署:

<servlet>

<servlet-name>testServlet</servlet-name>

<servlet-class>com.howie.TestServlet</servlet-class>

<loda-on-startup>1</loda-on-startup> <!-- 启动顺序-->

<init-param>

<param-name></param-name>

<param-value></param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>testServlet</servlet-name>

<url-pattern>/test</url-pattern>

</servlet-mapping>

---不直接将URL映射到Servlet类中的原因:相同的逻辑,但是链接到不同的数据库等情况的发生。

2)直接通过注解

@WebServlet

name = “testServlet”,

urlPatterns = {"/test", "/other"},

loadOnStartup=1,

initParams ={

@WebInitParam(name="",value="")

@WebInitParam(name="",value="")

}

8、由于Servlet类的service方法会处理所有到达的请求,但是在实际中,service的实现非常复杂,并且随着Web容器的不同,其实现方法也会有所不同。扩展HttpServlet的优点则在于我们无需关注这些细节问题。唯一的要求是需要从谢doGet方法或者其他会用到的方法。

9、HttpServletRequest:提供了多个可以获得HTTP请求的详细信息的方法。其中请求参数有两种不同的形式:查询参数、以application/x-www-form-urlencoded或multipart/form-data编码的请求正文。

需要注意的是:

在第一次调用请求对象的getParameter、getParameterMap、getParameterNames、getParameterValues方法时,Web容器会判断该请求是否包含了post变量,如果包含,它将读取请求的InputS他ream并解析这些post变量。请求的InputStream只能被读取一次,再次尝试获取时,将会触发IllegalStateException异常。

10、HttpServletResponse:

注意:1)不要对同一个响应对象同时使用getOutputStream和getWriter方法,否则将会触发IllegalStateException异常。

          2)如果想要设置响应内容的编码格式,则需要在getWriter前使用setContentType和setCharacterEncoding方法进行设置。

11、初始化上下文参数:

1)在配置文件中通过在web.xml中使用部署描述符配置

<context-param>

<param-name>settingContext</param-name>

<param-value>OOO</param-value>

</context-param>

此时可以通过getServletContext()获取到上下文。然后通过getInitParameter(“settingContext”)获取某个初始化的值。

2)如果不使用部署描述符配置,则可以通过ServletContent的setInitParameter设置;但是需要注意的是:该方法只能在javax.servlet.ServletContextListener的contextnitialized方法或者javax.servlet.ServletContainerInitializer的onStartup方法中调用。

3)只为某个sevlet进行初始化上下文,使用<init-param>或者initParams @WebInitParam。

如果你对TOMCAT Servlet有更多兴趣,可以查看API:http://tomcat.apache.org/tomcat-5.5-doc/servletapi/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值