request隐含对象会转换为javax.servlet.http.HttpServletRequest类型的对象,HttpServletRequest对象是有关于用户端所发出的请求之对象,只要是有关于用户端请求的信息,都可以藉由它来取得,例如请求标头、请求方法、请求参数、使用者IP等等信息。 对于每一个用户请求,容器都会为它产生一个HttpServletRequest对象,在Servlet的doService()或doGet()、 doPost()等方法中,只有HttpServletRequest对象被认定为线程安全的(Thread-safe)。 下面这个例子可以让您取得使用者所发出的请求参数:
<%@page contentType="text/html;charset=Big5" getParameterNames()可以让您取得用户端所发出的请求参数名称,而getParameter()可以让您指定请求参数名称,以取得对应的设定值,如果这个JSP名称是requestdemo.jsp,而您在浏览器中键入: http://localhost:8080/myjsp/requestDemo.jsp?name=justin&nick=caterpillar
也就是说您发出的请求“参数=值”为name=justin以及nick=caterpillar,则网页的执行结果是: <html>
<head><title>取得请求参数</title></head> <body> <h1>取得请求“参数=值”</h1> nick = caterpillar<br> name = justin<br> </body> </html> 当然实际应用上,并不是要求用户直接在网址列上键入以上的参数,而是透过表单来传送参数,如果表单中的栏位发送的是中文,则在取得请求参数之前,必须先指定发送过来的请求编码,例如若是Big5中文的话,则必须先执行以下这行: request.setCharacterEncoding("Big5");
当然每一次都要先执行这行的话有些麻烦,建议可以将这行放在 Filter 中。 与用户端发出的讯息相关的,我们都可以透过request(HttpServletRequest)对象来取得,例如下面的程序可以取得一些用户端的讯息:
<%@page contentType="text/html;charset=big5" 如果我们还是使用以下的请求方式: http://localhost:8080/myjsp/requestDemo.jsp?name=justin&nick=caterpillar
则JSP网页会传回以下的讯息,以下直接显示网页上的文字: 取得用户端信息
请求的服务器: localhost 使用协定: HTTP/1.1 请求方法: GET 请求的埠号: 8080 Context路径: /myjsp Servlet路径: /requestdemo.jsp URI路径: /myjsp/requestdemo.jsp 查询字符串: name=justin&nick=caterpillar 使用者主机IP: 127.0.0.1 使用者使用埠号: 1060 关于更多request(HttpServletRequest)对象可用的方法,可以查询Servlet API Javadocs中有关于HttpServletRequest的部份(Tomcat安装后可以在安装目录中的webapps/tomcat- docs/servletapi/index.html 查询到)。 |