从JSP页面访问servlet
- 格式:pptx
- 大小:613.06 KB
- 文档页数:16
servlet跳转页面的几种方法一直对Servlet的几种页面跳转方式,理解的糊里糊涂的,今天在网上搜了一把,找到一遍比较好的,记下来,以后看看。
跳转分两部分,一是发生在servlet,一是在JSP,其实JSP也就是servlet,不过还是有点差异滴。
Servlet:当然,在servlet中,一般跳转都发生在doGet, doPost等方法里面。
1) redirect 方式response.sendRedirect("/a.jsp");页面的路径是相对路径。
sendRedirect可以将页面跳转到任何页面,不一定局限于本web应用中,如:response.sendRedirect("");跳转后浏览器地址栏变化。
这种方式要传值出去的话,只能在url中带parameter或者放在session中,无法使用request.setAttribute来传递。
2) forward方式RequestDispatcher dispatcher = request.getRequestDispatcher("/a.jsp"); dispatcher .forward(request, response);页面的路径是相对路径。
forward方式只能跳转到本web应用中的页面上。
跳转后浏览器地址栏不会变化。
使用这种方式跳转,传值可以使用三种方法:url中带parameter,session,request.setAttributeJSP:1) response.sendRedirect();和servlet的response.sendRedirect()方式一样。
此语句前不允许有out.flush(),如果有,会有异常:ng.IllegalStateException: Can't sendRedirect() after data has committed to the client.atcom.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpRes ponse.java:558)...跳转后浏览器地址栏变化如果要跳到不同主机下,跳转后,此语句后面的语句会继续执行,如同新开了线程,但是对response的操作已经无意义了;如果要跳到相同主机下,此语句后面的语句执行完成后才会跳转;2) response.setHeader("Location","");此语句前不允许有out.flush(),如果有,页面不会跳转。
第一章测试1【单选题】(2分)关于CSS的描述,下列说法正确的是()。
A.只有独立的CSS文件才符合结构与表现分离的特点。
B.当CSS作为独立的文件时,必须以.html为后缀名。
C.CSS用于设置HTML页面中的文本内容、图片的外形以及版面的布局等外观显示样式。
D.目前流行的CSS版本为CSS3。
2【单选题】(2分)下列选项中,JavaScript运算符的优先级最高的是()。
A.==B.++C.()D.+3【单选题】(2分)根据运算符的优先级,表达式z=2*(1+2*3)的运算结果为()。
A.16B.18C.14D.124【单选题】(2分)下列选项中,没有对应的结束标记的是哪一项?()。
A.<title>B.<html>C.<br/>D.<body>5【单选题】(2分)下列选项中,字号最大的是哪一项?()。
A.<h1>B.<h4>C.<h2>D.<h3>第二章测试1【单选题】(2分)一个格式良好的XML文件的根元素个数是()。
A.3B.4C.2D.12【单选题】(2分)假设在helloapp应用中有一个hello.jsp,它的文件路径如下:<CATALINA_HOME>/webapps/helloapp/hello/hello.jsp在web.xml文件中没有对hello.jsp作任何配置,那么浏览器端访问hello.jsp的URL是什么?A.http://localhost:8080/hello.jspB.http://localhost:8080/helloapp.jspC.http://localhost:8080/helloD.http://localhost:8080/helloapp/hello/hello.jsp3【单选题】(2分)下面选项中,关于Tomcat存放Web应用程序需要访问的JAR包的是()。
jsp的运行原理
JSP(Java Server Pages)是一种用于动态生成网页的技术,其运行原理如下:
1. 客户端(浏览器)发送一个HTTP请求到服务器,请求访问一个JSP页面。
2. 服务器接收到请求后,通过Web容器(如Tomcat)将JSP 页面转化为一个Servlet。
3. Servlet容器编译并加载Servlet,并创建一个Servlet实例。
4. Servlet实例执行JSP页面的代码,生成动态内容。
5. 生成的动态内容被发送回服务器。
6. 服务器将生成的动态内容作为HTTP响应发送回客户端。
7. 客户端接收到HTTP响应并将其显示在浏览器中。
在JSP运行过程中,以下是一些关键点:
- JSP页面中的Java代码会被编译并转化为相应的Servlet类。
这个过程只发生一次,即在第一次请求JSP页面时发生。
之后的请求会直接使用已编译的Servlet类。
- JSP页面中的HTML、JavaScript等静态内容会直接返回给客户端,而不需要进行编译。
- JSP页面中的动态内容是通过嵌入的Java代码和JSP标签来实现的,这些代码会在运行时被执行。
- Servlet容器负责管理和执行Servlet的生命周期,并处理与客户端的通信。
- JSP支持标签库(Taglib)的使用,可以方便地封装和重用一些常见的功能。
总之,JSP通过将Java代码嵌入在HTML页面中,使得开发人员可以方便地生成动态内容,并以网页形式呈现给用户。
第12章Servlet基础1.简述Servlet和JSP的关系。
答:Servlet是服务器端运行的一种Java应用程序。
当浏览器端有请求则将其结果传递给浏览器。
在JSP中使用到的所有对象都将被转换为Servlet或者非Servlet的Java对象,然后被执行,所以执行JSP实际上与执行Servlet是一样的。
2.简述Servlet的生命周期。
答:Servlet的生命周期可分为下面几个阶段:(1)装载Servlet。
(2)实例化一个Servlet实例对象。
(3)调用Servlet的init( )方法进行初始化。
(4)服务。
(5)卸载。
3.简述HttpSession接口的功能和使用方法。
答:.HttpSession接口是Servlet提供会话追踪解决方案。
HttpSession对象存放在服务器端,只是对cookie和url重写技术的封装应用。
使用HttpSession进行会话控制的过程:(1)获得一个HttpSession实例对象;(2)访问和设置与会话相关联信息,维护会话的状态;(3)废弃会话数据。
4.简述开发一个Servlet所需要的步骤。
答:第一步:编写Servlet实例第二步:在web.xml文件中配置该Servlet第三步:编写其它文件5.编写一个html页面和一个Servelt,实现利用Servelt的doPost方法读取html文件中Form表单内容。
答:参考12.6.26.写一个利用HttpSession接口的用户登录的Servlet,当用户已经登录时,返回欢迎信息;否则转向登录页面。
答:第一步:编写Servlet实例SessionServlet.java所示。
package com;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;/**** 使用HttpSession管理会话的登录Servlet*/public class LoginServlet extends HttpServlet {p rotected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { doPost(request, response);}p rotected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=GB2312");PrintWriter out = response.getWriter();out.println("<html>");out.println("<body>");out.println("<head>");out.println("<title>使用HttpSession管理会话的登录页面</title>");out.println("</head>");out.println("<body>");// 获取会话对象HttpSession session = request.getSession();// 从会话对象中读取数据Boolean isLogin = (Boolean) session.getAttribute("isLogin");if (isLogin == null) {isLogin = Boolean.FALSE;}String user = request.getParameter("user");String password = request.getParameter("pass");if (isLogin.booleanValue()) {// 从会话对象中读取数据user = (String) session.getAttribute("user");Date loginTime = new Date(session.getCreationTime());out.println("<h2>欢迎您," + user + "!</h2>");out.println("<h2>您的登录时间是:" + loginTime + "!</h2>");} else if ((user != null) && (password != null)) {// 在会话对象中保存数据session.setAttribute("user", user);session.setAttribute("isLogin", Boolean.TRUE);Date loginTime = new Date(session.getCreationTime());out.println("<h2>欢迎您," + user + "!</h2>");out.println("<h2>您的登录时间是:" + loginTime + "!</h2>");} else {out.println("<h2>请在下面输入登录信息</h2>");out.println("<form method=\"post\" action=\"login\">");out.println("<table>");out.println("<tr>");out.println("<td>用户名:</td>");out.println("<td><input name=\"user\" type=\"text\"></td>");out.println("</tr>");out.println("<tr>");out.println("<td>密码:</td>");out.println("<td><input name=\"pass\" type=\"password\"></td>");out.println("</tr>");out.println("<tr>");out.println("<td></td>");out.println("<td><input name=\"ok\" type=\"submit\" value=\"确定\">");out.println("<input name=\"cancel\" type=\"reset\" value=\"重置\"></td>");out.println("</tr>");out.println("</table>");out.println("</form>");}out.println("</body>");out.println("</html>");}}第二步:在web.xml文件中配置该Servlet<web-app>……<!-- ServerInfoServlet definition --><servlet><description></description><display-name>getSession</display-name><servlet-name> getSession </servlet-name><servlet-class>com.SessionServlet</servlet-class></servlet><!-- SessionServlet definition --><servlet-mapping><servlet-name>getSession</servlet-name><url-pattern>/getSession</url-pattern></servlet-mapping>……</web-app>第13章使用Servlet过滤器和监听器1、什么是过滤器?什么是监听器?分别应用在哪些方面?答:对Web应用来说,过滤器就是驻留在服务器端,在源数据和目的数据间,对Web请求和Web响应的头属性(Header)和内容体(Body)进行操作的一种特殊Web组件。
WEB应用程序开发【JAVA-WEB开发】考试题库188题一、填空题1.JSP的_____对象用来保存单个用户访问时的一些信息。
答案:session2.Out对象主要用来向___()_______输出各种数据类型的内容,并且管理应用服务器上的输出缓冲区,其基类是___()___________。
答案:浏览器,string3.getParameter()方法中以____()______形式返回指定参数的所有值。
答案:字符串4.为了使连入Internet的众多电脑主机在通信时能够相互识别,Internet中的每一台主机都分配有一个惟一的()位地址,该地址称为(),也称作网际地址。
答案:32,IP地址5.Internet是一个以()、通信协议为基础,连接各个国家、各个部门、各个机构计算机网络的数据通信网。
答案:TCP/IP6.一个循环语句包含的4个部分为:初始化部分()、()、迭代部分、()。
答案:initialization,循环体部分,中止部分7.JDBC主要由两部分组成:一部分是访问数据库的高层接口,即通常所说的___ ___;另一部分是由数据库厂商提供的使Java程序能够与数据库连接通信的驱动程序,即___ ____。
答案:JDBC API,JDBC Database Driver8.response对象的____________方法可以将当前客户端的请求转到其他页面去。
答案:sendRedirect(URL url)9._____类型的Servlet接受HTTP请求且生成HTTP响应。
答案:response10.答案:“<!–”和“–> out对象的__ _____方法,功能是输出缓冲的内容。
答案:out.flush()11.JSP页面中,输出型注释的内容写在 _____ 之间。
12.在“<%!”和“%>”之间声明的变量又称为________,其作用范围为整个JSP页面。
JSP 不带参数请求Servlet不带参数连接Servlet文件,即通过form表单或者URL地址方式,直接连接Servlet文件,并通过Servlet进行一些控制处理,返回响应到JSP页面。
例如,通过上述创建的Servlet.java文件,然后再创建一个JSP页面,来连接该文件。
文件名:ToServlet.jsp地址中,会看到Servlet文件的访问路径为“Servlet/Servlet”。
因为,Servlet文件是通过MyEclipse系统自动创建的配置内容,所以前面的Servlet为访问路径的缺省地址。
如果用户手动添加Servlet的配置内容,则可以自定义Servlet的映射地址,如<url-pattern>/Servlet/Servlet</url-pattern>内容。
当然,在配置过程中,除了注意<servlet>元素中<servlet-name>子元素名称,与<servlet-mapping>元素中<servlet-name>子元素名称相同以外,还要注意以下访问路径的规则。
使用确切路径匹配以“/”开始,后面跟一个具体的路径名称,也可以包含子路径。
例如:/time、/User/time都是确切的路径匹配。
在该匹配模式下,客户端只能通过这一唯一的路径来访问该Servlet实例。
●模糊路径匹配以“/”开始,以“/*”结束,中间可以包含子路径。
例如:/*、/basic/*、/user/management/* 都属于模糊路径匹配。
在该匹配模式下,客户端可以通过一组相关的路径来访问该Servlet的实例,即可以通过URL来传递参数内容。
●扩展名匹配以“*.”(星号和点)开始,以任意其它的字符结束。
例如:*.do、*.action、*.ctrl 等都属于扩展名的匹配。
在该匹配模式下,客户端可以通过一组相关的路径来访问该Servlet的实例,即可以通过URL来传递参数内容。
Servlet.service()forservlet[jsp]incontext....错误Servlet.service() for servlet [jsp] in context with path [/mvcTest] threw exception [ng.NullPointerException] with root causeng.NullPointerException这是在⽤tomcat写⼀个⼩应⽤时遇到的错误,在⽹上看了很多没看明⽩,最终试错n次后发现了问题,其实这个问题(我遇到的那种情况,可能这个报错不⽌我遇到的这种情况导致)的根本原因是:.jsp页⾯代码导致的,因为为了实现前端和后台的交互,在有些jsp代码中需要后台传⼊相应的数据到该jsp中,所以jsp代码中就有了接收的代码段,⽽当我们想跳转到该jsp页⾯时却没有传⼊相应的数据就会报上⾯所⽰的错误:空指针(因为后端没有参数传⼊时那么jsp中的参数就是⼀个空值,⽽空值是不能进⾏很多操作的)。
我们有时直接跳到jsp页⾯成功是因为该jsp页⾯是不需要传⼊数据的。
如何处理这个问题:当然是传⼊相应的数据了,注意⽤request对象传数据时,requset对象域空间中的数据只能存活于⼀个请求中,那么就可能需要多次setAttribute()和多次getAttribute()当然如果在jsp页⾯中对⽤到传⼊参数的相关代码块做判断也是可以的,即满⾜相应的条件时再执⾏该代码块即在jsp页⾯端时判断时要加上判断接收到的数据是否为null,不为空的话再执⾏含有参数的代码块;你也可以⾃⼰测试,如果你想跳到相应的页⾯,则直接在浏览器中访问看是否可以访问到,访问出错,那肯定就说明该jsp页⾯是不能直接访问的,可能需要传⼊参数,当然前提是你的代码要是正确的;说到这⾥你明⽩的话就不必往下看了,下⾯是我遇到的场景-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------当然导致这个问题的原因可能不⽌我下⾯所说的这⼀种。
j s p程序设计笔试填空及答案(总10页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除1、指令标识通常以(<%@)标记开始,以(%>)标记结束。
2、如果想在JSP页面中调用exception对象输出错误信息,需要将页面指令的(isErropage)属性设置为true。
3、页面指令的(import)属性可出现多次。
4、表达式用于向页面输出信息,其使用格式是以(<%=)标记开始,以(%>)标记结束。
5、在页面中通过声明标识声明的变量和方法的有效范围为(整个页面),他们将成为JSP页面被转换成Java类后类中的(属性)和(方法)。
6、通常应用(<jsp:useBean>)动作标识可以在JSP页面中创建一个Bean实例,并且通过属性的设置可以将该实例存储到JSP中的指定范围内。
7、在JSP内置对象中,(request)对象是从客户端向服务器端发出请求,包括用户提交的信息以及客户端的一些信息,此对象的(getparameter)方法可以获取客户端表单中某输入框提交的信息。
8、在JSP内置对象中,(response)对象提供了设置HTTP响应报头的方法。
9、JSP内置对象的有效范围由小到大为(page)、(request)、(session)和(application)。
10、按功能JavaBean可以分为(可视化JavaBean)和(非可视化JavaBean)。
11、通常情况下通过类的(forName(String className))方法加载要连接数据库的Driver类。
1.W3C是指___万维网联盟_______。
2.IP地址用四组由圆点分割的数字表示,其中每一组数字都在__0至254___之间。
3.URL是Uniform Resource Locator的缩写,中文称之为统一资源定位器。
4.超级链接标记<a>的href属性取值为链接的目标地址。
总结JSP与servlet之间的传值JSP与servlet之间的传值有两种情况:JSP -> servlet,servlet -> JSP。
通过对象request和session (不考虑application)完成传值。
一、JSP -> servletJSP页面有3种方法向servlet传值:form表单、URL 、其他<!-- JSP page -->...<%......session.setAttribute("testSession","Hello session");reqeust.setAttribute("testRequest","Hello request");%><a href="JspServlet?action=toServlet">click me</a><form action="JspServlet?action=toServlet" method="post" name="form"><input name="username" type="test" /><input type="submit" value="submit"></form>...1、对于该JSP页面form表单的内容,如<input>标签,在servlet可用request.getParameter("username");获取。
2、URL:比如这里的<a>标签的href属性与<form>标签的action属性的值"JspServlet?action=toServlet",在servlet同样用request.getParameter("action")获取;所要注意的是这里的url 要和servlet在web.xml里的<url-pattern>标签的路径所对应。
Servlet⼯作原理解析Tomcat中真正管理Servlet的是Context容器,⼀个Context对应⼀个Web⼯程,在Tomcat的配置⽂件中可以很容易发现:<Context path-"" docBase="" reloadable="true"/>Tomcat7开始⽀持嵌⼊式⽅式,通过添加⼀个启动类org.apache.catalina.startup.Tomcat,创建⼀个这个类的实例对象并调⽤start⽅法就可以很容易启动Tomcat(SpringBoot的内嵌Tomcat容器启动⼤概就基于此),还可以通过这个对象来添加和修改Tomcat的配置参数,如动态添加Context,Servlet 等Servlet容器启动过程添加⼀个Web应⽤时将会创建⼀个StandardContext对象,这个对象就是Tomcat中管理Servlet的Context具体对象了。
并且会给这个容器对象设置必要的参数,如url和path分别对应这个应⽤在Tomcat中的访问路径和这个应⽤实际的物理路径Tomcat的启⽤逻辑是基于观察者模式设计的,所有的容器都会继承Lifecycle(⽣命周期)接⼝,它管理着容器的整个⽣命周期,所有容器的修改和状态的改变都会由它去通知已经注册的观察者(Listener)Web应⽤的初始化⼯作Web应⽤的初始化⼯作是在ContextConfig的configureStart⽅法中实现的,引⽤⽤的初始化主要是解析web.xml⽂件,这个⽂件描述了⼀个Web 应⽤的关键信息,也是⼀个Web应⽤的⼊⼝web.xml⽂件中的各个配置项会被解析成相应的属性保存在WebXml对象中,如果当前的应⽤⽀持Servlet3.0还会完成⼀些额外的操作,这些操作主要是Servlet3.0新特性的解析以及对annotations注解的⽀持接下来将WebXml对象中的属性设置到Context容器中,当然这⾥包括创建Servlet对象,Filter,Listener等在Tomcat中Servlet会被包装成StandardWrapper,这是因为StandardWrapper是Tomcat容器的⼀部分,具有容器的特性,⽽Servlet作为独⽴的Web开发标准,不应该强耦合在Tomcat⾥,这⾥主要是为了解耦除了将Servlet包装成StandardWrapper并作为⼦容器添加到Context外,其他所有的web.xml属性都被解析到Context中,所以说Context才是真正运⾏Servlet的地⽅⼀个Web应⽤对应⼀个Context容器,容器的配置属性由应⽤的web.xml指定创建Ser vlet实例创建Se r v le t对象如果Servlet的load-on-startup配置项⼤于0,那么在Context容器启动时就会被实例化在Tomcat的conf下的web.xml⽂件(默认配置⽂件)定义了两个Servlet,分别是org.apache.catalina.servlets.DefaultServlet和org.apache.jasper.servlet.JspServlet。
Jsp页⾯跳转和js控制页⾯跳转的⼏种⽅法Jsp 页⾯跳转的⼏种⽅法1. RequestDispatcher.forward()在服务器端起作⽤,当使⽤forward()时,Servlet engine传递HTTP请求从当前的Servlet或者是JSP到另外的⼀个Servlet、JSP 或普通HTML⽂件,也即你的form提交⾄a.jsp,在a.jsp⽤到了forward()重定向⾄b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数⾃动传递. 但forward()⽆法重定向⾄有frame的jsp⽂件,可以重定向⾄有frame的html⽂件,同时forward()⽆法在后⾯带参数传递,⽐如servlet?name=frank,这样不⾏,可以程序内通过response.setAttribute("name",name)来传⾄下⼀个页⾯。
重定向后浏览器地址栏URL不变。
例:在servlet中进⾏重定向public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{response.setContentType("text/html; charset=gb2312");ServletContext sc = getServletContext();RequestDispatcher rd = null;rd = sc.getRequestDispatcher("/index.jsp"); //定向的页⾯rd.forward(request, response);}或request.getRequestDispatcher(" /index.jsp ").forward(request, response);//转发到index .jspgetServletConfig().getServletContext().getRequestDispatcher("/index.jsp ").forward(request, response);//转发到 index .jsp通常在servlet中使⽤,不在jsp中使⽤。
一、选择题1、以下文件名后缀中,只有( C )不是静态网页的后缀2、以下文件名后缀中,只有( B )不是动态网页的后缀。
3、在page 指令中,( C )属性是可以在页面中重复的属性。
4、JSP 勺结构由( B )组成(多选) 。
6、下面哪种数据类型是基本类型(7、下面哪种数据类型是引用类型(8、下面哪一个运算符具有 3 个操作数( D9、下面那个运算符只有一个操作数( A )。
10、下面那个语句是条件语句( C )。
12、常量使用( C )进行修饰Java Web 程序设计题库A 、.htmlB 、 .htmC .JSPD 、.shtmlA 、.jspB 、 .htmlC 、 .aspxD 、 p hpA 、languageB 、 bufferC 、importD 、 a utoflushA 、指令B 、注释C 脚本元素D 、操作5、以下选项中,那一项不是 JS 宵旨令(B )。
A 、 pageB 、 importC 、 includeD 、taglibA 、 classB 、 interfaceC 数组D 、charA 、 booleanB 、 intC 、 interfaceD 、longA 、 *B 、 ++C 、&& D 、?: A 、 B 、 || C 、<< D 、 /A 、 break 语句B 、 while 语句C 、 if 语句D 、 for 语句11、类中的成员默认的访问修饰符是( A )。
A 、 privateB 、 protectedC 、 public D、A 、 privateB 、 abstractC 、 finalD 、static13、包含 Servlet 发回到客户端信息勺 ServletResponse 对象是由( )创建的。
A . 客户端的浏览器B. Web 服务器的HTTP 引擎C. Web 服务器的Servlet 容器D. Servlet 对象14、对于标准的 Web 网页,通常使用(B )表示响应信息是HTMI 格式的文本文件A . text/css B. text/htmlC . application/vnd.ms-excel 15、 下面哪个方法不属于 session 对象(D A 、 getAttributeNames () C 、 invalidate () 16、 下面哪个方法不属于 request 对象( B A 、 getServerName () C 、 getServletPath () 17、 能够获取当前页信息并调用页面方法的对象是D. application/msword)B 、 getservletContext()D 、 addCookie(Cookie cook))B 、 getServerInfo()D 、 getServerPort()B )A 、 request C 、 PageContextB 、 pageD 、 session18、以下操作中,(A )是与使用JavaBean 无关的A 、jsp:include C 、 jsp:setProperty D 、 jsp:getProperty 19、下面哪个不是 jsp:setProperty 操作的属性( D )。
单项选择题:1.在html中绘制表格时,(C)标记是表格中的换行标记。
A.<table>B.<th>C.<tr>D.<td>2.使用JavaScript语言中Document的(A)方法可以在页面上输出字符。
A.document.write()B.document.print()C.document.out()D.document.flush()3.下列(A)实现单击超级链接是弹出确认对话框,询问用户是否真的删除。
A.<a href="removebook.jsp?bid=1"onClick="return confirm('你真的要删除吗?');">删除</a>B.<a href="removebook.jsp?bid=1"onClick="alert('你真的要删除吗?');">删除</a>C.<a href="removebook.jsp?bid=1"onClick="return alert('你真的要删除吗?');">删除</a>D.<a href="removebook.jsp?bid=1"onChange="confirm('你真的要删除吗?');">删除</a>4.在HTML中引用外部JavaScript文件中的正确代码为(A)。
A.<SCRIPT LANGUAGE="JavaScript"src="calendar.js"></SCRIPT>B.<SCRIPT LANGUAGE="JavaScript"href="calendar.js"></SCRIPT>C.<SCRIPT LANGUAGE="JavaScript"import="calendar.js"></SCRIPT>D.<SCRIPT LANGUAGE="JavaScript"name="calendar.js"></SCRIPT>5.在javaScrpt中window对象的(C)方法用于打开一个新窗口。
JSP 通过超链接访问ServletJSP程序中,单击一个超级链接可以访问另外一个页面,该页面可以是HTML 文件、JSP文件和Servlet程序等。
与通过表单访问Servlet相同的是,超级链接的目标地址的值是Servlet的URL路径。
1.编写代码现在创建一个案例,演示通过超级链接访问Servlet程序。
打开记事本,创建x在该文件中创建一个超级链接,其链接的目标地址是名称为Req的Servlet文件。
打开记事本,创建DoRequest.java文件,其代码如下所示:在Servlet程序源文件中,首先使用response对象设置页面响应的编码形式,即“response.setContentType(CONTENT_TYPE)”,下面使用request对象获得客户端或服务器端的信息,如客户端的IP地址,提交请求的长度,服务器端的Servlet程序URL路径等。
接下来使用out将获得信息输出到客户端。
service方法在这里被doGet 和doPost方法代替,doGet方法处理HTTP的get请求,doPost方法处理HTTP的post请求。
2.部署将xian.jsp文件复制到C:\Tomcat 6.0\webapps\JSPExample目录下。
将DoRequ est.java文件复制到C:\Tomcat 6.0\webapps\JSPExample\WEB-INF\classes目录下,并使用“javac –d . DoRequest.java”命令编译该文件。
3.配置web.xml进入到C:\Tomcat 6.0\webapps\JSPExample\WEB-INF目录下,打开web.xml文件,添加如下代码:打开IE浏览器,在地址栏中输入http://localhost:8080/JSPExample/xian.jsp,单击【转到】,会显示如图5-9所示的窗口。
单击窗口中的超级链接,会显示如图5-10所示的窗口。