Servlet编程是Java Web应用程序开发的一部分。JSP(Java Server Pages)是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
在仅使用Servlet的web应用开发中,部分Servlet代码通过使用打印语句打印HTML标签来在浏览器中显示页面,而JSP可以代替显示页面的Servlet。
Servlet是运行在Web服务器端的Java应用程序,属于客户与服务器响应的中间层。(相当于一个.java类,属于纯编程)
1.先来学习web.xml文件的配置:
由三部分组成,或者说是必须的两部分组成。
第一部分:由
第二部分:由
第三部分:Web容器默认设置的页面。
小结一下:第一部分和第二部分是绑定的,第一部分相当于一个类和它的路径的声明,第二部分才是开始使用。(所以第二部分才是真正重要的!!!)这就是为什么在JSP里面很少看见一个的类的声明。大部分都是直接使用了。
2.Servlet的生命周期:
从图 9-9 中可以看出,大概流程:所以这就是为什么我们每一次运行这个java应用程序,他从doGet开始运行。
当客户端向 Web 服务器提出第 1 次Servlet请求时,Web 服务器会实例化一个Servlet,并且调用init()方法;(只有第一次请求会实例化,之后再此调用使用的都是之前实例化的)
如果Web服务器中已经存在了一个Servlet实例,将直接使用此实例;
然后调用service()方法,service()方法将根据客户端的请求方式来决定调用对应的doXXX()方法;(如果没有service方法,默认是使用doGet方法)
当Servlet从Web 服务器中消亡时,Web 服务器将会调用 Servlet 的 destroy()方法。
(大概流程就是,你通过浏览器访问服务器的java应用程序,它首先实例化,然后调用service方法选择使用哪个doXXX方法,最后Servlet消亡,使用destroy()方法)
3.Servlet对应的JSP内置对象的接口:(需要记忆!)
out对象: PrintWriter out = response.getWriter();
//PrintWriter类 获得out对象 ,它的值为 response.getWriter()
request和response对象: public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ }
//它们作为参数的时候就已经有了。
session对象:HttpSession session = request.getSession();
//和获取out对象的方法差不多。不过它的值为request 。(购物车关系)
application对象:ServletContext application = this.get ServletContext();
//和获取out对象的方法差不多。不过它的值为this.(共享关系)
Servlet内部跳转:
重定向方法:response.sendRedirect(“内部地址”);
//用法和jsp里面使用jsp表达式的方法是一样的。
服务器内部跳转:用到application对象,这里省略。
3.5 在Servlet中使用参数:
其实就是把参数放在web.xml文件里面,使得规定的文件使用什么参数。
分为全局参数和局部参数。全局参数所有文件都能使用,局部参数只有规定的文件能使用。
全局参数:
//常用于定义全局的编码方式(encoding = "gb2312")
局部参数:
//在servelt声明的类中使用这个参数。(常用于连接数据库中的,注册驱动程序。class.forName)
获取参数:getInitParameter(“参数名称”);
4.过滤器:
和前面介绍的第一步布置web.xml文件类似。使用它的方式和前面配置全局参数的使用方式有点相似。都是规定给谁使用。
不过,过滤器要复杂一些。
过滤器还需要创建一个过滤器的类。然后配置web.xml文件的过滤器类。规定哪个文件类使用过滤器。
下面代码分析。
5.编写Servlet的顺序:
(1)让创建的类继承HttpServlet
(2)重写HttpServlet的doGet()方法 //这个看情况,默认是调用这个方法
(3)配置Servlet。 //就是配置web.xml文件,前面讲了三部分。
(4)部署Servlet。 //和前面学的部署一样
(5)测试 //输入网址
6.代码分析:
通过查询学生姓名,提交给另一个类,这个类要显示查询的学生姓名。(使用Servlet参数的方式和过滤器的方式分别分析)
问题一:form.jsp
<%//误区:action虽然是交给DealServlet.java文件,但是注意web.xml定义这个类的名字是什么!!还有表单的提交方式 %>