① 通过 java (servlet) 实现两个web工程间的文件传输
这个思路很简单,如下:
1、访问A的servlet,我们在这个Servlet里面取到这个文件,这个很容易是吧
2、在A的servlet将取到的文件(inputstrema格式),以post的形式,模拟表单提交给B的servlet
3、在B的servlet里面接收,就像接收普通的表单上传的一样
下面是一些上传和接收的核心代码,使用的httpclient
A里面的上传:
HttpClient httpclient = new DefaultHttpClient();
String url = “这里是B的servlet的访问的地址,全地址”;
HttpPost httppost = new HttpPost(url);
// 一个本地的文件
InputStreamBody fileis = new InputStreamBody(is, fileName);
// 多部分的实体
MultipartEntity reqEntity = new MultipartEntity();
// 增加
reqEntity.addPart("bin", fileis);
// 设置
httppost.setEntity(reqEntity);
HttpResponse responses = null;
try {
responses = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (Validator.isNotNull(responses)) {
int httpstatus = responses.getStatusLine().getStatusCode();
if(httpstatus!=200){
System.out.println(url+"访问错误,http状态"+httpstatus);
}
}
B里面接收文件的核心代码,使用的fileupload
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = new ArrayList();
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
FileItem file = null;
if (items.size()>0) {
file =(FileItem)items.get(0);
}
② JavaWeb开发中Servlet是那一层以及用法
JavaWeb开发中Servlet是属于控制层最底端的部分的 ,也就是MVC c的最底层。
他往往用来处理请求的。他的外一层就是View、他的一层就是Service(Servlet往往调用他做逻辑判断的操作)
原始的Servlet的生命周期
servlet在第一次访问的时候就会被初始化
servlet对象一旦被创建就会驻留在内存中,当服务器关闭或者web应用被移除的时候servlet对象才销毁
1:当servlet被创建的时候那么 servlet就会被初始化 调用init方法
2:任何请求来自客户端,service方法就会被自动调用
3:当servlet从服务器被移除的时候 distroy方法将会被调用
如下是一个原始的Servlet代码(这并不是现在开发一贯的做法,请往下看)
importjavax.servlet.*;
classFirstServlet
extendsGenericServlet{
publicvoid
service(ServletRequestrequest,ServletResponseresponse)
throwsServletException,java.io.IOException
{
response.getWriter().write("hello
servlet");
}
}
ServletConfig
getServletConfig 方法 用来获得servlet的启动信息,和getServletInfo方法 可以活的servlet的基本信息,和关于它自己的一些信息,例如作者,版本,版权等
为Servlet设置初始参数要在web.xml中配置(只对当前servlet有效)
如下是在Web.xml中为当前servlet配置初始化参数的。
<servlet>
<servlet-name>ServletConfigDemo</servlet-name>
<servlet-class>
cn.itcast.servlet.ServletConfigDemo</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>encoding2</param-name>
<param-value>utf-9</param-value>
</init-param>
</servlet>
ServletCofig对象可以通过this.getServletConfig来获得,因为在父类中已经在获得了ServletConfig对象;也可以servletconfig对象可以通过父类的init方法内穿过来的config对象获取
publicvoidinit(ServletConfigconfig)throwsServletException{this.config=
config;this.init();}()
{returnconfig;}
ServletContext
通常我们称ServletContext叫Application对象 。也叫域对象
Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回
通常获得ServletContext的方法是直接getservletcontext
因为在父类中已经定义了这样的方法,子类直接继承使用
ServletContext对象的引用。getServletContext().getInitParameter("a")
的方式获得web应用的初始化参数
我们还可以为整个web应用配置初始化参数
Request & Response
基本servlet 中service的方法的request 和 response 对象分别是
RequestFacade 和 ResponseFacade 这个类是Tomcat中的类
他继承自HttpServletRequest而 HttpServletRequest 又继承 ServletRequest(Response同理)
一些常用方法:
request.getRequestURL();获得URl
request.getHeader("accept-encoding"); 获得支持的压缩格式
request.getHeader("referer");获得来自哪里(防盗链)
request.getInputStream(); 获得消息体
request.getParameter("name") 获得参数
如下是现代开发中常用的Servlet
publicclass
{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException
{
}
publicvoid
doPost(HttpServletRequestrequest,HttpServletResponse
response)
throws
ServletException,IOException{
doGet(request,
response);
}
}
③ Java web中多个servlet的问题
servlet是按照拦截器拦截url的方式,所以谁的拦截器先拦截到这个url就谁先处理,后面的就不管了
④ java 中web开发servlet主要功能是什么
JavaWeb中servlet主要功能是承载网络连接,业务逻辑处理,比如一些编码格式的转换、登录拦截等,如下是详细解释:
1.servlet是一个类。最初没有jsp,只有servlet,也就是说最初的开发过程是.java->.class
后来因为html代码在servlet里写入太繁琐,加入了jsp类型。servlet单纯的处理后台程序。
在WEB-INF下的web.xml文件下:
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>org.lxh.servlet.HelloServlet</servlet-class>///HelloServlet是类名
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/servletdemo</url-pattern>///当敲入本机地址后,/demo后/servletdemo会找到编译后的HelloServlet文件。
</servlet-mapping>
具体例子如下:
1.先编写一个表单,建在D:/java/tomcat jsp/webdemo/servletdemo(新建一个文件夹)-
input.html
<formaction="input"method="get">//"post"也行
<inputtype="text"name="ref">
<inputtype="submit"value="提交">
</from>
2.在编写InputServlet类
packageorg.lxh.servlet;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
{
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,java.io.IOException{
Stringparam=req.getParameter("ref");
System.out.println("*************"+param);
}
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,java.io.IOException{
this.doGet(req,resp);
}
};
3.然后编译。
4.再在web.xml中加入这些话
<servlet>
<servlet-name>input</servlet-name>
<servlet-class>org.lxh.servlet.InputServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>input</servlet-name>
<url-pattern>/servletdemo/input</url-pattern>
</servlet-mapping>
5.这时运行tomcathttp://localhost:90/demo能找到servletdemo文件夹中的input.html,点击提交按钮。
jsp技术中servlet,可以承载很多的功能,但后期如果项目业务逻辑很复杂,会导致servlet的急剧增多,不易维护,所以又发明了javaweb,将每一层的功能和逻辑都独立出来,以便于更好的维护管理。
⑤ JAVA WEB中servlet中的反射
就是这两个class的类定义
javax.servlet.http.HttpServletRequest
javax.servlet.http.HttpServletResponse
反射读出其中的方法
这个两个是接口,实际应用中应该传入真实的方法名和实现类
⑥ java web中的servlet问题
其实没什么差别,当你选择用get方式提交form表单的时候,你看地址栏上 的地址后面会多出 你要提交的数据 比如 xxxx.do?username=XXX&password=XXX,而你用Post方式提交的时候就不会显示出这些,而是通过 隐藏在 http请求头的 数据段进行传输。
另外刚才我看楼下说 get提交中文会有乱码,这个我补充一下,在jsp页面必须要做url coder的转换。其实中文乱码 很好解决。
另外post提交同样有上限,这个是根据服务器的设置。 tomcat服务器默认的2m上传post
⑦ JavaWeb中Servlet必须要在web.xml中配置吗
Java 的Web标准就是jsp+Servlet,而Structs,Spring MVC的哦是基于拦截器的。。
如果要让Servlet工作,这必须要多Sevelet进行配置。Servlet 常规都是在web.xml配置的。
⑧ 如何用eclipse创建java web servlet
工具:eclipse
方法如下:
1、在Eclipse开发工具中创建的JavaWeb工程文件目录结构如下图:
⑨ servlet和web服务器的区别是什么
WEB服务器是提供WEB服务的程序。
Servlet是一种容器内的技术,其实是 Server applet的简称,什么意思呢,就是说servlet是在服务器上运行的小程序,所以servlet技术不一定只在WEB服务器上使用。
只是目前常见的Java技术,都是把WEB服务器上的Servlet直接叫做Servlet。
所以运行Servlet,首先是需要WEB服务器的。
然后还要有一个小程序的容器,就是Servlet容器,专门来调用Servlet。
目前就是大部分的J2EE容器能够完成 Servlet的执行。
支持J2EE容器的WEB服务器,也叫 WEB服务器,不支持的,也叫WEB服务器。
我想已经基本解释清楚了。
⑩ javaWeb中servlet层和service层有什么不同
这两个完全是两个领域内的概念。
servlet是j2ee标准中用于执行服务端程序的小程序。从实现上讲,Servlet可以响应任何类型的请求,一般用来扩展基于HTTP协议的Web服务器,即用于生成网页。
service是一个开发层次的概念。现阶段j2ee应用的后端一般分为web、service、三个层次。web层处理页面请求的解析,然后发数据给service层,service层进行具体的业务处理(可以调用)。