ajax - How can I return text only from Spring servlet? -
here's story, have single page application, want call servlet ajax object, , have text returned servlet displayed on webpage.
here's example of how it:
index.html
<!doctype html> <html> <head> <meta charset="iso-8859-1"> <title>insert title here</title> <script src="jquery.js" type="text/javascript" ></script> <script type="text/javascript"> function submittext() { var xmlhttp = new xmlhttprequest(); xmlhttp.open("get", "submit", true); xmlhttp.send(); document.getelementbyid("mytextfield").innerhtml = xmlhttp.responsetext; } </script> </head> <body> <input type="text" name="mytext" /> <br> <button onclick="submittext()">submit</button> <br> <div id="mytextfield"></div> </body> </html>
web.xml
<servlet> <servlet-name>testdogservlet</servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>testdogservlet</servlet-name> <url-pattern>/submit</url-pattern> </servlet-mapping>
testdogservlet-servlet
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <context:component-scan base-package="world.hello.mytest" /> <bean id="viewresolver" class="org.springframework.web.servlet.view.internalresourceviewresolver"> <property name="viewclass" value="org.springframework.web.servlet.view.jstlview" /> <property name="prefix" value="/web-inf/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
myservlet.java
package world.hello.mytest; import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.servlet.modelandview; @controller public class myservlet { private string savedtext; @requestmapping("/submit") public modelandview submittext() { return new modelandview("text", "barmodelname", "submission successful modelobject"); } }
text.jsp
${barmodelname};
this solution works fine. click submit button, , changes div contents text contained in text.jsp.
the question is, seems redundant have entire page dedicated container holding text. there tidier solution doing this?
a spring controller can pass in httpservletrequest , httpservletreponse mapped methods.
modify method accept these 2 arguments, , can directly modify httpservletresponse.
@requestmapping("/submit") private void submit(httpservletrequest request, httpservletresponse response) throws ioexception { outputstream os = response.getoutputstream(); os.write("submission successful modelobject".getbytes()); os.close(); os.flush(); }
Comments
Post a Comment