当前位置:首页 » 操作系统 » servlet项目源码

servlet项目源码

发布时间: 2023-01-05 12:05:43

‘壹’ 如何修改Eclipse中的servlet源码

进入apache-tomcat-9.0.0.M18-src.zip\apache-tomcat-9.0.0.M18-src\java\javax\servlet 这个路径中,找到servlet.java的文件,修改后保存。
然后在eclipse中新建一个Servlet,ctrl+左键点击Servlet,Attach Source对应文件即可。

‘贰’ servlet+HTML开发web项目

servlet是充当MVC模式下的控制器的作用的。没有单独的servlet+html做的项目把

‘叁’ jsp+servlet实现文件上传与下载源码

上传:
需要导入两个包:commons-fileupload-1.2.1.jar,commons-io-1.4.jar
import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
* 上传附件
* @author new
*
*/
public class UploadAnnexServlet extends HttpServlet {

private static String path = "";

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request, response);
}

/*
* post处理
* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

path = this.getServletContext().getRealPath("/upload");

try {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload up = new ServletFileUpload(factory);
List<FileItem> ls = up.parseRequest(request);

for (FileItem fileItem : ls) {
if (fileItem.isFormField()) {
String FieldName = fileItem.getFieldName();
//getName()返回的是文件名字 普通域没有文件 返回NULL
// String Name = fileItem.getName();
String Content = fileItem.getString("gbk");
request.setAttribute(FieldName, Content);
} else {

String nm = fileItem.getName().substring(
fileItem.getName().lastIndexOf("\\") + 1);
File mkr = new File(path, nm);
if (mkr.createNewFile()) {
fileItem.write(mkr);//非常方便的方法
}
request.setAttribute("result", "上传文件成功!");
}
}
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("result", "上传失败,请查找原因,重新再试!");
}
request.getRequestDispatcher("/pages/admin/annex-manager.jsp").forward(
request, response);
}

}

下载(i/o流)无需导包:
import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* 下载文件
* @author
*
*/
public class DownloadFilesServlet extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 8594448765428224944L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request, response);
}

