selevt与jsp的配置详情
通过eclipse管理tomcat并建立web工程(jsp开发的环境搭建)(eclipse的基本设置
前言:在按照该文章进行安装eclipse(进行jsp或者web开发)之前,首先确保已经安装好jdk和tomcat。
对于jdk6和tomcat6的安装配置在我的博客里也有相应文章。
第一步:下载eclipse软件在浏览器输入/downloads/,如下图点击Windows32 Bit下载单击下图下载获得软件eclipse-jee-indigo-SR1-win32.zip第二步:安装eclipse将eclipse软件解压到myjsp下边的eclipse文件夹即可。
如图:,双击eclipse下的可执行文件,打开软件,如图进入如下页面后就可以建立web工程了,但是在进入开发前一般先设置一下eclipse第三步:eclipse的常用设置1)配置JDK默认情况下,eclipse会自动关联环境变量中配置的jdk,如果我们安装了多个版本的jdk,也可以手工进行配置,方法如下:“Window”--"Preferences"--"Java"--"Installed JREs"--“Add”--"Standard VM"--选择jdk安装目录——>Finish。
选择对应的jdk——>ok即可。
操作情况,如下两图2)配置tomcat“Window”--"Preferences"--"Server"--"Runtime Environments"--“Add”--"Apache"--"Apache Tomcat v6.0"——>Next--选择tomcat6的目录并在JRE中选择1)中配置的jdk——Finish即可。
操作过程如下两图配置完成,可以“Servers”视图中进行验证。
默认“Servers”视图是开启的,如果没有开启,可以通过“Window”--"Show View"--“Server”--选择Servers即可打开“Servers”视图。
Jsp和Servlet关系
Jsp和Servlet关系为什么会出现Jsp?其实对于服务器来说它只认识Servlet,我们完全可以在Servlet⽤resp.getWriter().write("");画出⽹页的界⾯,但是仅仅⼀个很简单的界⾯就要重复的书写resp.getWriter().write(""),并且这还没有加上js、css以及jquery。
但是我们在Servlet写的是java代码可以有逻辑的判断,但是在html、css中⽆法加⼊逻辑导致页⾯是静态的。
为了解决这⼀问题出现了jsp,在jsp中可以书写Java代码、js代码、html代码等。
我们都知道浏览器发送请求到服务器,服务器通过解析其中Servlet的别名找到对应的Servlet并执⾏其中的service⽅法做出处理和响应,那么对于服务器来说它只认识Servlet,那么我们编辑的Jsp到底是如何被服务器识别的?实际上服务器还是将.jsp当作Servlet的别名在你局部配置下的web.xml找有没有对应的Servlet,如果没有找到对应的Servlet就去Tomcat的公共配置下的web.xml(Tomcat安装⽬录conf下的web.xml)找对应的Servlet。
会找到如下内容:org.apache.jasper.servlet.JspServlet将对应的jsp⽂件转为Servlet。
那么转的Servlet在什么地⽅呢?打开Tomcat下的work⽂件夹⼀直点到:找你正在运⾏的项⽬的jsp测试的jsp:<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/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>666</body></html> 被编译好的Java⽂件:/** Generated by the Jasper component of Apache Tomcat* Version: Apache Tomcat/8.5.46* Generated at: 2019-10-16 09:05:10 UTC* Note: The last modified time of this file was set to* the last modified time of the source file after* generation to assist with modification tracking.*/package org.apache.jsp;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.jsp.*;public final class index_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent,org.apache.jasper.runtime.JspSourceImports {private static final javax.servlet.jsp.JspFactory _jspxFactory =javax.servlet.jsp.JspFactory.getDefaultFactory();private static java.util.Map<ng.String,ng.Long> _jspx_dependants;private static final java.util.Set<ng.String> _jspx_imports_packages;private static final java.util.Set<ng.String> _jspx_imports_classes;static {_jspx_imports_packages = new java.util.HashSet<>();_jspx_imports_packages.add("javax.servlet");_jspx_imports_packages.add("javax.servlet.http");_jspx_imports_packages.add("javax.servlet.jsp");_jspx_imports_classes = null;}private volatile javax.el.ExpressionFactory _el_expressionfactory;private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;public java.util.Map<ng.String,ng.Long> getDependants() {return _jspx_dependants;}public java.util.Set<ng.String> getPackageImports() {return _jspx_imports_packages;}public java.util.Set<ng.String> getClassImports() {return _jspx_imports_classes;}public javax.el.ExpressionFactory _jsp_getExpressionFactory() {if (_el_expressionfactory == null) {synchronized (this) {if (_el_expressionfactory == null) {_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();}}}return _el_expressionfactory;}public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {if (_jsp_instancemanager == null) {synchronized (this) {if (_jsp_instancemanager == null) {_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());}}}return _jsp_instancemanager;}public void _jspInit() {}public void _jspDestroy() {}public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)throws java.io.IOException, javax.servlet.ServletException {final ng.String _jspx_method = request.getMethod();if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request. response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");return;}final javax.servlet.jsp.PageContext pageContext;javax.servlet.http.HttpSession session = null;final javax.servlet.ServletContext application;final javax.servlet.ServletConfig config;javax.servlet.jsp.JspWriter out = null;final ng.Object page = this;javax.servlet.jsp.JspWriter _jspx_out = null;javax.servlet.jsp.PageContext _jspx_page_context = null;try {response.setContentType("text/html; charset=ISO-8859-1");pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true);_jspx_page_context = pageContext;application = pageContext.getServletContext();config = pageContext.getServletConfig();session = pageContext.getSession();out = pageContext.getOut();_jspx_out = out;out.write("\r\n");out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"/TR/html4/loose.dtd\">\r\n");out.write("<html>\r\n");out.write("<head>\r\n");out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\r\n");out.write("<title>Insert title here</title>\r\n");out.write("</head>\r\n");out.write("<body>\r\n");out.write("666\r\n");out.write("</body>\r\n");out.write("</html>");} catch (ng.Throwable t) {if (!(t instanceof javax.servlet.jsp.SkipPageException)){out = _jspx_out;if (out != null && out.getBufferSize() != 0)try {if (response.isCommitted()) {out.flush();} else {out.clearBuffer();}} catch (java.io.IOException e) {}if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);else throw new ServletException(t);}} finally {_jspxFactory.releasePageContext(_jspx_page_context);}}}但是我们发现这个类并没有继承HttpServlet⽽是继承了org.apache.jasper.runtime.HttpJspBase并且⾥⾯也没有service⽅法⽽是_jspservice⽅法。
Eclipse的安装与配置
Eclipse的安装与配置----java项目的构建和配置转载作者:闭月羞花猫很多人都想用jsp来做网页,但是一时又不知道,用什么样的工具来开发,用什么样的架构,所以感到比较困惑。
笔者通过实践,推荐以下开发工具和体系结构。
工具:tomcat 服务器工具免费JDK 作用么…… 免费eclipse 非常好用的JAVA开发工具Utrledit32 写JSP页面使用。
架构:现在比较流行struts架构,关于struts的一些资料,我在网上也有共享以上软件,和一些电子书籍,我在网上有一些共享,如果没有的,还是去google搜索一下。
地址:1.前期准备软件:一下软件上网随便搜搜就有了。
eclipse3.1j2sdk1.4.2_06tomcat 4.12.安装j2sdk1.4.2_06 我把它安装在c盘根目录下面tomcat 4.1 同样安装在c盘根目录下面eclipse3.1 同样安装在c盘根目录下面没有别的意思,用起来方便罢了。
3.配置j2sdk1.4.2_06 的环境变量,不用多说,很多资料都有介绍4.安装并配置tomcat.5.下面谈谈本文章的主题,如何配置Eclipse首先,得建立文件目录结构:说明:所有的原文件都放在src 下面的model 和web 里面其中:web里面主要是:xxxxAction.java xxxxForm,java至于为什么要这个分,什么是action 什么是form 很多书籍上都有介绍,比如地址:里面有本电子书strutsInActoin说明得很具体,建议下载下来看看。
web里面主要包括:样式(css) 图片(image) 共通的script 和jsp页面和WEB-INFO其中WEB-INFO中包括:Classes 也就是编译之后的类文件Lib 就是这个项目中所使用的一些jar文件.同级目录下还有些struts的配置文件,这个在上面提到的资料中都有详细的说明,这里就不累赘了.接下来就是eclipse的配置了.1.建立一个新的项目点next你将看到:接下来就是配置了,选中该项目,鼠标右健.选择配置属性注意了,下面是配置的重点,留神我画圈的几个地方.首先,配置原文件的路径. 点击Add Folder出现下面的图选中那个框框出现下面的按照刚才建立的文件目录.选中源文件所在的目录. 特别强调:只要选中到src 就可以了,不要再深入下去了.点ok ,接下来配置classes了然后点击Creat New Folder, 然后再点一下Advanced ,你可以看到下面的画面接下来的操作和src 一样,但是需要注意的是,目录到达classes为止.如图然后就一直ok 点下去, 这样你的原文件和class文件都配置好了,接下来开始包这个项目所涉及到的一些jar文件…….先吃个午饭,下午再来写开始配置jar文件jar文件,就把它包进来就可以了.然后点击ok 就可以了.到现在为止,eclipse配置完成所有的源文件经过编译之后,自动在web/classes下生成相应的class 文件,无需进行额外的操作,简单方便.如何在在,eclipse中利用tomcat进行debug,我会在以后的文章中作出介绍.发现写出一篇图文并茂的文章还真不容易,希望能给大家有所帮助.。
servlet作用及配置
servlet作用及配置servlet作用及配置收藏用servlet生成表现层页面显然是很麻烦的,因为都要用servlet的输出流来输出.如上out.println("<html><body>"+kk+"</body></ html><br>");servlet做控制层.jsp做表现层,jsp编译后其实也是一个servlet.它其实充当了servlet做为表现层的工作. servlet,是运行在服务器端的程序,用于处理及响应客户端的请求.servlet应该是个中间的部分,对前面和后面部分起的交互,所以,很重要.而且web.xml的配置都要经过这里,所以好好掌握.简单配置view plaincopy to clipboardprint?<servlet><servlet-name> servlet名字</servlet-name><servlet-class> 包名.类名</servlet-class></servlet><servlet-mapping><servlet-name> servlet名字</servlet-name><url-pattern> 由servlet处理的路径</url-pattern></servlet-mapping><servlet><servlet-name> servlet名字</servlet-name><servlet-class> 包名.类名</servlet-class></servlet><servlet-mapping><servlet-name> servlet名字</servlet-name><url-pattern> 由servlet处理的路径</url-pattern></servlet-mapping>把这段xml放在你的WEB-INF下面的web.xml里就行了~~当然还有其它一些别的东西`~~但是这是应用一个servlet基本的配置~~view plaincopy to clipboardprint?<servlet><servlet-name>Contorller.wc</servlet-name>// 这里指定servlet的名称,这个名称随你喜欢,只要不重复就行<servlet-class>web.Controller.Controller</servlet-cl ass>//这里servlet类的包路径和名称,注意大小写</servlet>//下面这两行配置的作用就是告诉web容器,在遇到<url-pattern>中的路径请求时就交给名为Contorller.wc 的servlet来处理。
eclipse JDBC连接数据库及jsp操作数据库数据详细教程
如果你是一个对这些东西一无所知的同学,而且已经在网上查阅了各种资料,还是没做出来那么我希望这篇文章可以是个终结。
我写的都是我自己一步一步亲自做的,我对这个开始一点也不了解,都是自己一点一点泡图书馆上网查资料做出来的,本来想自己写一份纪录就行了,后来有人说发到网上吧,呵呵好吧,希望对不会的童鞋有所帮助,ok! 进入正题环境、应用软件说明:win7旗舰版系统sql server 2005(安装时有一步是让选择身份验证记得选择选择混合方式即有windows身份还有sql server身份)myeclipse(有人用的是eclipse,差不多)Tomcat,现在的一般不用安装就可以直接用,bin里有个startup.bat双击即可Jdbc (版本:sqljdbc.jar 即数据库驱动)Jdk (版本:jdk1.6.0_10 配置java运行环境)(默认已经安装操作系统win7 、sql server 2005、myeclipse、tomcat )Ok准备工作o了,开始做:1、安装jdk 怎么配置路径自己上网查吧,我写在这里也是复制的,教程特别多,比较容易。
2、Tomcat里的bin有个startup.bat双击即可,在浏览器中输入http://localhost:8080/出现下图就算是成功3、安装myeclipse 和配置tomcat与之相连启动MyEclipse选择Window -> Preferences…在弹出的窗口选择MyEclipse -> Application Servers -> Tomcat 6 (这里选择的tomcat必须是你已经成功安装的版本),选择Tomcat Home Directory 右边的“Browse…”如图在上图的窗口中选择Tomcat Home Directory 右边的Browse…(选择你已经安装好的tomcat根目录),如图:,按“确定”进入下一步:选择了Tomcat Home Directory后,在其下面的两项是自动生成的,不用更改,选择“Enable”,选择“Apply”选中Tomcat 6中的JDK一项,这里要特别注意,默认的是JRE的运行环境,这里要设定成JDK的,否则,MyEclipse无法正常部属Web应用,也无法正常运行Tomcat服务器。
配置Servlet两种方法以及特点详解
配置Servlet两种⽅法以及特点详解1、传统web.xml⽂档中部署servlet<servlet><servlet-name>LifeServlet</servlet-name>//创建的servlet名字<servlet-class>servlet.LifeServlet</servlet-class>//完整的包名+类名</servlet><servlet-mapping>//映射配置<servlet-name>LifeServlet</servlet-name>//和上⾯的名字保持⼀致<url-pattern>/LifeCycle</url-pattern>//servlet的映射路径</servlet-mapping>注意:如果有form表单和servlet有关联,<url-pattern>后⾯应填⼊与action参数相同,例如<form action=”LifeCycle” method=”post”>则<url-pattern>/LifeCycle</url-pattern>,注意/不能少!2、注解⽅式部署servlet@WebServlet("/LifeServlet")public class LifeServlet extends HttpServlet{}从浏览器发送请求时,会直接寻找@WebServlet后对应的url地址,调⽤并执⾏相应的servlet3、两种办法的优缺点编辑xml⽂件:优点:如果有多个servlet在同⼀个⼯程下,便于管理与修改缺点:⼿⼯配置⽂件,容易导致错误,重复度太⾼,可读性差注解部署:优点:快速简洁,IDE会⾃动创建注解缺点:如果有很多servlet⽂件,不好控制单独的servlet以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
学习使用JSP和Servlet进行JavaWeb开发
学习使用JSP和Servlet进行JavaWeb开发JSP(JavaServer Pages)和Servlet是JavaWeb开发中的关键技术。
通过使用JSP和Servlet,开发人员能够构建功能强大且交互性强的Web应用程序。
本文将对学习使用JSP和Servlet进行JavaWeb开发进行详细介绍,并按以下几个章节进行划分:JSP入门、Servlet入门、JSP和Servlet的结合、JSP和Servlet的进阶应用和最佳实践。
第一章:JSP入门JSP是一种基于Java语言的服务器端技术,通过在HTML中嵌入Java代码,实现动态生成Web页面。
要使用JSP进行开发,首先需要了解JSP的基本语法和特性。
JSP页面的扩展名为.jsp,可以在其中嵌入Java代码。
JSP中的Java代码块用<% %>包裹,可以在其中编写Java逻辑。
同时,JSP还支持使用表达式<%= %>输出变量的值,以及使用JSP标签库实现更复杂的功能。
第二章:Servlet入门Servlet是服务器端的Java程序,用于处理客户端请求并生成响应。
要使用Servlet进行开发,需要了解Servlet生命周期、Servlet 配置和Servlet映射等基本概念。
Servlet生命周期包含初始化、服务和销毁三个阶段。
在初始化阶段,可以进行一些资源的初始化操作;在服务阶段,处理客户端请求并生成响应;在销毁阶段,释放资源。
第三章:JSP和Servlet的结合JSP和Servlet可以很好地结合起来,实现更灵活和强大的Web应用程序。
通过在JSP中嵌入Servlet,可以将复杂的业务逻辑封装在Servlet中,使得JSP页面更加简洁和易于维护。
在JSP页面中使用JSP动作指令和JSTL等技术,可以实现对Servlet的调用,并将处理结果展示在页面上。
同时,通过JSP的页面传值机制,可以将页面中的数据传递给Servlet进行处理。
Servlet和JSP概述
Servlet和JSP概述1.1 Java Servlet及其特点Servlet是Java技术对CGI编程的回答。
Servlet程序在服务器端运行,动态地生成Web页面。
与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资(更重要的是,Servlet程序员收入要比Perl程序员高:-):高效。
在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。
而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。
在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。
在性能优化方面,Servlet也比CGI有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动,等等。
方便。
Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。
功能强大。
在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。
例如,Servlet 能够直接和Web服务器交互,而普通的CGI程序不能。
Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。
可移植性好。
Servlet 用Java编写,Servlet API具有完善的标准。
因此,为I-Planet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。
几乎所有的主流服务器都直接或通过插件支持Servlet。
节省投资。
不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。
ServletJsp教程
Cookie(小甜点) cookie是是一些由服务器发向浏览器并且还能由浏览器读 回来的小段的文本信息。Web服务器将它发送到浏览器,之后 在访问同一网站或域时,浏览器又将它原封不动的返回。一般 用于记录用户名密码、根据用户的偏好定制站点、定向广告。 cookie的内容主要包括:名字,值,过期时间,路径和域。 --域可以指定某一个域,比如www.google.co。m --路径就是跟在域名后面的URL路径 ,比如/news。
Method属性指定了 数据传送方式,可 以是GET或POST
各种输入控件,接 受用户输入。
提交按钮,点此Button将 把FORM内的数据传送到服 务器
GET方式将数据接在URL后面传送给服务器端程序, 如:http://url?name1=abc&name2=def POST方式将数据放在HTTP请求的请求头后面发送。
动作(Action)
动作用来引入现有的组件或者控制JSP引擎的行为。
注释
<!-- comment [ <%= expression %> ] --> 或 <!-- 注释 [<%= 表达式 %> ] --> 这种注释发送到客户端,但不直接显示,在源代码中可以查到。
服务器只创建每个Servlet的单一实例,每个用户请求都
会引发新的线程。
创建Servlet实例时,会调用init()方法,针对每个用户 请求都会创建一个线程,该线程调用前面创建实例的 service()方法,由service()方法依据接收到的HTTP请
求的类型,调用相应的doXxx方法,比如doGet(),最后
<%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.util.*“ %> ... <HTML> <BODY> 其他 HTML 语言 <% 符合JAVA 语法的 JAVA 语句 %> 其他 HTML 语言 </BODY> </HTML>
ServletJSP深入详解:基于Tomcat的Web开发 第三章(全)(格式已整理)
Servlet/JSP深入详解:基于Tomcat的Web开发--第三章本章要点—掌握配置任意目录下的Web应用程序—掌握以WAR文件的形式发布Web应用程序—掌握与Servlet配置相关的元素的使用Web应用程序的开发分为设计开发与配置部署两个阶段。
通过部署,实现了组件与组件之间的松耦合,降低了Web应用程序的维护难度。
本章主要介绍以下几个主题:—如何配置任意目录下的Web应用程序—如何以WAR文件的形式发布Web应用程序—与Servlet配置相关的元素的使用3.1 配置任意目录下的Web应用程序一个Web容器可以运行多个Web应用程序,每个Web应用程序都有一个唯一的上下文根,上下文根如何部署是和具体的Web容器相关的。
对于Tomcat来说,%CATALINA_HOME%\webapps目录下的每一个子目录都是一个独立的Web应用程序,这个子目录的名字就是这个Web应用程序的上下文根。
例如,第2章的Web应用程序位于%CATALINA_HOME%\webapps\ch02目录,上下文根就是ch02。
在部署和访问Web应用程序时,通过上下文路径(context path)来区分不同的Web 应用程序。
上下文路径以斜杠(/)开头,但结束没有斜杠(/)。
在默认上下文中,这个路径将是空字符串""。
例如:/ch02是第2章的Web应用程序的上下文路径,凡是发往/ch02路径的请求,都会交由这个路径下的Web应用程序的资源来进行响应。
在第2章中,我们将开发的Web应用程序放在了%CATALINA_HOME%\webapps目录下,当Tomcat启动时,会自动加载webapps目录下的Web应用程序,所以在这个目录下的Web 应用程序不需要进行其他的配置就可以直接访问了。
但是,我们在开发的时候,经常会建立自己的开发目录,在开发阶段完成后,才进入正式的产品部署阶段。
如果每当我们完成一个功能,需要测试运行的时候,都要将文件复制到webapps目录下对应的Web应用程序目录中,那未免太烦琐了。
java servlet的配置方法
java servlet的配置方法Java Servlet的配置方法什么是Java ServletJava Servlet 是 Java 平台上的一种服务器端 Web 编程技术,它是在 Web 容器中运行的 Java 类。
通过 Java Servlet,我们可以接收来自客户端的请求,处理这些请求并生成响应。
Servlet 的配置方法在使用 Java Servlet 之前,我们需要进行一些配置工作,以确保 Servlet 在 Web 容器中能够正常运行。
下面是一些常见的Servlet 配置方法:1.配置文件在 Java Servlet 的早期版本中,我们通常使用文件来配置Servlet。
在该文件中,我们需要定义 Servlet 的名称、类名、URL 映射等信息。
以下是一个示例的配置片段:<servlet><servlet-name>MyServlet</servlet-name><servlet-class></servlet-class></servlet><servlet-mapping><servlet-name>MyServlet</servlet-name><url-pattern>/myservlet/*</url-pattern></servlet-mapping>在这个示例中,我们定义了一个名为 MyServlet 的 Servlet,它的类名是,并将其映射到了“/myservlet/*”的 URL。
2.使用注解从 Servlet 版本开始,我们可以使用注解来配置 Servlet,而无需依赖文件。
通过在 Servlet 类上使用注解,我们可以告诉容器该类是一个 Servlet,并指定其 URL 映射。
以下是一个使用注解配置的Servlet 示例:@WebServlet("/myservlet/*")public class MyServlet extends HttpServlet {// Servlet 逻辑代码}在这个示例中,我们使用 @WebServlet 注解告诉容器,该类是一个 Servlet,并将它映射到了“/myservlet/*”的 URL。
JSP与servlet的关系
jsp和Servlet的关系JSP最终是要转化成servlet来执行的,人们有个误区,不是一个jsp运行会生成一个对应servlet。
而是jsp运行的时候就是转成了servlet,也就是java程序来执行。
其实jsp的中的标签就相当于servlet中out.println()打印出的文本比如我response.out.println("<i>hello</>");就相当于jsp中的<i>hello</> 。
jsp也是一个servlet,有的时候我们可以把请求交给jsp。
一个servlet的response,就是这个servlet要发送给浏览器的东西,如果你在这个response 中打印了,文本,就会发送文本给浏览器,如果打印标签就会发送标签给浏览器,这样浏览器就解析成html了hello.jsp<html><body>hello</body></html>执行的时候先是转成servletdoGet(){response.getWriter.println("<html>\n<body>\nhello\n</body>\n</html>") }然后发送<html><body>hello</body></html>这些文本给浏览器,浏览器就解析为一个html了===================================================================== =================JSP是Servlet的扩展,在没有JSP之前,就已经出现了Servlet技术。
Servlet 是利用输出流动态生成HTML页面,包括每一个HTML标签和每个在HTML页面中出现的内容。
Tomcat下JSP、Servlet开发环境的配置
配置 J P eve S 、sr l 感到非常棘手 ,本文 总结 了如 何在 T mct o a 环境下 配 置 JP、 S
sr l ,希 望对 那些 初 学者 有 所帮 助 。 e vቤተ መጻሕፍቲ ባይዱ t
在 “ 我的电脑”的属性面板中,选
一
、
开发环境 所需软 件
i三 安装 与配置 T mc t o a
1、安 装 j k一 1 d —5 —0 —06一 wid ws i8 一 .x 文 件 ,按 N x n o —56 P e e et
境 可以有 多种途径 ,但 主要 工作就是 安装 和 配置 W b e 服务器和 J P S 科擎。本文完整地阐述 了 Tma 环境下创建 JP s v t 在 oct S e l 开发环境 , re
一
—
目录路 径 ,假 设 J S 2 DK 的安 装 目录 为
d: j k . . — 6 \d 1 5 0 0 。
\ mc t 。 To a 5 5
J P的初学 者对 在 To a 下如 何 S mc t
2 、环 境 变量 配 置
3 、 增 加 环 境 变 量 CA TA LI N A—H O M E,值 为 d :
4、修 改环境变量 Pat h,添加 话 说 明安 装 成 功 了 ; 8 o a 下建 立 自己的 jp 应 、T mc t s A A HO % bn , JS 2 DK 是 J v 2的软 件 开发 工 %J V — ME \ i; 注 意后面 要加 aa 用程 序 目录 ; 上半 角分号。 具 ,是 J v a a应 用程 序 的基 础 。J P是 S % AT INA H( \  ̄ C A 』 任 we Xot ro 5 、增加环境 变量 ,值为 . ; 基于 J v 技 术 的 ,所以 配置 J P环 境 aa S %J AVA—HOME%\ i t 0 s j r; I 目录是 To a 作为 W e lb\ 0 l . a mct b服务 器 的默 认 之前 必须要 安 装 J S 2 DK 。 站点主 目录 ,每个 jp应用程序 目录结 s 3 、To a :jk ra t mc t . % AV — ME \ik tjr mc t a a t — o a 一5 J A HO % l d . ;配置中 J b a
JavaWeb系列之使用Eclipse开发web项目(jsp项目)
JavaWeb系列之使用Eclipse开发web项目(jsp项目)目录•基本概念•JSP九大内置对象(重点)o九大内置对象中四种范围对象(小到大)基本概念•在eclipse中创建的web项目:1.浏览器可以直接访问WebContent中的文件2.但是WEB-INF中的文件无法通过客户端(浏览器)直接访问,只能通过请求转发来访问注意:并不是任何内部的跳转都都能访问WEB-INF,跳转有请求转发和重定向两种方式•配置Tomcat运行时环境jsp<->servlet1.将Tomcat/lib中的servlet-api.jar加入项目的构建路径2.右键项目->build path ->addlibrary ->server runtime•部署Tomcat•在servers面板,新建一个T omcat实例,再在该实例中部署•注意:一般建议将eclipse中的tomcat与本地Tomcat中的信息保持一致;第一次创建完设置托管模式;否则以后就变灰了,不能改•统一字符集编码设置jsp文件的编码(jsp中的pageEncoding属性):jsp->java设置浏览器读取jsp文件的编码(jsp文件中content属性)一般讲上述设置成统一码,推荐使用国际码utf-8文本编码:1.将整个eclipse中的以后文件统一设置2.设置一个项目3.设置单独文件•jsp的页面元素:HTML,Java代码(脚本scriptlet),指令1.脚本scriptlet//1<%局部变量、Java语句%>//2<%!全局变量、定义方法%>//3<%= 输出表达式 %>一般而言,修改web.xml需要重启tomcat,修改jsp不需要注意:out.println()不会回车,需要添加HTML的换行符,out.println()中可以识别html代码2.指令•page指令<%@page .....%>•page指令的属性:nguage:jsp页面使用的脚本语言2.import:导入类3.pageEncoding:jsp文件自身编码jsp->java4.contentType:浏览器解析jsp的编码<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>3.注释1.html注释网页源代码里边可以显示2.java注释// /.../3.jsp注释<%-- jsp注释 --%>JSP九大内置对象(重点)•jsp九大内置对象(重点)(自带的,不需要new也能使用的对象)1.out:输出对象,向客户端输出内容2.request:(封装请求信息)请求对象;存储"客户端向服务端发送的请求信息"(数据只在同一次请求有效)•常见方法:•String getParameter(String name):根据请求的字段名key,返回字段值value;•String[] getParameterValues(Stringname):根据请求的字段名key,返回多个字段值value(checkbox);•void setCharacterEncoding("编码格式utf-8"):具体设置post请求编码(tomcat默认编码iso-8859-1);•getRequestDispatcher("b.jsp").forwa rd(request,response): 请求转发的方式跳转页面 A->B•ServletContext getServerContext():获取项目的ServletContext对象•示例:•注册•注册页register.jsp 展示页show.jsp •访问url含义•localhost:8080/MyJspProject/show.js p?uname=aa&upwd=wer&uage=12•连接/文件?参数名1=参数值1&参数名2=参数值2&参数名3=参数值3•统一请求的编码request1.get方式如果出现乱码解决方式:•统一每一个变量的编码(不推荐)•变量名=new String(变量名.getBytes("iso-8859-1"),"utf-8");•每个变量改一次•修改server.xml一劳永逸•建议使用Tomcat时,首先在server.xml 中统一编码方式URIEncoding="UTF-8"2.post方式•request.setCharacterEncoding("utf-8");•get提交方式:method="get"和地址栏、超链接请求方式默认都属于get提交方式•get与post请求方式的区别:1.get方式在地址栏显示请求信息(但是地址栏容纳信息有限,4-5kb,如果请求数据存在大文件,图片,存储不下会报错),post不会显示2.文件上传操作,必须是post3.推荐使用:post3.response:(响应信息)响应对象•提供的方法:1.void addCookie(Cookie cookie):服务端向客户端增加cookie对象2.void sendRedirect(Stringlocation)throws IOException:页面跳转的一种方式3.void setContentType(String type):设置服务端响应的编码(设置服务端的contentType类型)•示例:登录•login.jsp登录->check.jsp判断->success.jsp•请求转发和重定向的区别:1.地址栏改变:不变,变2.是否保留第一次请求时的数据:保留,不保留(跳到success.jsp拿不到数据)--4种范围对象3.请求的次数:1次(请求转发的跳转是在服务器内部跳转),2次4.跳转发生的位置:服务器端,客户端5.转发、重定向:•转发:张三(客户端)->【服务窗口A->服务窗口B】•重定向:张三(客户端)->【服务窗口A】->张三(客户端)->【服务窗口B】4.session(存在于服务端)•Cookie•Cookie(存在于客户端,不是内置对象,得new):•Cookie是有服务端生成的,再发送给客户端保存;•Cookie相当于本地缓存的作用:客户端->服务端•作用:提高访问服务端的效率,但是安全性较差•Cookie:name-value1.javax.servlet.http.Cookie类产生的public Cookie(String name,String value)2.String getName():获取name3.String getValue():获取value4.void setMaxAge(int expiry):设置最大有效期(秒)1.服务端准备Cookie:•response.addCookie(Cookie cookie)•页面跳转(转发,重定向)2.客户端获取Cookie:•request.getCookies(); //获取Cookie 必须每次都是获取全部•注意:1.服务端增加cookie:response对象2.客户端获取对象:request对象3.不能直接获取单独对象,只能一次性将全部cookie得到4.除了自己设置的Cookie对象外,还有一个name叫JSESSIONIDDE的cookie5.使用Cookie实现自动记住用户名 //建议cookie只保存英文数字,否则要编解码•session:会话1.浏览网站:开始-关闭2.购物:浏览-付款-退出3.电子邮件:浏览-写邮件-退出一次开始到关闭•session机制•客户端第一次请求服务端1.客户端第一次请求服务端时,(jsessionid-sessionid)服务端会产生一个session对象(用于保存该客户的信息),并且每个session对象都会有唯一的sessionId(用于区分其他session);2.服务端会产生一个cookie,并且该cookie的name=JSESSIONID,value=服务端sessionId的值;3.然后,服务端会在响应客户端的同时,将该cookie发送给客户端,至此客户端就有一个cookie(JSESSIONID)4.因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID-SESSIONID)•客户端第二次/n次访问服务端1.客户端第二次/n次访问服务端时:服务端会先用客户端cooki中的JSESSIONID去服务端session中匹配sessionId,若匹配到,则说明不是第一次访问•例子:•客户端:顾客•服务端:存包处顾客第一次存包:商场判断此人是不是之前已经存过包(是否有钥匙),如果新顾客(没钥匙),分配一个钥匙;第二次/n次,如果手里有钥匙,直接一一对应,不分配•session:1.session存储在服务端2.session是在同一个用户请求时共享3.session实现机制:第一次客户请求时产生一个sessionid并复制给jsessionid然后发给客户端.最终实现sessionid与jsessionid一一对应•session方法1.String getId():获取sessionId2.boolean isNew():判断是否是新用户(第一次访问)3.void invalidate():使session失效(退出登录、注销)4.void setAttribute():5.Object getAttribute():6.void setMaxInactiveInterval(秒):设置最大有效非活动时间7.int getMaxInactiveInterval(秒):获取最大有效非活动时间•示例:•登录•JSESSIONID5B3D4AA49AB91B1311F 514BCF727DD29•sessionId5B3D4AA49AB91B1311F51 4BCF727DD29•客户端在第一次请求服务端时,如果服务端发现此请求没有JSESSIONID,则会创建一个name=JSESSIONID的cookie并返回给客户端•Cookie1.不是内置对象,要使用必须new2.但是,服务端会自动new一个Jsessionid的cookie•cookie和session的区别:1.位置分为:客户端和服务端2.安全为:不安全和较安全3.保存的内容:Object和字符串String5.application:全局对象1.String getContextPath():虚拟路径2.String getRealPath(String name):绝对路径(虚拟路径,相对的的绝对路径)6.pageContext:JSP页面容器7.config:配置对象8.page:当前JSP页面对象(相当于JAVA中的this)9.exception:异常对象九大内置对象中四种范围对象(小到大)1.pageContext(也可称为page对象):当前页面有效,页面跳转后无效2.request:同一次请求有效,其他请求无效(请求转发后有效,重定向后无效)3.session:同一次会话有效(无论怎么跳转都有效,只要不关/切换浏览器)4.application:全局有效(整个项目有效):整个项目运行期间都有效,切换浏览器也有效,关闭服务或者切换项目无效•以上四种对象的共有的方法:1.Object getAttribute(String name):根据属性名,获取属性值2.void setAttribute(Stringname,Object obj):设置属性值(新增,修改)3.setAttribute("a","b");//如果a对象之前不存在,则新建一个a对象;如果a之前已经存在,则将a的值改为b4.void removeAttribute(String name):根据属性名,删除对象//set赋值,get取值,尽量使用小范围,性能损耗小。
解析ServletJSP会话跟踪机制
解析ServletJSP会话跟踪机制JSP四种会话跟踪技术Cookie:服务器在一个应答首部传递给浏览器的名称/值对。
浏览器保存的时间由cookie的过期时间属性来指定。
当浏览器向某个服务器发送一个请求时,它会检查其保存的cookie,并在请求首部中包含从同一台服务器上接收到的所有cookie。
Session tracking:在浏览器和服务器之间不直接传送所有的状态信息,而只是传递表示符(session ID)。
浏览器发送sessionID,服务器跟踪与该会话相关联的所有信息。
传递sessionID可以通过cookie和URL复写技术,大部分容器都支持这两种技术。
服务器无法分辨用户是否关闭了浏览器,因此关闭浏览器意味着与先前的会话关联的所有会话数据都保留在服务器上,直到会话超时,服务器销毁会话对像。
跟踪同一会话中的请求的会话ID可以有多种方法,主要有cookie 和url复写。
URL复写:把会话ID编码在URL中。
例:counter.jjsp;jsessionnid=be8d697876787876befdbde898789098 980这样,即使浏览器不支持cookie,也能够实现会话跟踪。
对于URL复写,服务器从请求的URI中提取出会话ID,并把该请求与相应的会话关联起来,然后在访问会话数据的时候,JSP页面所进行的处理方式就和使用cookie跟踪会话id时所使用的方式完全相同。
所以sesssion的实现要依靠cookie或URL复写技术。
如果想为不支持cookie的浏览器提供会话跟踪,就必须使用<c:url>行为对应用程序中的所有URL进行复写。
这意味着应用程序中的所有页面(至少是那些带有对其他页面引用的页面)都必须是JSP 页面,这样页面引用才能以动态方式进行编码,如果遗漏了一个ur,那么服务就会失去对会话的跟踪。
隐藏表单域:隐藏表单域是将会话ID添加到HTML的隐藏表单中(类型为hidden的input)。
重点内容Struts与ServletJSP配置Struts应用Struts主要控制
包含整个框架包使用的通用工 具类。
Struts1.1中增加的有效性验证框 架包,用于动态的配置Form表 单的验证。
JSP实用简明教程
一、Struts与 Servlet/JSP
这6个基础顶级包的相互依赖 关系如右图所示
JSP实用简明教程 4、ActionForm类扩展类,程序开发人员创建的bean能够包含额外的属性,而且ActionServlet可能使用反射(允许从已加载的对象中
<servlet-Байду номын сангаасame>action</servlet-name> <servlet-class></servlet-class> <init-param>
<param-name>config</param-name>
JSP实用简明教程
二、配置Struts的应用
JSP实用简明教程
一、Struts与 Servlet/JSP
(1)Struts框架包由300来 个Java类组成,按功能可以 分为以下三类:
• 控制程序流程的类; • 实现和执行程序事务
逻辑的类; • 自定义的标记库使得
创建和验证HTML表单 更加容易。 这些类分别装在8个顶级核心 包中,其中最基础的有6个, 它们的功能描述如右表。
JSP实用简明教程
二、配置Struts的应用
在使用Struts框架开发Web应用的时候,有两个重要的配置文件需 要编写,分别是web.xml和struts-config.xml。 1、配置web.xml
该配置文件的内容主要包括两个方面:配置ActionServlet和配置 Struts标签库。
Servlet JS
Servlet/JSP配置详解疯狂代码 / ĵ:http://Java/Article7631.html 初学者问诸如:怎样配置环境变量怎样运行Servlet啊?这样问题太多了现在我写个初学者入门必读以便对初学者有指导作用! 首先是下载工具: 我建议初学者用Editplus+JDK我觉得如果用例如JBEclipseJCreator虽然刚开始时候比较方便但是确使初学者门不知道怎样配置环境变量从而难以达到知其然知其所以然地步 可以通过如下地址下载:Editplus(最新版本是v2.11):/softdown.php?id=3641&url=http://sc-/down/epp211a_cn.exe(要照注册码就自己找吧网上很多)JDK(最新版本是Java2sdk1_4_2):/softdown.php?id=3116&url=http://sc-/down/j2sdk-1_4_2-windows-i586.exe(这是ForWindows) 然后就是安装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文件请照着如下输入要字不漏并且分清大小写:publicHelloWorld{publicvoid(Stringargs){.out.prln("Hello,World!");}} 然后把这个文件保存(ctrl+s)到HelloWorld.java,Java是分大小写所以大小写定要分清是HelloWorld.java不是helloworld.java或者其他 运行:开始->运行->cmd 在控制台中把目录切换到当前目录:javacHelloWorld.javajavaHelloWorld 你就会在控制台上看见输出Hello,World! javac是编译命令它把HelloWorld.java编译成HelloWorld. java就是解释命令JVM把HelloWorld.解释执行. 在这个时候: 1、如果出现Exceptionhread""ng.NoClassDefFoundError:HelloWorld那就是你在环境变量中没有加上那个.(dot) 2、如果出现Exceptionhread""ng.NoSuchMethodError:或者HelloWorld.java:1:Publichelloworldmustbedinafilecalled"HelloWorld.java". 那就是你没有分清大小写写入这个HelloWorld或者保存得时候没有保存为HelloWorld.java这个名字定要跟public名字样 对于环境变量问题就说到这里下面我先所说如何在Editplus里面编译和运行在Tools->参数设置->配置用户工具 1.添加工具(添加应用) 菜单文字:CompileJavaProgram :C:\\JDK\\bin\\javac.exe 参数:文件名称 目录:文件目录 2.添加工具(添加应用) 菜单文字:RunJavaProgram :C:\\JDK\\bin\\java.exe 参数:文件名称(不含扩展名) 目录:文件目录 工具组名称可以随便添比如DebugJavaProgram 然后在Tools下拉菜单中你就会看见CompileJavaProgram以及RunJavaProgram这两个选项以后你就可以利用ctrl+1编译和ctrl+2运行了 下面我们讨论Servlet运行环境: 要运行Servlet则需要JSP/Servletcontainer我建议初学者用TomcatTomcat(最新版本5.0):/builds/jakarta-tomcat-5/nightly/jakarta-tomcat-5-bin-20030725.zip 然后把这个压缩包解压到: C:\\Tomcat 然后再配置环境变量;添加 3个系统变量:JAVA_HOME:C:\\JDKTOMCAT_HOME:C:\\TomcatCLASSPATH:%JAVA_HOME%\\lib;%TOMCAT_HOME%\\lib Tomcat环境变量就配置完毕了下面检验Tomcat是否能够运行: 在控制台中转到C:\\Tomcat\\bin这个目录运行startup然后回出现个窗口连跳大串东西最后表示Server已经运行 在浏览器中输入http://localhost:8080出现欢迎界面则表示Tomcat没问题了然后和上面样写入你第个Servletimportjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicHelloWorldextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IO Exception{response.ContentType("text/html");PrWriterout=response.getWriter;out.prln("<html><head><title>");out.prln("ThisismyfirstServlet");out.prln("</title></head><body>");out.prln("<h1>Hello,World!</h1>");out.prln("</body></html>");}} 然后照样用javacHelloWorld.java来编译这个文件如果出现无法importjavax.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.打成了.jar文件则放在lib下面)ROOT\\WEB-INF\\es\\HelloWorld.(把上面生成HelloWorld.文件放在这个里面) 然后在浏览器中输入http://localhost:8080/servlet/HelloWorld,于是Server众望所归报错了:Error404--NotFound 如何回事呢? Servlet必须使用C:\\Tomcat\\webapps\\ROOT\\WEB-INF这个目录下面web.xml文件进行注册用EP打开这个web.xml文件在里面加入:<servlet><servlet-name>HelloWorld</servlet-name><servlet->HelloWorld</servlet-></servlet><servlet-mapping><servlet-name>HelloWorld</servlet-name><url-pattern>/servlet/helloworld</url-pattern></servlet-mapping> 这样结构<servlet><servlet-name>HelloWorld</servlet-name><servlet->HelloWorld</servlet-></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!等着你呢 2009-2-12 5:07:04疯狂代码 /。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
初学者问的诸如:《怎样配置环境变量》《怎样运行Servlet》啊?这样的问题太多了,现在我写一个初学者入门必读,以便对初学者有指导作用!首先是下载工具:我建议初学者用Editplus+JDK,我觉得如果用例如JB,Eclipse,JCreator,虽然刚开始的时候比较方便,但是确使初学者门不知道怎样配置环境变量,从而难以达到知其然,知其所以然的地步。
可以通过如下地址下载:Editplus(最新版本是v2.11):/softdown.php?id=3641&url=/down/epp211a_cn.ex e(要照注册码就自己找吧,网上很多的)JDK(最新版本是java2sdk1_4_2):/softdown.php?id=3116&url=/down/j2sdk-1_4_2-wi ndows-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!等着你呢。