ServletJSP配置详解(非常基础)
- 格式:doc
- 大小:36.50 KB
- 文档页数:6
servlet两种配置⽅法详解1、web.xml中Servlet的注解1<servlet>2<!-- servlet的内部名称,⾃定义 -->3<servlet-name>DemoAction</servlet-name>4<!-- servlet的类全名:包名+类名 -->5<servlet-class>com.uplooking.controller.DemoAction</servlet-class>6<load-on-startup>1</load-on-startup>7</servlet>8<!-- servlet的映射配置 -->9<servlet-mapping>10<!-- servlet的内部名称,⼀定要和上⾯的内部名称保持⼀致 -->11<servlet-name>DemoAction</servlet-name>12<!-- servlet的映射路径(访问serclet的名称 -->13<url-pattern>/DemoAction</url-pattern>14</servlet-mapping>1、⾸先,从浏览器中发送请求,是从当前⼯程中的路径与servlet-mapping标签中的url-pattern的标签值进⾏匹配。
2、根据这个映射值,找到servlet-mapping标签中的servlet-name的值与servlet标签中的servlet-name进⾏匹3、匹配到以后,找到servlet标签中的servlet-class标签中对应servlet类的src⽂件夹下的全路径。
4、从⽽调⽤并执⾏相应的servlet类。
注意:servlet-mapping标签中的servlet-name的值与servlet标签中的servlet-name必须相同。
一、介绍servlet在web.xml中的配置方法Servlet是Java编写的服务器端程序,它可以响应客户端的请求并生成动态内容。
在Java Web开发中,通常会使用Servlet来处理用户的请求并生成响应。
而在配置Servlet时,web.xml文件是一个重要的配置文件,其中包含了Servlet的配置信息。
本文将介绍Servlet在web.xml中的配置方法。
二、创建Servlet类在配置Servlet之前,首先需要创建一个Servlet类。
可以通过继承javax.servlet.网络协议.HttpServlet类来创建Servlet类,该类必须实现doGet()或doPost()方法来处理请求。
下面是一个简单的Servlet 类的代码:```javaimport javax.servlet.网络协议.HttpServlet;import javax.servlet.网络协议.HttpServletRequest;import javax.servlet.网络协议.HttpServletResponse;public class HelloWorldServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) {//处理GET请求的逻辑}protected void doPost(HttpServletRequest request, HttpServletResponse response) {//处理POST请求的逻辑}}```三、在web.xml中配置Servlet在web.xml文件中使用<servlet>和<servlet-mapping>元素来配置Servlet。
首先在<servlet>元素中指定Servlet的名称和Servlet类的完整路径,例如:```xml<servlet><servlet-name>HelloWorldServlet</servlet-name><servlet-class.example.HelloWorldServlet</servlet-class></servlet>```其中,<servlet-name>用于标识Servlet的名称,<servlet-class>指定了Servlet类的完整路径。
说明 servlet 的三种访问方式Servlet是Java中用于处理Web请求的一种技术。
它可以接收来自客户端的请求,并根据请求做出相应的处理和响应。
在Servlet中,有三种主要的访问方式,即通过URL映射、通过注解和通过web.xml配置文件。
下面将分别介绍这三种访问方式的具体内容。
一、URL映射方式URL映射方式是最常见和最基本的Servlet访问方式之一。
通过URL 映射,可以将Servlet与特定的URL地址关联起来,当客户端请求该URL时,Servlet就会被调用并处理请求。
URL映射方式可以通过在web.xml配置文件中进行设置。
在web.xml文件中,可以使用<servlet>和<servlet-mapping>标签来配置Servlet的URL映射。
首先,需要配置<servlet>标签,其中包含Servlet的名称和类路径。
然后,通过<servlet-mapping>标签来指定Servlet的URL映射关系,即将Servlet的名称与URL地址进行关联。
例如,可以将一个名为HelloServlet的Servlet映射到"/hello"的URL上。
当客户端请求"/hello"时,Servlet容器会找到对应的HelloServlet并调用它的service方法来处理请求。
二、注解方式注解方式是一种相对简单和方便的Servlet访问方式。
通过在Servlet类上添加特定的注解,可以指定Servlet的URL映射关系,从而实现访问。
注解方式可以减少配置文件的使用,使得开发更加便捷。
在Servlet类上添加注解时,需要使用@WebServlet注解,并指定urlPatterns属性来设置URL映射关系。
例如,可以使用@WebServlet(urlPatterns = "/hello")将一个名为HelloServlet 的Servlet映射到"/hello"的URL上。
教学活动首页基本内容第 7 章 Java Servlet教学目的与要求:通过本章的学习让学生了解如何用 servlet 读写文件,用 servlet 访问数据库;理解servlet 工作原理,servlet共享变量的使用;掌握编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,掌握会话管理。
教学内容:7.1 servlet 工作原理7.2 编译和安装 servlet7.3 通过 JSP 页面调用 servlet7.4 servlet共享变量7.5 HttpServlet 类7.6 用 servlet 读写文件7.7 用 servlet 访问数据库7.8 会话管理教学基本要求:了解:用 servlet 读写文件,用 servlet 访问数据库理解:servlet 工作原理,servlet共享变量掌握:编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,会话管理教学重点教学难点:servlet 工作原理,编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,会话管理教学方法:教学手段:多媒体教学和计算机程序演示教学小结:(见教学进程)作业与思考:见课后习题课后记载:教学进程第7章 Java Servlet我们已经知道,SUN公司以Java Servlet为基础,推出了Java Server Page。
JSP提供了Java Servlet的几乎所有好处,当一个客户请求一个JSP页面时,JSP引擎根据JSP页面生成一个Java文件,即一个servlet。
这一章,将对servlet做一个较详细的介绍,这不仅对于深刻理解JSP有一定的帮助,而且通过学习servlet,还能使我们选择使用JSP+javabeans+servlet的模式来开发我们的Web应用程序。
我们已经知道,用JSP支持JavaBeans这一特点,可以有效的管理页面的静态部分和页面的动态部分。
Jsp详解1.简介2.Jsp的运行原理3.Jsp的语法1.Jsp模板元素2.Jsp中的脚本表达式3.Jsp中的脚本片段4.Jsp的声明5.Jsp注释6.Jsp指令1.首先我们来看一下page指令的用法2.下面在来看一下include指令3.最后来看一下taglib指令7.Jsp中内置的9个隐式对象8.JSP标签库1.jspinclude标签2.jspforward标签3.jspparam或者jspparams标签4.jspuseBean标签jspsetProperty标签jspgetProperty标签9.Jsp中怎么排查错误简介:JSP全称是JavaServer Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。
JSP这门技术的最大的特点在于,写jsp就像在写html,但:它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
相比servlet而言,servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。
不管是JSP还是Servlet,虽然都可以用于开发动态web资源。
但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。
其原因为,程序的数据通常要美化后再输出:让jsp既用java代码产生动态数据,又做美化会导致页面难以维护。
让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。
因此最好的办法就是根据这两门技术的特点,让它们各自负责各的,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示jsp来做。
Jsp的运行原理:目标:Web服务器是如何调用并执行一个jsp页面的?Jsp页面中的html排版标签是如何被发送到客户端的?Jsp页面中的java代码服务器是如何执行的?Web服务器在调用jsp时,会给jsp提供一些什么java对象?思考:JSP为什么可以像servlet一样,也可以叫做动态web资源的开发技术?其实Jsp就是一个Servlet,所以我们要先介绍Servlet的相关技术,当我们第一次访问Jsp 的时候,Jsp引擎都会将这个Jsp翻译成一个Servlet,这个文件存放在Tomcat中的work目录中,这里,我们新建一个MyJsp.jsp页面,然后访问以下,我们看一下翻译后的源码:1.<%@ page language="java"import="java.util.*"pageEncoding="utf-8"%>2.3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.01 Transitional//EN">4.<html>5.<head>6.7.<title>My JSP 'MyJsp.jsp' starting page</title>8.9.</head>10.11.<body>12. This is my JSP page. <br>13.</body>14.</html>1.package org.apache.jsp;2.3.import javax.servlet.*;4.import javax.servlet.http.*;5.import javax.servlet.jsp.*;6.import java.util.*;7.8.public final class MyJsp_jsp extends org.apache.jasper.runtime.HttpJspBase9.implements org.apache.jasper.runtime.JspSourceDependent {10.11.private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();12.13.private static java.util.List _jspx_dependants;14.15.private javax.el.ExpressionFactory _el_expressionfactory;16.private org.apache.AnnotationProcessor _jsp_annotationprocessor;17.18.public Object getDependants() {19.return _jspx_dependants;20. }21.22.public void _jspInit() {23. _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();24. _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class .getName());25. }26.27.public void _jspDestroy() {28. }29.30.public void _jspService(HttpServletRequest request, HttpServletResponse response)31.throws java.io.IOException, ServletException {32.33. PageContext pageContext = null;34. HttpSession session = null;35. ServletContext application = null;36. ServletConfig config = null;37. JspWriter out = null;38. Object page = this;39. JspWriter _jspx_out = null;40. PageContext _jspx_page_context = null;41.42.43.try {44. response.setContentType("text/html;charset=utf-8");45. pageContext = _jspxFactory.getPageContext(this, request, response,46.null, true, 8192, true);47. _jspx_page_context = pageContext;48. application = pageContext.getServletContext();49. config = pageContext.getServletConfig();50. session = pageContext.getSession();51. out = pageContext.getOut();52. _jspx_out = out;53.54. out.write("\r\n");55. out.write("\r\n");56. out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");57. out.write("<html>\r\n");58. out.write(" <head>\r\n");59. out.write(" \r\n");60. out.write(" <title>My JSP 'MyJsp.jsp' starting page</title>\r\n");61. out.write(" \r\n");62. out.write(" </head>\r\n");63. out.write(" \r\n");64. out.write(" <body>\r\n");65. out.write(" This is my JSP page. <br>\r\n");66. out.write(" </body>\r\n");67. out.write("</html>\r\n");68. } catch (Throwable t) {69.if (!(t instanceof SkipPageException)){70. out = _jspx_out;71.if (out != null && out.getBufferSize() != 0)72.try { out.clearBuffer(); } catch (java.io.IOException e) {}73.if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);74. }75. } finally {76. _jspxFactory.releasePageContext(_jspx_page_context);77. }78. }79.}我们看到,这个类继承了org.apache.jasper.runtime.HttpJspBase,要想看到这个类的源码,我1./*2. * Licensed to the Apache Software Foundation (ASF) under one or more3. * contributor license agreements. See the NOTICE file distributed with4. * this work for additional information regarding copyright ownership.5. * The ASF licenses this file to You under the Apache License, Version 2.06. * (the "License"); you may not use this file except in compliance with7. * the License. You may obtain a copy of the License at8. *9. * /licenses/LICENSE-2.010. *11. * Unless required by applicable law or agreed to in writing, software12. * distributed under the License is distributed on an "AS IS" BASIS,13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.14. * See the License for the specific language governing permissions and15. * limitations under the License.16. */17.18.package org.apache.jasper.runtime;19.20.import java.io.IOException;21.22.import javax.servlet.ServletConfig;23.import javax.servlet.ServletException;24.import javax.servlet.http.HttpServlet;25.import javax.servlet.http.HttpServletRequest;26.import javax.servlet.http.HttpServletResponse;27.import javax.servlet.jsp.HttpJspPage;28.import javax.servlet.jsp.JspFactory;29.30.import piler.Localizer;31.32./**33. * This is the super class of all JSP-generated servlets.34. *35. * @author Anil K. Vijendran36. */37.public abstract class HttpJspBase38.extends HttpServlet39.implements HttpJspPage40.41.42.{43.44.protected HttpJspBase() {45. }46.47.public final void init(ServletConfig config)48.throws ServletException49. {50.super.init(config);51. jspInit();52. _jspInit();53. }54.55.public String getServletInfo() {56.return Localizer.getMessage("");57. }58.59.public final void destroy() {60. jspDestroy();61. _jspDestroy();62. }63.64./**65. * Entry point into service.66. */67.public final void service(HttpServletRequest request, HttpServletResponse response)68.throws ServletException, IOException69. {70. _jspService(request, response);71. }72.73.public void jspInit() {74. }75.76.public void _jspInit() {77. }78.79.public void jspDestroy() {80. }81.82.protected void _jspDestroy() {83. }84.85.public abstract void _jspService(HttpServletRequest request,86. HttpServletResponse response)87.throws ServletException, IOException;88.}好吧,看到了,继承了HttpServlet类,所以说其实Jsp就是一个ServletJsp的语法:1.JSP模版元素2.JSP表达式3.JSP脚本片段4.JSP注释5.JSP指令6.JSP标签7.JSP内置对象8.如何查找JSP页面中的错误Jsp模板元素JSP页面中的HTML内容称之为JSP模版元素。
web.xmlservlet、servlet-mapping配置Servlet 常称为服务器端⼩程序,即运⾏在服务器端的程序,⽤于处理及响应客户的请求。
Servlet类是个特殊的java类,继承于HttpServlet。
---------------------------------------------------------------⽅法客户端通常只有GET和POST两种请求⽅式,Servlet为了响应则两种请求,必须重写doGet()和doPost()⽅法。
⼤部分时候,Servlet对于所有的请求响应都是完全⼀样的,此时只需要重写service()⽅法即可响应客户端的所有请求。
另外,HttpServlet还有两个⽅法:(1). init(ServletConfig config):创建Servlet实例时,调⽤该⽅法的初始化Servlet资源。
(2). destroy():销毁Servlet实例时,⾃动调⽤该⽅法的回收资源。
通常⽆需重写init()和destroy()两个⽅法,除⾮需要在初始化Servlet时,完成某些资源初始化的⽅法,才考虑重写init()⽅法,如果重写了init()⽅法,应在重写该⽅法的第⼀⾏调⽤super.init(config),该⽅法将调⽤HttpServlet的init()⽅法。
如果需要在销毁Servlet之前,先完成某些资源的回收,⽐如关闭数据库连接,才需要重写destory⽅法()。
---------------------------------------------------------------Servlet创建时机(1). 客户端第⼀次请求某个Servlet时,系统创建该Servlet的实例,⼤部分Servlet都是这种Servlet。
(2). Web应⽤启动时⽴即创建Servlet实例,即load-on-start Servlet。
---------------------------------------------------------------Servlet的⽣命周期(1). 创建Servlet实例。
上机一 WEB 应用开发环境配置内容:搭建JSP工作环境,主要包括Java JDK的安装、Tomcat服务器的安装和构建班级论坛的第一个JSP的index.jsp首页面。
1. 安装JDK的步骤如下找到jdk-6-windows-i586.exe 运行安装程序,设定安装路径为D:\学习软件\jdk1.6.0, 其余接受默认安装。
安装结束后就要配置环境变量,包括java_home,path和classpath的设置,操作步骤如下:1)用鼠标右击“我的电脑”,选择“属性”,→“高级”→“环境变量”→“系统变量”→“新建”→在“变量名”输入框中写入“java_home”,在“变量值”输入框中写入“D:\学习软件\jdk1.6.0”→点击“确定”。
2)选中“系统变量”查看是否有classpath项目,如果没有就点击“新建”,→如果已经存在就选中classpath选项,→点击“编辑”按钮,→然后在“变量名”中填写“classpath”,→在“变量值”中填写“.;D:\学习软件\jdk1.6.0\lib;D:学习软件\jdk1.6.0\jre\lib”。
在“path”设定时,“变量名”输入框填写“path”,“变量值”输入框填写“D:\学习软件:\jdk1.6.0\bin”3)打开命令提示符窗口,输入命令“java -version”,看到Java版本的信息,确定安装完成。
2. 安装Tomcat6步骤如下将apache-tomcat-6.0.18.zip从磁盘中解压到D:\学习软件盘符下在D:\学习软件\apache-tomcat-6.0.18\bin目录下双击“startup.bat”启动服务器,双击“shutdown.bat”关闭服务器。
在环境变量中添加“变量名”为“tomcat_home”,“变量值”为“D:\学习软件\apache-tomcat-6.0.18”的设定。
在启动服务器后,打开浏览器,在地址栏输入http://localhost:8080查看,如出现主页,则表示安装成功。
Servlet/JSP配置详解(非常基础)jdbc发表于2004-03-02 作者:jdbc 评价:0/0 评论数:2 点击数:12384 [收藏]摘要:转载:转载请保留本信息,本文来自/resource/article/0/808.html初学者问的诸如:《怎样配置环境变量》《怎样运行Servlet》啊?这样的问题太多了,现在我写一个初学者入门必读,以便对初学者有指导作用!首先是下载工具:我建议初学者用Editplus+JDK,我觉得如果用例如JB,Eclipse,JCreator,虽然刚开始的时候比较方便,但是确使初学者门不知道怎样配置环境变量,从而难以达到知其然,知其所以然的地步。
可以通过如下地址下载:Editplus(最新版本是v2.11):/softdown.php?id=3641&url=http://sc-http.skycn. net/down/epp211a_cn.exe JDK(最新版本是Java2sdk1_4_2):/softdown.php?id=3116&url=http://sc-http.skycn. net/down/j2sdk-1_4_2-windows-i586.exe(这是For Windows)然后就是安装JDK,我是把它装到从c:\JDK目录下面。
然后设置CLASSPATH的问题了:正如操作系统利用PATH来搜索可执行程序一样,Java运行环境也会遍历CLASSPATH来查找类,即便是HelloWorld这样简单的程序,JVM也会遍历CLASSPATH定义的每一个路径,直到找到相应的文件为止。
相信大家用的系统不是2k就是XP,然后就应当如下设置Path:我的电脑->属性->高级->环境变量然后在环境变量的Path后面追加: C:\JDK\bin;.;C:\JDK\lib也可以这样配置:C:\JDK\bin;.;C:\JDK\lib\dt.jar;C:\JDK\lib\tools.jar★记住:环境变量中的 . 切记不能少,它表示当前路径,如果少掉出现的错误等会就说!dt.jar是关于运行环境的类库,tools.jar是关于一些工具的类库如果没有配置:C:\JDK\bin,则会出现“ javac' 不是内部或外部命令,也不是可运行的程序或批处理文件。
”这样的错误。
下面我们就写一个示例程序:打开Editplus,新建一个Java文件,请照着如下输入,要一字不漏,并且分清大小写:public class HelloWorld{public static void main(String[] args){System.out.println("Hello,World!");}}然后把这个文件保存(ctrl + s)到HelloWorld.java,Java是分大小写的,所以大小写一定要分清,是HelloWorld.java不是helloworld.java或者其他。
运行:开始->运行->cmd在控制台中把目录切换到当前目录:javac HelloWorld.javajava HelloWorld你就会在控制台上看见输出的Hello,World!javac是编译命令,它把HelloWorld.java编译成HelloWorld.classjava就是解释命令,JVM把HelloWorld.class解释执行.在这个时候:1、如果出现Exception in thread "main"ng.NoClassDefFoundError: HelloWorld那就是你在环境变量中没有加上那个.(dot)2、如果出现Exception in thread "main" ng.NoSuchMethodError: main或者HelloWorld.java:1: Public class helloworld must be defined in a file called"HelloWorld.java".那就是你没有分清大小写的写入这个HelloWorld,或者保存得时候没有保存为HelloWorld.java。
这个名字一定要跟public class的名字一样对于环境变量的问题就说到这里,下面我先所说怎么在Editplus里面编译和运行,在Tools->参数设置->配置用户工具1.添加工具(添加应用程序)菜单文字:Compile Java Program程序:C:\JDK\bin\javac.exe参数:文件名称初始目录:文件目录2.添加工具(添加应用程序)菜单文字:Run Java Program程序:C:\JDK\bin\java.exe参数:文件名称(不含扩展名)初始目录:文件目录工具组名称可以随便添,比如Debug Java Program。
然后在Tools的下拉菜单中,你就会看见Compile Java Program以及Run Java Program这两个选项,以后你就可以利用ctrl + 1编译和ctrl +2运行程序了下面我们讨论Servlet的运行环境:要运行Servlet,则需要JSP/Servlet container,我建议初学者用Tomcat。
Tomcat(最新版本5.0):/builds/jakarta-tomcat-5/nightly/jakarta-tomcat-5-bin-20030725.zip然后把这个压缩包解压到:C:\Tomcat然后再配置环境变量;添加三个系统变量:JAVA_HOME: C:\JDKTOMCAT_HOME: C:\TomcatCLASSPATH: %JAVA_HOME%\lib;%TOMCAT_HOME%\libTomcat的环境变量就配置完毕了,下面检验Tomcat是否能够运行:在控制台中转到C:\Tomcat\bin这个目录,运行startup,然后回出现一个窗口,连跳一大串东西,最后表示Server已经运行。
在浏览器中输入http://localhost:8080,出现欢迎界面,则表示Tomcat 没问题了。
然后和上面一样,写入你的第一个Servlet。
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HelloWorld extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<html><head><title>");out.println("This is my first Servlet");out.println("</title></head><body>");out.println("<h1>Hello,World!</h1>");out.println("</body></html>");}}然后照样用javac HelloWorld.java来编译这个文件,如果出现无法import javax.servlet.*那么就是应该把C:\Tomcat\common\lib里面的servlet.jar文件拷贝到C:\JDK\jre\lib\ext中,再次编译,就没有问题了!然后在Tomcat目录里面的C:\Tomcat\webapps\ROOT里面按如下的文件结构:ROOT\index.htmlROOT\welcom.jspROOT\WEB-INF\lib\MyServlet.jar(如果你的servlet的.class打成了.jar文件,则放在lib下面)ROOT\WEB-INF\classes\HelloWorld.class(把上面生成的HelloWorld.class文件放在这个里面)然后在浏览器中输入http://localhost:8080/servlet/HelloWorld,于是Server众望所归的报错了:Error 404--Not Found怎么回事呢?Servlet必须使用C:\Tomcat\webapps\ROOT\WEB-INF这个目录下面的web.xml文件进行注册,用EP打开这个web.xml文件,在里面加入:<servlet><servlet-name>HelloWorld</servlet-name><servlet-class>HelloWorld</servlet-class></servlet><servlet-mapping><servlet-name>HelloWorld</servlet-name><url-pattern>/servlet/helloworld</url-pattern></servlet-mapping>这样的结构<servlet><servlet-name>HelloWorld</servlet-name><servlet-class>HelloWorld</servlet-class></servlet>表示指定包含的servlet类。
而以下的结构:<servlet-mapping><servlet-name>HelloWorld</servlet-name><url-pattern>/servlet/HelloWorld</url-pattern></servlet-mapping>表示指定HelloServlet应当映射到哪一种URL模式。
在修改web.xml完毕过后,重新启动Server,然后再输入http://localhost:8080/servlet/HelloWorld,那么偌大一个Hello,World!等着你呢。