Recientemente comencé a comunicarme con el marco SpringMVC. Este marco es muy conveniente de usar. Después de construir el marco, el código es casi el mismo patrón. Por supuesto, para llegar a este punto, debe asegurarse de que su configuración relacionada con SpringMVC se haya completado y que la configuración sea correcta.
Como mi primer blog sobre S-FLAT RINGMVC, este blog habla principalmente sobre cómo configurar SpringMVC y puede hacer que vuelva a la entidad Bean normalmente. La entidad del bean aquí generalmente se devuelve al frente en forma de una cadena JSON.
La herramienta de desarrollo utilizada es Eclipse, que también es una herramienta de desarrollo relativamente popular. Puede ser considerado para ser utilizado por todos, ¡pero el nivel de competencia es diferente!
La configuración específica es la siguiente:
web.xml:
<? xml versión = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/Javaee" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://xmlns.jcp.org/xml/javee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-cing-context-4. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "id =" webapp_id "versión =" 3.1 "> <sute-param> <amamamname> contextconfiglocation </" <amam-value> classpath: applicationContext.xml </param-value> </context-param> <Oyerer> <searcher-class> org.springframework.web.context.contextloaderListener </oyer-class-class> </oyeyer> <sippsion-name> returnjsondemo </spanting-name> <creieve-file-list> <velceed-file> index.jsp </Welcome-File> </Welcome-File-List> <Servlet> <Servlet-name> despachador </servlet-name> <ervlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <itin-param> <amam-name> contextciglocation </amamame>> <Amam-Value> classpath: despachador-servlet.xml </param-value> </init-param> </servlet> <ervlet-mapping> <ervlet-name> despachador </servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
despachador-servlet.xml:
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://www.springframework.org/schema/Beanss" " xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://xmlns.jcp.org/xml/javee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd http://www.springframework.org/schema/Beans http://www.springframework.org/schema/Beans/spring-BeS-4. http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <mvc: predeterminado <context: component-scan base-package = "com.zyq.springmvc.controller"> <context: exclugo-flyter type = "annotation" expresion = "org.springframework.steretype.service" /> < /context: component-scan> <context: annotation-config /> <mvc: annotation-driven> <mvcon> <Property name = "SupportedMediatyPes"> <List> <Value> Text/Plain; Charset = UTF-8 </value> <value> Text/Html; Charset = UTF-8 </valor> </list> </property> </bean> <Bean> <Property Name = "SupportedMediatypes"> <List> <Value> Application/JSon; charset = UTF-8 </value> <alvue> Application/x-www-form-urlencoded; Charset = UTF-8 </valor> </list> </property> </bean> </mvc: mensajes-converters> </mvc: annotation-driven> </beans>
También hay un ApplicationContext.xml, pero no escribo nada en él, ¡así que no lo daré!
¡Cree un nuevo index.jsp, que se utiliza como la interfaz principal para probar si el valor de retorno de cada interfaz es normal! El código también se da aquí:
<%@ page lenguaje = "java" contentType = "text/html; charset = iso-8859-1" PageEncoding = "ISO-8859-1"%> <! Doctype html público "-// w3c // dtd html 4.01 transición // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = ISO-8859-1 "> <title> Página principal </title> </tod> <body> <h1> Action = "/returnjSondemo/First"> <input type = "Subt" value = "First"/> </form> <Form Action = "/returnJSondemo/Second"> <Input type = "Subt" Value = "Second"/> <//formy <formul Action = "/returnjSondemo/Cuarto"> <input type = "subt" value = "cuarto"/> </form> </body> </html>
En este punto, todas las configuraciones se completan básicamente, y luego se declara un controlador. El código específico es relativamente simple, ¡y están básicamente en un formato fijo!
MainController.java
paquete com.zyq.springmvc.controller; import java.text.simpledateFormat; import java.util.arrayList; import java.util.hashmap; import java.util.list; import java.util.map; import og.springframework.steretype.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.zyq.springmvc.bean.commonbean; import.zyq.springmvc.bean.sonBean; @ControllerProllerPinTroller @RequestMapping ("/First") @ResponseBody Public CommonBean getFirst () {CommonBean Bean = new CommonBean (); bean.setResultCode ("éxito"); Bean.SettimeStamp (nuevo SimpleDateFormat ("aaa yyy/mm/dd hh: mm: ss"). Format (System.CurrentTimemillis ())); bean.setData ("Este es el primer mensaje"); Bean de regreso; } @RequestMapping ("/segundo") @ResponseBody Public CommonBean getSecond () {CommonBean Bean = new CommonBean (); bean.setResultCode ("ss"); Bean.SettimeStamp (nuevo SimpleDateFormat ("aaa yyy/mm/dd hh: mm: ss"). Format (System.CurrentTimemillis ())); List <String> data = new ArrayList <> (); data.add ("java"); data.add ("c"); data.add ("Python"); data.add ("c ++"); bean.setData (datos); Bean de regreso; } @RequestMapping ("/tercero") @ResponseBody Public CommonBean getThird () {CommonBean Bean = new CommonBean (); bean.setResultCode ("éxito"); Bean.SettimeStamp (nuevo SimpleDateFormat ("aaa yyy/mm/dd hh: mm: ss"). Format (System.CurrentTimemillis ())); Map <string, string> data = new HashMap <> (); data.put ("primero", "java"); data.put ("segundo", "python"); data.put ("tercero", "C ++"); data.put ("cuarto", "c"); bean.setData (datos); Bean de regreso; } @RequestMapping ("/Cuarto") @ResponseBody Public CommonBean getFourth () {CommonBean Bean = new CommonBean (); bean.setResultCode ("éxito"); Bean.SettimeStamp (nuevo SimpleDateFormat ("aaa yyy/mm/dd hh: mm: ss"). Format (System.CurrentTimemillis ())); Sonbean sonbean = new Sonbean (); Sonbean.setage (25); sonbean.setName ("Hacker's Delight"); sonbean.setgender ("hombre"); Bean.setData (Sonbean); Bean de regreso; }}El efecto de ejecución del código es el siguiente:
Parece que diferentes navegadores tienen diferentes operaciones de solicitud para interfaces. Al usar la interfaz de solicitud Eclipse, se descargará un archivo JSON y el contenido del archivo es una cadena JSON.
Al configurar un proyecto completo, debe usar el paquete SpringFramework JAR y el paquete JAR de Jackson relacionado. El Tomcat8.5 utilizo un error cuando se ejecuta, y debe introducir el paquete de jarra de registro común.
Al declarar una interfaz que devuelve una cadena JSON, asegúrese de usar la anotación @ResponseBody, que escribirá los datos de retorno de la interfaz al área del cuerpo en la respuesta, que es pasarlo de regreso a la parte delantera.
Cuando estaba probando, encontré un problema. Al devolver los frijoles, solo puedo devolver los paquetes de clase, pero no la herencia de la clase o la herencia de la interfaz. Por ejemplo:
Si devuelve un parentbean, que contiene un niño de niño, ¡está bien!
Si cuando se define la interfaz, la clase principal devuelta es la subclase returada real y el error se informa en este momento, y la subclase no puede convertirse en la clase principal, significa que no puede convertir el objeto de cadena en un objeto de objeto. En este sentido, debe basarse en la clase principal que no puede encontrar los atributos de la subclase, lo que lleva a la incapacidad de convertir el objeto Bean a una cadena JSON normalmente. Por lo tanto, no está permitido declarar frijoles en la interfaz en el marco y se devuelve la subclase del bean (¡estas razones son solo conjeturas personales, y las razones específicas también requieren el análisis del código en el marco)!
Ok, ¡eso se trata de devolver las cuerdas JSON! Adjunte el código fuente de la demostración, el paquete JAR que necesita también está dentro, ¡puede descargarlo usted mismo si lo necesita!
Descarga del código fuente
La explicación de ejemplo anterior del uso de SpringMVC para devolver las cadenas JSON es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.