J2EE核心技术--JSP和Servlet

说到JSP和Servlet,不得不讲讲他哥俩的来龙去脉,Servlet是先出者,是为了满足生成动态页面的需求,但是他有一个巨大的毛病,就是需要在Java类中一句句的输出HTML标签来实现动态效果,这种写法令开发者头疼不已,因为随着页面的复杂度提升,动态和静态的整合就显得非常麻烦,修改起来也不是很好。因此,JSP横空出世,他支持在HTML页面直接写Java语句,不需要后期的整合,直接变成JSP文件,并且Sun公司一度把JSP从编码形式上改得和HTML标签极度相似。但是,Servlet并没有因为JSP退出舞台,而是退居二线,一心一意的做起了Controller层,和View层的JSP配合完成一个又一个艰巨的任务。

那就先从HelloWorld例子入手,先写一个Servlet往客户端输出的例子,现在eclipse下创建一个Servlet或Class文件,代码如下:

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } }

运行上段Servlet代码,还需要在服务器中配置并发布,我用的服务器是tomcat,具体的操作过程不再赘述,百度即可。从这个例子可以看出Servlet就是一个Java类,它是通过out.println方法一句句的输入HTML达到网页动态效果的。

下面再来看一段JSP的代码,这时候创建的就是一个JSP文件了,不是Java类,JSP文件支持HTML,也可以在他里面写Java代码,示例如下:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <% out.println("HelloJSP");%> </body> </html>

上面的例子直接拷贝到tomcat的webapps下就可以运行,不需要像Servlet一些样配置config文件等。写JSP时可以直接在需要动态的部分中插入需要的Java代码,其余的静态部分依旧按照HTML的写法即可,其实,从例子可以看出 JSP就是能写Java代码的HTML文件。

下面再举一个JSP和Servlet配合完成的例子,把JSP中的数据提交到Servlet,并且显示出来,代码如下:

JSP页面的代码:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <form action="HelloServlet" method="post"> <input type="text" name="txtInput"/> <input type="submit" name="btnSubmit" value="Submit Order"/> </form> </body> </html>


Servlet文件的代码:

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { //doGet方法将数据放在头部,直接在url里面给出 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String strParam=request.getParameter("txtInput").toString(); PrintWriter out = response.getWriter(); out.println(strParam); } @Override //doPost在专门的数据区,因此post能传递大量的数据 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp);//调用doGet方法 } }


从例子可以看出JSP和Servlet互相配合,完成了数据的提交和页面的跳转,他俩配合实为完美。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值