/*
* 处理请求
* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String name = request.getParameter("fileName");

System.out.print("dddddddddd:" + name);
// web绝对路径
String path = request.getSession().getServletContext().getRealPath("/");
String savePath = path + "upload";

// 设置为下载application/x-download
response.setContentType("application/x-download");
// 即将下载的文件在服务器上的绝对路径
String filenamedownload = savePath + "/" + name;
// 下载文件时显示的文件保存名称
String filenamedisplay = name;
// 中文编码转换
filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8");
response.addHeader("Content-Disposition", "attachment;filename="
+ filenamedisplay);
try {
java.io.OutputStream os = response.getOutputStream();
java.io.FileInputStream fis = new java.io.FileInputStream(
filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while ((i = fis.read(b)) > 0) {
os.write(b, 0, i);
}
fis.close();
os.flush();
os.close();
} catch (Exception e) {

}

}

}

‘肆’ 如何编写第一个servlet程序

创建项目

启动eclipse,然后选择菜单File->New->Project...,在新建项目向导中选择 Web->Dynamic Web Project。该项目即为使用Servlet、JSP等技术开发动态网站的项目。(如果你找不到这一项,说明Lomboz没有配置好,请参阅文章开头的链接进行配置。)

下一步,输入项目名 LearnJSP。下面的Target Runtime指定运行这个项目的服务器,如果你已经在配置Lomboz 的一节中配置好了Tomcat服务器,那么在这里你可以看到相应的服务器配置,选择它即可。如果选择框中只有<none>,说明你还没有配置服务器,可以单击右侧的New...按钮新建。

Configurations项选择<none>即可。

下一步选择项目所需的特性,默认的Dynamic Web Mole和Java就足够了。

下一步是输入相关的目录,这里也直接使用默认值即可。图略。

最后单击 Finish,完成项目创建。创建途中可能会有一个用户使用协议需要你同意,单击I Agree即可。创建完成后会询问是否要切换到J2EE视图(下图),选择Yes,完成项目创建。

项目建立完成后,请在左侧的 Project Explorer 中打开 LearnJSP 项目,看看它各个部分的构成。

从基础知识一节中我们知道,应用程序由三部分组成,即Servlet、JSP及静态内容、配置文件web.xml。项目视图中的 src 目录用来保存 Servlet 源代码,WebContent 目录用来保存JSP及静态内容, web.xml则位于 WebContent/WEB-INF/web.xml。但手工编辑 web.xml 比较麻烦,因此 Lomboz 提供了一套可视化工具用于编辑 web.xml,即最上方的Depolyment Descriptor。

理解Servlet

在Project Explorer中打开Java Resources: src -> Libraries -> Apache Tomcat 5.5 -> servlet-api.jar 文件,可以看到其中包含两个包:javax.servlet和javax.servlet.http,与Servlet有关的类和接口都位于这两个包里面。

Servlet是一个接口,位于
javax.servlet.Servlet,它规定了每个Servlet所必须实现的方法。实际应用时我们需要从
javax.servlet.GenericServlet 和 javax.servlet.http.HttpServlet
两个抽象类继承出自己的Servlet类,并实现所需的功能。这几个类的关系如下(绿色斜体字为抽象类):

上图中,Servlet依赖于ServletRequest和ServletResponse接口,这两个接口负责为Servlet接受和发送信息。 HttpServlet也类似。

Servlet接口

javax.servlet.Servlet接口包含以下的方法:

init()
void init(ServletConfig config) throws ServletException
init方法用于初始化,在Servlet启动时调用。

service()
void service(ServletRequest req, ServiceResponse res) throws ServletException, IOException
Servlet通过这个方法,从req获得客户端请求,处理并生成结果,再通过res发送给客户端。

destroy()
void destroy()
Servlet销毁时执行的方法。

getServletInfo()
String getServletInfo()
将Servlet的信息通过字符串返回。

getServletConfig()
ServletConfig getServletConfig()
获取包含Servlet各种信息的ServletConfig对象。

当某个Servlet第一次被请求时,服务器(Servlet容器)会生成该Servlet并调用它的init()方法,再调用其
service()方法处理请求。处理结束后该Servlet会常驻于容器中,下一个请求则不再重新生成Servlet,而是直接调用常驻的
Servlet对象的service()方法。服务器停止时,会调用该Servlet的destroy()方法。

因此,在Servlet的一个生命周期中,init()和destroy()仅会被调用一次,而service()则会被调用多次。

GenericServlet抽象类

javax.servlet.GenericServlet为我们实现了Servlet接口的大部分方法,除了service()方法之外。因此,我们在制作自己的Servlet时,只需要继承GenericServlet并重载service()方法即可。

典型的Servlet示例

下面我们来做一个典型的Servlet。

在eclipse左侧的Project Explorer中,右键单击Java Resources: src目录(以后简称src目录),选择New->Class,建立如下所示的类。

包名输入我们要建立的 com.idv2.learnjsp,类名为 HelloServlet,父类为 javax.servlet.http.GenericServlet。在输入父类名时,你会看到输入框左侧有个小灯泡的图标,这说明可以通过 Alt-/键自动补齐,因此你只需输入 GenericSer 几个字母,然后按 Alt-/ 组合键,系统会自动查找开头为 GenericSer 的类并补齐剩余部分。

Finish之后eclipse会为我们生成代码框架,我们只需填入实际的处理代码即可。代码可以从这里下载。

helloservlet.zip

上述代码是UTF-8编码,如果你直接放到src目录中有可能出现乱码,这时请选择Windows->Preferences...菜单,选择左侧的General->Workspace,然后将Text file encoding设置为UTF-8即可。

代码写好后,从Project Explorer中打开项目的 build 目录,可以看到eclipse自动编译了 HelloServlet.java并生成了 com/idv2/learnjsp/HelloServlet.class 文件。

那么如何在服务器上运行它呢?首先必须要做的就是在配置文件 web.xml 中登记这个Servlet。刚才我们在建立
HelloServlet
类时,并没有声明它是一个Servlet,这样服务器就无法将它作为Servlet执行,因此必须先登记,并为它指定一个URL(即Servlet
Mapping)。

右键单击Depolyment Descriptor中的Servlets,选择New->Servlet,出现下面的画面。

因为我们已经写好了HelloServlet类,因此选中Use existing Servlet class,然后单击右侧的Browse...按钮,选择HelloServlet类。下一步。

URL映射是指,浏览器通过哪个URL能访问到这个Servlet。默认与Servlet名称相同,为了演示,我们这里将他修改为小写的
/helloservlet 。实际的URL格式为
http://主机名/应用程序名/Servlet的URL映射,我们这个Servlet的URL就应当是 http://localhost:8080/LearnJSP/helloservlet。

单击Finish完成添加Servlet。如果你有兴趣可以打开 WebContent/WEB-INF/web.xml,可以看到刚才的修改在web.xml中是怎样的结果。

下一步我们需要将它部署到服务器上。打开eclipse下方的Servet栏,可以看到系统中的服务器列表。

如果你找不到Server栏,请通过主菜单Window->Show View->Others添加Server栏;如果你的Server栏中什么都没有,请在Server栏中单击右键然后 New->Server。

右键单击服务器,选择Add and Remove Projects...,将 LearnJSP项目添加到服务器上。添加之后的结果如下:

最后右键单击服务器,选择Start,片刻即可看到在Console栏中输出大量的信息,服务器启动了。打开浏览器,访问 http://localhost:8080/LearnJSP/helloservlet。如果能看到“Hello Servlet”的输出,则恭喜你,第一个Servlet成功运行了!

刷新浏览器页面几次,然后回到eclipse下侧的Console栏,可以看到下面的字样:
init() was called.
service() was called.
service() was called.
service() was called.

这是我们加入的调试信息。这些信息说明了Servlet的一个生命周期中 init、service和destroy函数的执行过程。如果在Server栏中停止服务器,那么你可以在Console栏中的信息中找到 destroy() 函数的执行。

‘伍’ 按Ctrl打开HttpServlet类找不到源代码,有网友说这样解决,不过还是不能查看servlet类的源代码啊,求大神

是因为你没有为servlet-api.jar这个包添加源文件,所以看不到源码,你可以去官网下载源码然后用eclipse导入就行了,或者你可以用java的反编译工具把jar包转换成java源代码自己看。

我给你下载好了哈,eclipse中导入里面的一个叫做“java”的目录就可以了

希望可以帮助到你,望采纳,谢谢,有问题可以追问哈!

‘陆’ 我编写了一个servlet,但是编译不通过不能生成.class文件,求高手给看看,谢了!

找不到包的原因是:没有将javaee.jar设置为或者包含在java.classpath 路径中。

类BeerSelect是公共的,应该在SelectBeer.java文件中声明:
这个意思是让你的类文件名称和public 类的名称相同。

‘柒’ Servlet的源代码在Tomcat中哪个文件夹

tomcat中是没有源代码的,那里都是编译好的CLASS文件和页面文件及配置文件。

‘捌’ Servletrequest接口类的方法的源码在哪

1、ServletRequestAware这个接口中的方法是setServletRequest(HttpServletRequest request) 可以获得这次请求的request对象
2、RequestAware这个接口中的方法是setRequest(Map request) 它只能够获得这次请求中包含request对象中全部attributes的一个map对象

‘玖’ 如何看J2EE的源码

sun的jdk中并没有包含servlet源代码,也就是你关联了jdk中的src后还是不能够查看servlet的源代码的。servlet是在tomcat有实现的,所以我们只要下载tomcat的源码就可以查看servlet的源码了。
下面是步骤:
1. 进入tomcat官方的下载tomcat源码,一般对应你的版本,例如我的版本是tomcat 6.X,那么我现在tomcat 6.x的src包下载.
2. 进入官网下载自己配套的src源码
3. 进入到你自己写的servlet的程序代码中
4. 按住crtl, 然后用鼠标点击servlet的类的方法,关联下那个源代码就可以了。那个源代码就是你下的那个tomcat源码

‘拾’ 想找servlet-api.jar的源码。

基本上所有源代码都可以下载到。

maven仓库地址:http://mvnrepository.com/

maven依赖配置如下,

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>2.1</version>

</dependency>


热点内容
腾讯轻量服务器怎么使用 发布:2025-05-11 03:52:46 浏览:174
4位密码组合有多少种至少有一个0 发布:2025-05-11 03:44:03 浏览:338
八卦手指算法 发布:2025-05-11 03:23:32 浏览:281
编译成exe是什么意思 发布:2025-05-11 03:23:28 浏览:470
javaweb技术内幕 发布:2025-05-11 03:20:14 浏览:803
多台焊机变压器怎么配置 发布:2025-05-11 03:18:07 浏览:310
nmake编译 发布:2025-05-11 03:04:32 浏览:622
房产证加密码 发布:2025-05-11 02:49:17 浏览:341
服务器少个阵列卡盘符怎么找出来 发布:2025-05-11 02:34:07 浏览:636
斗地主源码开发 发布:2025-05-11 02:24:07 浏览:366