
servlet 两种跳转方式:重定向、请求转发
看你的代码像是想给前台页面写入数据, 就是类似ajax
你这out引用我不知道有什么用,写入完了之后也没有放到作用域 ,请求转发到前台没什么用吧。
你这OutputStream out 我想的话 你想的写的是 PrintWriter out = responsegetWriter();
你的out是对流 *** 作的,(比如说文件流什么的, 你这对象叫什么输出流),
我的out是对一个输出对象,可以像前台jsp页面直接写html代码。 当然也可以封装成json格式,到前台进行解析。
我猜想你的这个方法是想在servlet中写jsp页面中的html代码。
我其实也就一半调子,个人见解,望采纳
服务器端源码:\x0d\import javaioBufferedReader;\x0d\import javaioFile;\x0d\import javaioFileNotFoundException;\x0d\import javaioFileOutputStream;\x0d\import javaioIOException;\x0d\import javaioInputStream;\x0d\import javaioInputStreamReader;\x0d\import javanetServerSocket;\x0d\import javanetSocket;\x0d\\x0d\/\x0d\ \x0d\ 文件名:ServerReceivejava\x0d\ 实现功能:作为服务器接收客户端发送的文件\x0d\ \x0d\ 具体实现过程:\x0d\ 1、建立SocketServer,等待客户端的连接\x0d\ 2、当有客户端连接的时候,按照双方的约定,这时要读取一行数据\x0d\ 其中保存客户端要发送的文件名和文件大小信息\x0d\ 3、根据文件名在本地创建文件,并建立好流通信\x0d\ 4、循环接收数据包,将数据包写入文件\x0d\ 5、当接收数据的长度等于提前文件发过来的文件长度,即表示文件接收完毕,关闭文件\x0d\ 6、文件接收工作结束\x0d\\x0d\public class ServerReceive {\x0d\ \x0d\ public static void main(String[] args) {\x0d\ \x0d\ /与服务器建立连接的通信句柄/\x0d\ ServerSocket ss = null;\x0d\ Socket s = null;\x0d\ \x0d\ /定义用于在接收后在本地创建的文件对象和文件输出流对象/\x0d\ File file = null;\x0d\ FileOutputStream fos = null;\x0d\ \x0d\ /定义输入流,使用socket的inputStream对数据包进行输入/\x0d\ InputStream is = null;\x0d\ \x0d\ /定义byte数组来作为数据包的存储数据包/\x0d\ byte[] buffer = new byte[4096 5];\x0d\ \x0d\ /用来接收文件发送请求的字符串/\x0d\ String comm = null;\x0d\\x0d\/建立socekt通信,等待服务器进行连接/\x0d\ try {\x0d\ ss = new ServerSocket(4004);\x0d\ s = ssaccept();\x0d\ } catch (IOException e) {\x0d\ eprintStackTrace();\x0d\ }\x0d\\x0d\/读取一行客户端发送过来的约定信息/\x0d\ try {\x0d\ InputStreamReader isr = new InputStreamReader(sgetInputStream());\x0d\ BufferedReader br = new BufferedReader(isr);\x0d\ comm = brreadLine();\x0d\ } catch (IOException e) {\x0d\ Systemoutprintln("服务器与客户端断开连接");\x0d\ }\x0d\ \x0d\ /开始解析客户端发送过来的请求命令/\x0d\ int index = commindexOf("/#");\x0d\ \x0d\ /判断协议是否为发送文件的协议/\x0d\ String xieyi = commsubstring(0, index);\x0d\ if(!xieyiequals("111")){\x0d\ Systemoutprintln("服务器收到的协议码不正确");\x0d\ return;\x0d\ }\x0d\ \x0d\ /解析出文件的名字和大小/\x0d\ comm = commsubstring(index + 2);\x0d\ index = commindexOf("/#");\x0d\ String filename = commsubstring(0, index)trim();\x0d\ String filesize = commsubstring(index + 2)trim();\x0d\\x0d\/创建空文件,用来进行接收文件/\x0d\ file = new File(filename);\x0d\ if(!fileexists()){\x0d\ try {\x0d\ filecreateNewFile();\x0d\ } catch (IOException e) {\x0d\ Systemoutprintln("服务器端创建文件失败");\x0d\ }\x0d\ }else{\x0d\ /在此也可以询问是否覆盖/\x0d\ Systemoutprintln("本路径已存在相同文件,进行覆盖");\x0d\ }\x0d\ \x0d\ /以上就是客户端代码中写到的服务器的准备部分/\x0d\\x0d\/\x0d\ 服务器接收文件的关键代码/\x0d\ try {\x0d\ /将文件包装到文件输出流对象中/\x0d\ fos = new FileOutputStream(file);\x0d\ long file_size = LongparseLong(filesize);\x0d\ is = sgetInputStream();\x0d\ /size为每次接收数据包的长度/\x0d\ int size = 0;\x0d\ /count用来记录已接收到文件的长度/\x0d\ long count = 0;\x0d\ \x0d\ /使用while循环接收数据包/\x0d\ while(count 回答于 2022-12-11
背景:在SPRING 框架之中, 有一个服务端需要提供多种形态的服务,这里的多种形态只是返回值得展示形式(其实 数据内在逻辑完全一样), 比如:
形式1: JSONP({“key1”: value1, "key2":value2, "key3":value3, })
形式2: {“key1”: value1, "key2":value2, "key3":value3, }
为了使得后台业务处理代码一样(不做任何区分),现在理由过滤器,对返回接口进行处理,根据需要加上 :JSONP()
主要实现步骤如下:
1 在webxml 中配置过滤器
<filter>
<filter-name>RewriteResponse</filter-name>
<filter-class>comrobinfilterRewriteResponse</filter-class>
</filter>
<filter-mapping>
<filter-name>RewriteResponse</filter-name>
<servlet-name>/</servlet-name>
</filter-mapping>
// 斜杠星代表匹配任何请求
2 重点在于RewriteResponse 过滤器
public class RewriteResponseFilter extends Filter {
public String description() {
// TODO Auto-generated method stub
return null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException {
// TODO Auto-generated method stub
ResponseWrapper responseWrapper = new ResponseWrapper((>
response的outputStream已经被调用获取过了, 不能重复调用responsegetOutputStream方法
这是在JSP里写的代码吧 JSP里有一个out变量, 代表response的outputStream, 试一试
ImageIOwrite(image,"JPEG", out);
以上就是关于response.getOutputStream();是不是在servlet里面就不可以请求转发或者重定向,有什么解决方法全部的内容,包括:response.getOutputStream();是不是在servlet里面就不可以请求转发或者重定向,有什么解决方法、java中如何实现从客户端发送文件到服务器端、java如何获取classpath中某文件的输出流等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)