我遇到了一个我无法再生的问题.我读了一个文件,并将该文件的内容写入ServletOutputStream.
byte[] buff = new byte[65536];
int bytesRead = dataStream.read(buff);
response.getOutputStream().write(buff, 0, bytesRead);
Run Code Online (Sandbox Code Playgroud)
我注意到有些文件(小于20KB)在写入输出流时抛出IndexOutofBoundsException,但在其他时候,一切都可以找到.我的意思是,没有报告IndexOutOfBoundsException.
这是我得到的堆栈跟踪:
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:331)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:88)
at com.abc.web.DeliverData.serviceRequest(DeliverData.java:101)
Run Code Online (Sandbox Code Playgroud)
我的代码中的第101行是:response.getOutputStream().write(buff,0,bytesRead);
任何想法为什么即使使用相同的文件进行测试也不会始终报告问题?
我有一个结果jsp页面,它打印java类的字符串变量.有人能给我任何想法.
我使用简单的httpServlet作为动作类.
Class A
{
String name;
public void setName()
{
this.name = callMethod(); // somehow it assigns the value. Nothing to do with problem
}
}
Run Code Online (Sandbox Code Playgroud)
的Result.jsp
这里我需要打印String的当前值
我的公司有一个servlet过滤器,我们希望包含在各种第三方Java Web应用程序中.编辑供应商的web.xml文件有些犹豫不决.这种犹豫是否合理?还有另一种方法吗?有问题的应用服务器是Tomcat和Weblogix ......
我正在构建一个java servlet来响应某些HTML表单.这是一个简单的测试形式:
<FORM action="http://somesite.com/prog/adduser" method="post">
<P>
<LABEL for="firstname">First name: </LABEL>
<INPUT type="text" id="firstname"><BR>
<LABEL for="lastname">Last name: </LABEL>
<INPUT type="text" id="lastname"><BR>
<LABEL for="email">email: </LABEL>
<INPUT type="text" id="email"><BR>
<INPUT type="radio" name="sex" value="Male"> Male<BR>
<INPUT type="radio" name="sex" value="Female"> Female<BR>
<INPUT type="submit" value="Send"> <INPUT type="reset">
</P>
</FORM>
Run Code Online (Sandbox Code Playgroud)
在服务器端,我得到HttpRequest好了.但是当我得到这样的参数时:
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String firstName = req.getParameter("firstname");
String lastName = req.getParameter("lastname");
String sex = req.getParameter("sex");
String email = req.getParameter("email");
}
Run Code Online (Sandbox Code Playgroud)
只有"性"才行.我已经在这几个小时没有理解为什么"性"与其他人不同.所有其他参数均为空.好吧,它是唯一的"无线电"类型,但是有一种特殊的方式来获取其他参数吗?
谢谢!
在我的盒子上本地运行应用程序时,应用程序运行正常.部署到QA时,会收到以下错误.我在本地和QA运行Tomcat 5.5.23.该应用程序还使用Spring MVC.
ERROR 2011-03-01 16:41:42:异常加载会话来自持久存储java.io.WriteAbortedException:写入已中止; java.io.NotSerializableException:java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1333)中的java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1333)中的java.io.NotSerializableException:com.everbank.uft.entities.ldc.VoidReason,位于java的java.io.ObjectInputStream.readObject(ObjectInputStream.java:351). util.ArrayList.readObject(ArrayList.java:593)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl. java:25)at java.io.Object.Stotod.invoke(Method.java:597)at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849 )java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)at org.apache .catalina.session.StandardSession.readObject(StandardSession.java:1402)a org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:931)位于org.apache.catalina.session.StandardManager.load的org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:394) (StandardManager.java:321)位于org.apache的org.apache.catalina.session.StandardManager.start(StandardManager.java:637)org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:432). catalina.core.StandardContext.start(StandardContext.java:4160)org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java: 740)在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)在org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)在org.apache.catalina.startup.HostConfig .deployDescriptors(HostConfig.java:553)org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)org.apache.catalina.startup.HostConfig.start(HostConf)ig.java:1138)在org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)在org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)在org.apache.catalina .core.ContainerBase.start(ContainerBase.java:1022)org.apache.catalina.core.StandardHost.start(StandardHost.java:736)org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) )org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)位于org.apache.catalina.core.StandardServer的org.apache.catalina.core.StandardService.start(StandardService.java:448).启动(StandardServer.java:700)在org.apache.catalina.startup.Catalina.start(Catalina.java:552)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39)在org.apache.catalina.star上的java.lang.reflect.Method.invoke(Method.java:597)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)tup.Bootstrap.start(Bootstrap.java:295)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)引起:java.io.NotSerializableException:com.everbank.uft.entities.ldc. java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)中的java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)中的VoidReason,位于sun.reflect的java.util.ArrayList.writeObject(ArrayList.java:570) at.MativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method .java:597)java.io.Object.Start.Drite.StriteOdenialObject(ObjectOutputStream.java:1392)java.io.ObjectOreamputStream.writeSerialData(ObjectOutputStream.java:1461)的java.io.Object.StreamClass.invokeWriteObject(ObjectStreamClass.java:945)在java.io.ObjectOut上的java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1478)中的putStream.writeObject(ObjectOutputStream.java:326)位于org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:948)org .apache.catalina.session.StandardManager.doUnload(StandardManager.java:517)位于org.apache.catalina.session.StandardManager.stop(StandardManager.atload) .java:667)org.apache.catalina.core.StandardContext.stop(StandardContext.java:4363)位于org.apache.catalina的org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:893). startup.HostConfig.undeployApps(HostConfig.java:1180)在org.apache.catalina.startup.HostConfig.stop(HostConfig.java:1151)在org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:313) org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java):1055)org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1067)org.apache.catalina.core.StandardEngine.stop(StandardEngine.java:448)org.apache.catalina.core.标准服务.stop(StandardService.java:510)位于org.apache.catalina.core.StandardServer.stop(StandardServer.java:734)org.apache.catalina.startup.Catalina.stop(Catalina.java:602)org .apache.catalina.startup.Catalina.start(Catalina.java:577)... 6更多错误2011-03-01 16:42:49:UserTrackingFilter.doFilter()失败.消息:Servlet执行引发了异常javax.servlet.ServletException:Servlet执行在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain)引发异常.java:188)在org.apache.catalina的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)的com.everbank.uft.filters.UserTrackingFilter.doFilter(UserTrackingFilter.java:65). core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)at com.everbank.uft.filters.HibernateSessionRequestFilter.doFilter(HibernateSessionRequestFilter.java:36)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)at org .apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)org.apache.coyote.http11.Http11Processor.process(Http11Processor) .java:870)org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)at org. apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)在org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run(ThreadPool.java:685)在java.lang.Thread.run( Thread.java:619)
我有一个要求,我在这列中有一个表是phno,name,id.当我更新表时,一个servlet需要读取该表并连续收集phno,而不向该servlet发出任何请求.然后我们可以获得新的phno,并将短信发送给那些人.
任何人都有这个发送短信的想法.我正在使用java spring,tomcat.有没有其他方法可以做到这一点.
我正在为一个只有5个问题的在线考试创建一个3层Web应用程序.我使用html并设计了一个servlet来将数据发布到mysql数据库,我将其命名为'test',表格为'st1'.我使用MyEclipse Blue 8.6.1,它有一个内置的MyEclipse Tomcat 6.0.13.doPost()方法中servlet的编码如下:
try
{
String url="jdbc:mysql://localhost:3306/test";
Class.forName("com.mysql.jdbc.Driver");
connect=DriverManager.getConnection(url,"root","root");
message="Connection Sucessfull";
}
catch(ClassNotFoundException cnfex){
cnfex.printStackTrace();
}
catch(SQLException sqlex){
sqlex.printStackTrace();
}
catch(Exception excp){
excp.printStackTrace();
}
seat_no=request.getParameter("Seat_No");
name=request.getParameter("Name");
ans1=request.getParameter("group1");
ans2=request.getParameter("group2");
ans3=request.getParameter("group3");
ans4=request.getParameter("group4");
ans5=request.getParameter("group5");
if(ans1.equals("True"))
Total+=2;
if(ans2.equals("False"))
Total+=2;
if(ans3.equals("True"))
Total+=2;
if(ans4.equals("False"))
Total+=2;
if(ans5.equals("False"))
Total+=2;
try
{
Statement stmt=connect.createStatement();
String query="INSERT INTO st1("+"seat_no,name,marks"+")VALUES('"+seat_no+"','"+name+"','"+Total+"')";
stmt.executeUpdate(query);
stmt.close();
}
Run Code Online (Sandbox Code Playgroud)
当我编译应用程序时,我不断收到异常:
HTTP Status 500 -
type Exception report
message:
description The server encountered an internal error () that prevented it from fulfilling this request.
exception : …Run Code Online (Sandbox Code Playgroud) 我有一个ShoppingCart类,它包含CartItems(在ArrayList中).我想要的是每当会话存在时(当用户将项目添加到购物车时),它应该请求上一个会话并将其显示在ViewCart jsp页面上.
我现有的代码给了我很多麻烦,所以我想要一个清晰的概念来说明应该如何完成.作为ac #code,我认为我的逻辑在java中是错误的.这是我的c#代码
public class ShoppingCart
{
#region ListCart
public List<CartItem> Items { get; private set; }
#endregion
#region CartSession
public static readonly ShoppingCart Instance;
static ShoppingCart()
{
if (HttpContext.Current.Session["ASPNETShoppingCart"] == null)
{
Instance = new ShoppingCart();
Instance.Items = new List<CartItem>();
HttpContext.Current.Session["ASPNETShoppingCart"] = Instance;
}
else
{
Instance = (ShoppingCart)HttpContext.Current.Session["ASPNETShoppingCart"];
}
}}
Run Code Online (Sandbox Code Playgroud)
由于我不是java或jsp的专家,我很难搞清楚这一点.我该怎么办?
当我发送由serve中的iText生成的PDF文件时,我想显示另存为对话框.我怎样才能做到这一点?