struts2 + Jquery+json 配出出错 , 大家帮看看吧

jim-single 2012-08-17 12:19:40


我的运行没有错误, 就是加上了Json 的配置之后就有错误了, 启动tomcat 就报错误, 如果把红色不分区掉就正常的运行,加上就报错误, 下面是错误, 帮我看看吧, 谢谢

<action name="irjsonProv" class="rjsonActImpl" method="JsonProvince">
<result type="json"></result>
</action>



错误如下:
2012-08-17 12:13:37,953 [main] ERROR org.apache.struts2.dispatcher.Dispatcher - Dispatcher initialization failed
Unable to load configuration. - action - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:42:72
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:371)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:415)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4038)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4692)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
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.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: Error building results for action irjsonProv in namespace - action - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:42:72
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:378)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:479)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:275)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:204)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
... 31 more
Caused by: There is no result type defined for type 'json' mapped with name 'success'. Did you mean 'json'? - result - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:43:33
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.buildResults(XmlConfigurationProvider.java:632)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:376)
... 36 more
2012-8-17 12:13:37 org.apache.catalina.core.StandardContext filterStart
...全文
34103 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
jim-single 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

额,给你个标准的列子,gson你可以去http://code.google.com/p/google-gson/ 下载,可以在java object和json相互转换的我觉得还可以比较方便Java code

package com.xiaobao.action.json;

import java.io.PrintWriter;

import javax.servlet.http.Http……
[/Quote]
js 这样写就可以判断出来了 , 太感谢了
<script type="text/javascript">
var gsonTOjson = function(){

$.getJSON("getJsonAction.action",function(resJson){

$.each(resJson, function(idx, item) {
alert(idx+":"+item);
});

});
}
</script>
jim-single 2012-08-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

关于Struts配置的问题,希望楼主看下以下两篇文章:http://kingxss.iteye.com/blog/1622455 http://www.vijun.com/web/struts/2012/02/5f84f4d9355071010135650850770098.html,另外你返回的json串应该不需要你自己转换,Struts插件已经帮你转换了,而且即使要手动转换也不要这样拼接字符……
[/Quote]


挺好的,
jim-single 2012-08-17
  • 打赏
  • 举报
回复
spring application-mians.xml

<bean id="rjsonActImpl" class="com.user.speed.lucks.acti.RjsonManagerAct" >
<property name="rjsonSevDao" ref="rjsonSevDao"></property>
</bean>
jim-single 2012-08-17
  • 打赏
  • 举报
回复
这个是方法

/// 查询所有的省 -直辖市 - 区
public String JsonProvince(){
String hql="SELECT u FROM GAJSON GROUP BY u.rname";
try {
lists = rjsonSevDao.queryListByqueryString(hql);
if (lists.size() > 0) {
StringBuilder sb = new StringBuilder();
sb.append("[");
for (Gajson jso : lists) {
sb.append("{\"ID\":\"");
sb.append(jso.getRname());
sb.append("\",\"Name\":\"");
sb.append(jso.getRname());
sb.append("\"}");
if (lists.size() > 0) {
sb.append(",");
}
}
sb.append("]");
proString = sb.toString();
System.out.println(proString + "-------------");
}

return ActionSupport.SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ActionSupport.ERROR;
}
}
jim-single 2012-08-17
  • 打赏
  • 举报
回复
严重: Exception starting filter struts2
Unable to load configuration. - action - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:42:72
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:428)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4038)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4692)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
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.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: Unable to load configuration. - action - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:42:72
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:371)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:415)
... 29 more
Caused by: Error building results for action irjsonProv in namespace - action - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:42:72
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:378)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:479)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:275)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:204)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
... 31 more
Caused by: There is no result type defined for type 'json' mapped with name 'success'. Did you mean 'json'? - result - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:43:33
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.buildResults(XmlConfigurationProvider.java:632)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:376)
... 36 more
2012-8-17 12:13:37 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2012-8-17 12:13:37 org.apache.catalina.core.StandardContext start
严重: Context [/speed] startup failed due to previous errors
2012-8-17 12:13:37 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
2012-8-17 12:13:38 org.apache.catalina.core.ApplicationContext log
信息: Shutting down log4j
2012-8-17 12:13:38 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
严重: The web application [/speed] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
2012-8-17 12:13:38 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/speed] appears to have started a thread named [Timer-1] but has failed to stop it. This is very likely to create a memory leak.
2012-8-17 12:13:38 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
严重: The web application [/speed] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@738dcb]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@6212dd]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
2012-8-17 12:13:38 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
严重: The web application [/speed] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@c47498]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@1c2dad7]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
log4j:ERROR LogMananger.repositorySelector was null likely due to error in class reloading, using NOPLoggerRepository.
dw_java08 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

错误:
Caused by: There is no result type defined for type 'json' mapped with name 'success'.

在JsonProvince方法中,
return ActionSupport.SUCCESS;

但在action配置中,result并没有配置SUCCESS

XML code
<acti……
[/Quote]
5楼正解。
ebonyzhang 2012-08-17
  • 打赏
  • 举报
回复
type=json

result的name属性要和返回的属性名一样
ebonyzhang 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
关于Struts配置的问题,希望楼主看下以下两篇文章:http://kingxss.iteye.com/blog/1622455 http://www.vijun.com/web/struts/2012/02/5f84f4d9355071010135650850770098.html,另外你返回的json串应该不需要你自己转换,Struts插件已经帮你转换了,而且即使要手动转换也不要这样拼接字符串……
[/Quote]
非常有用,谢谢!
吉他猪 2012-08-17
  • 打赏
  • 举报
回复
额,给你个标准的列子,gson你可以去http://code.google.com/p/google-gson/ 下载,可以在java object和json相互转换的我觉得还可以比较方便

package com.xiaobao.action.json;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.google.gson.Gson;
import com.opensymphony.xwork2.ActionSupport;
import com.xiaobao.domain.People;

public class GetJsonAction extends ActionSupport
{
private String name;

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}

@Override
public String execute() throws Exception
{
People people = new People();

people.setId(1);
people.setName(name);
people.setAge(20);
people.setAddress("yichang");

Gson gson = new Gson();

String result = gson.toJson(people);

HttpServletResponse response = ServletActionContext.getResponse();

response.setContentType("application/json; charset=utf-8");
response.setHeader("cache-control", "no-cache");

PrintWriter out = response.getWriter();

out.print(result);

out.flush();
out.close();

return null;
}
}


People 类这个你自己定义下吧,
配置就很简单了

<action name="getJsonAction" class="com.xiaobao.action.json.GetJsonAction">

</action>

前台的解析不用说了吧 和你上面自己的一样解析 通过gson你可以直接将数组直接转成json 当然上面也说了object和json的相互转换 你最好是结合hibernate查询直接查出实体对象直接将其转成json 返回给客户端
jim-single 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

楼主你是否引入了json用到的插件包 struts2-json-plugin-2.3.4.jar
建议直接使用ajax访问action 通过gson将由hibernate查询到的对象转换成字符串
直接response到客户端就可以了,至于返回值直接返回null,这个歌访问servlet是一样的

看你上面的代码你是拼接字符串来构建json的,也是可以的
[/Quote]

这个包有, 谢谢,


建议直接使用ajax访问action 通过gson将由hibernate查询到的对象转换成字符串
直接response到客户端就可以了,至于返回值直接返回null,这个歌访问servlet是一样的

这个能否给个例子?
jim-single 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

看一下,是不是同时有struts2-json-plugin.jar 和 jsonplugin.jar

他们会有冲突。
[/Quote]

jsonplugin.jar 这个包, 我没有加载

现在问题解决了 ,

其他的我没有变,

我就包配置json的那个json 在struts.xml 单独放到一个package 就可以了

<package name="json" extends="struts-default,json-default" >
<!-- 查询所有的 省 直辖市 区 -->
<action name="irjsonProv" class="rjsonActImpl" method="json">
<result type="json">
<!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->
<param name="root">dataMap</param>
</result>
</action>
</package>

Action .java
public String json() {
// dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
dataMap = new HashMap<String, Object>();
Gajson user = new Gajson();
user.setRname("张三q");
user.setRkind("123q");
user.setRname("张三");
user.setRkind("123");
dataMap.put("user", user);
// 放入一个是否操作成功的标识
dataMap.put("success", true);
// 返回结果
return SUCCESS;
}


参考 这个来的, http://kingxss.iteye.com/blog/1622455
brightyq 2012-08-17
  • 打赏
  • 举报
回复
看一下,是不是同时有struts2-json-plugin.jar 和 jsonplugin.jar

他们会有冲突。
吉他猪 2012-08-17
  • 打赏
  • 举报
回复
楼主你是否引入了json用到的插件包 struts2-json-plugin-2.3.4.jar
建议直接使用ajax访问action 通过gson将由hibernate查询到的对象转换成字符串
直接response到客户端就可以了,至于返回值直接返回null,这个歌访问servlet是一样的

看你上面的代码你是拼接字符串来构建json的,也是可以的
jim-single 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

错误:
Caused by: There is no result type defined for type 'json' mapped with name 'success'.

在JsonProvince方法中,
return ActionSupport.SUCCESS;

但在action配置中,result并没有配置SUCCESS

XML code
<acti……
[/Quote]
<action name="irjsonProv" class="rjsonActImpl" method="JsonProvince">
<result name="success" type="json"></result>
</action>

我这样配置也出错, 我试过了,
LucEaspe 2012-08-17
  • 打赏
  • 举报
回复
正解。用json的时候 一般是然后写到respones中,返回空[Quote=引用 5 楼 的回复:]

错误:
Caused by: There is no result type defined for type 'json' mapped with name 'success'.

在JsonProvince方法中,
return ActionSupport.SUCCESS;

但在action配置中,result并没有配置SUCCESS

XML code
<acti……
[/Quote]
brightyq 2012-08-17
  • 打赏
  • 举报
回复
错了,应该是name
<action name="irjsonProv" class="rjsonActImpl" method="JsonProvince">
<result name="success">xxx</result>
</action>
brightyq 2012-08-17
  • 打赏
  • 举报
回复
错误:
Caused by: There is no result type defined for type 'json' mapped with name 'success'.

在JsonProvince方法中,
return ActionSupport.SUCCESS;

但在action配置中,result并没有配置SUCCESS

<action name="irjsonProv" class="rjsonActImpl" method="JsonProvince"> 
<result type="json"></result>
</action>

另外,return ActionSupport.ERROR;对应的result type=error的也没有。
渭水飞熊 2012-08-17
  • 打赏
  • 举报
回复
关于Struts配置的问题,希望楼主看下以下两篇文章:http://kingxss.iteye.com/blog/1622455 http://www.vijun.com/web/struts/2012/02/5f84f4d9355071010135650850770098.html,另外你返回的json串应该不需要你自己转换,Struts插件已经帮你转换了,而且即使要手动转换也不要这样拼接字符串,用线程的开源框架就能搞定,引入几个jar包就行了。希望以上说的能帮上楼主。
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。 文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下。 先说web.xml配置: [java] view plaincopy 01.<?xml version="1.0" encoding="UTF-8"?> 02. 03. s3h3 04. 05. contextConfigLocation 06. classpath:applicationContext*.xml 07. 08. 09. org.springframework.web.context.ContextLoaderListener 10. 11. 12. 13. spring 14. org.springframework.web.servlet.DispatcherServlet 15. 1 16. 17. 18. spring <!-- 这里在配成spring,下边也要写一个名为spring-servlet.xml的文件,主要用来配置它的controller --> 19. *.do 20. 21. 22. index.jsp 23. 24. spring-servlet,主要配置controller的信息 [java] view plaincopy 01.<?xml version="1.0" encoding="UTF-8"?> 02. 09. 10. 11. <!-- 把标记了@Controller注解的类转换为bean --> 12. 13. <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> 14. 15. 16. <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> 17. 19. 20. 23. applicationContext.xml代码 [java] view plaincopy 01.<?xml version="1.0" encoding="UTF-8"?> 02. 11. 12. 13. <!-- 自动扫描所有注解该路径 --> 14. 15. 16. 17. 19. 20. 21. 22. ${dataSource.dialect} 23. ${dataSource.hbm2ddl.auto} 24. update 25. 26. 27. 28. 29. com.mvc.entity<!-- 扫描实体类,也就是平时所说的model --> 30. 31. 32. 33. 34. 36. 37. 38. 39. 40. 42. 43. 44. 45. 46. 47. <!-- Dao的实现 --> 48. 49. 50. 51. 52. 53. 54. 55. hibernate.properties数据库连接配置 [java] view plaincopy 01.dataSource.password=123 02.dataSource.username=root 03.dataSource.databaseName=test 04.dataSource.driverClassName=com.mysql.jdbc.Driver 05.dataSource.dialect=org.hibernate.dialect.MySQL5Dialect 06.dataSource.serverName=localhost:3306 07.dataSource.url=jdbc:mysql://localhost:3306/test 08.dataSource.properties=user=${dataSource.username};databaseName=${dataSource.databaseName};serverName=${dataSource.serverName};password=${dataSource.password} 09.dataSource.hbm2ddl.auto=update 配置已经完成,下面开始例子 先在数据库建表,例子用的是mysql数据库 [java] view plaincopy 01.CREATE TABLE `test`.`student` ( 02. `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 03. `name` varchar(45) NOT NULL, 04. `psw` varchar(45) NOT NULL, 05. PRIMARY KEY (`id`) 06.) 建好表后,生成实体类 [java] view plaincopy 01.package com.mvc.entity; 02. 03.import java.io.Serializable; 04. 05.import javax.persistence.Basic; 06.import javax.persistence.Column; 07.import javax.persistence.Entity; 08.import javax.persistence.GeneratedValue; 09.import javax.persistence.GenerationType; 10.import javax.persistence.Id; 11.import javax.persistence.Table; 12. 13.@Entity 14.@Table(name = "student") 15.public class Student implements Serializable { 16. private static final long serialVersionUID = 1L; 17. @Id 18. @Basic(optional = false) 19. @GeneratedValue(strategy = GenerationType.IDENTITY) 20. @Column(name = "id", nullable = false) 21. private Integer id; 22. @Column(name = "name") 23. private String user; 24. @Column(name = "psw") 25. private String psw; 26. public Integer getId() { 27. return id; 28. } 29. public void setId(Integer id) { 30. this.id = id; 31. } 32. 33. public String getUser() { 34. return user; 35. } 36. public void setUser(String user) { 37. this.user = user; 38. } 39. public String getPsw() { 40. return psw; 41. } 42. public void setPsw(String psw) { 43. this.psw = psw; 44. } 45.} Dao层实现 [java] view plaincopy 01.package com.mvc.dao; 02. 03.import java.util.List; 04. 05.public interface EntityDao { 06. public List<Object> createQuery(final String queryString); 07. public Object save(final Object model); 08. public void update(final Object model); 09. public void delete(final Object model); 10.} [java] view plaincopy 01.package com.mvc.dao; 02. 03.import java.util.List; 04. 05.import org.hibernate.Query; 06.import org.springframework.orm.hibernate3.HibernateCallback; 07.import org.springframework.orm.hibernate3.support.HibernateDaoSupport; 08. 09.public class EntityDaoImpl extends HibernateDaoSupport implements EntityDao{ 10. public List<Object> createQuery(final String queryString) { 11. return (List<Object>) getHibernateTemplate().execute( 12. new HibernateCallback<Object>() { 13. public Object doInHibernate(org.hibernate.Session session) 14. throws org.hibernate.HibernateException { 15. Query query = session.createQuery(queryString); 16. List<Object> rows = query.list(); 17. return rows; 18. } 19. }); 20. } 21. public Object save(final Object model) { 22. return getHibernateTemplate().execute( 23. new HibernateCallback<Object>() { 24. public Object doInHibernate(org.hibernate.Session session) 25. throws org.hibernate.HibernateException { 26. session.save(model); 27. return null; 28. } 29. }); 30. } 31. public void update(final Object model) { 32. getHibernateTemplate().execute(new HibernateCallback<Object>() { 33. public Object doInHibernate(org.hibernate.Session session) 34. throws org.hibernate.HibernateException { 35. session.update(model); 36. return null; 37. } 38. }); 39. } 40. public void delete(final Object model) { 41. getHibernateTemplate().execute(new HibernateCallback<Object>() { 42. public Object doInHibernate(org.hibernate.Session session) 43. throws org.hibernate.HibernateException { 44. session.delete(model); 45. return null; 46. } 47. }); 48. } 49.} Dao在applicationContext.xml注入 Dao只有一个类的实现,直接供其它service层调用,如果你想更换为其它的Dao实现,也只需修改这里的配置就行了。 开始写view页面,WEB-INF/view下新建页面student.jsp,WEB-INF/view这路径是在spring-servlet.xml文件配置的,你可以配置成其它,也可以多个路径。student.jsp代码 [xhtml] view plaincopy 01.<%@ page language="java" contentType="text/html; charset=UTF-8" 02. pageEncoding="UTF-8"%> 03.<%@ include file="/include/head.jsp"%> 04. 05.<html> 06.<head> 07.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 08.<title>添加</title> 09. 11.// --><!-- 13.table{ border-collapse:collapse; } 14.td{ border:1px solid #f00; } 15.--><style mce_bogus="1">table{ border-collapse:collapse; } 16.td{ border:1px solid #f00; }</style> 17.<!-- 18.function add(){ 19. [removed].href="<%=request.getContextPath() %>/student.do?method=add"; 20.} 21. 22.function del(id){ 23.$.ajax( { 24. type : "POST", 25. url : "<%=request.getContextPath()%>/student.do?method=del&id;=" + id, 26. dataType: "json", 27. success : function(data) { 28. if(data.del == "true"){ 29. alert("删除成功!"); 30. $("#" + id).remove(); 31. } 32. else{ 33. alert("删除失败!"); 34. } 35. }, 36. error :function(){ 37. alert("网络连接出错!"); 38. } 39.}); 40.} 41.// --> 47. 48. 序号 49. 姓名 50. 密码 51. 操作 52. 53. 54. "> 55. 56. 57. 58. 59. <input type="button" value="编辑"/> 60. <input type="button" value="${student.id}"/>')" value="删除"/> 61. 62. 63. 64. 65. 66.</body> 67.</html> student_add.jsp [xhtml] view plaincopy 01.<%@ page language="java" contentType="text/html; charset=UTF-8" 02. pageEncoding="UTF-8"%> 03.<%@ include file="/include/head.jsp"%> 04. 05.<html> 06.<head> 07.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 08.<title>学生添加</title> 09.<!-- 10.function turnback(){ 11. [removed].href="<%=request.getContextPath() %>/student.do"; 12.} 13.// --> 17.
18. 19. 20. 21. 22.
姓名<input id="user" name="user" type="text" /></td>
密码<input id="psw" name="psw" type="text" /></td>
<input type="submit" value="提交"/><input type="button" value="返回" />
23. 24.</form> 25.</body> 26.</html> controller类实现,只需把注解写上,spring就会自动你找到相应的bean,相应的注解标记意义,不明白的,可以自己查下@Service,@Controller,@Entity等等的内容。 [java] view plaincopy 01.package com.mvc.controller; 02. 03.import java.util.List; 04. 05.import javax.servlet.http.HttpServletRequest; 06.import javax.servlet.http.HttpServletResponse; 07. 08.import org.apache.commons.logging.Log; 09.import org.apache.commons.logging.LogFactory; 10.import org.springframework.beans.factory.annotation.Autowired; 11.import org.springframework.stereotype.Controller; 12.import org.springframework.ui.ModelMap; 13.import org.springframework.web.bind.annotation.RequestMapping; 14.import org.springframework.web.bind.annotation.RequestMethod; 15.import org.springframework.web.bind.annotation.RequestParam; 16.import org.springframework.web.servlet.ModelAndView; 17. 18.import com.mvc.entity.Student; 19.import com.mvc.service.StudentService; 20. 21.@Controller 22.@RequestMapping("/student.do") 23.public class StudentController { 24. protected final transient Log log = LogFactory 25. .getLog(StudentController.class); 26. @Autowired 27. private StudentService studentService; 28. public StudentController(){ 29. 30. } 31. 32. @RequestMapping 33. public String load(ModelMap modelMap){ 34. List<Object> list = studentService.getStudentList(); 35. modelMap.put("list", list); 36. return "student"; 37. } 38. 39. @RequestMapping(params = "method=add") 40. public String add(HttpServletRequest request, ModelMap modelMap) throws Exception{ 41. return "student_add"; 42. } 43. 44. @RequestMapping(params = "method=save") 45. public String save(HttpServletRequest request, ModelMap modelMap){ 46. String user = request.getParameter("user"); 47. String psw = request.getParameter("psw"); 48. Student st = new Student(); 49. st.setUser(user); 50. st.setPsw(psw); 51. try{ 52. studentService.save(st); 53. modelMap.put("addstate", "添加成功"); 54. } 55. catch(Exception e){ 56. log.error(e.getMessage()); 57. modelMap.put("addstate", "添加失败"); 58. } 59. 60. return "student_add"; 61. } 62. 63. @RequestMapping(params = "method=del") 64. public void del(@RequestParam("id") String id, HttpServletResponse response){ 65. try{ 66. Student st = new Student(); 67. st.setId(Integer.valueOf(id)); 68. studentService.delete(st); 69. response.getWriter().print("{/"del/":/"true/"}"); 70. } 71. catch(Exception e){ 72. log.error(e.getMessage()); 73. e.printStackTrace(); 74. } 75. } 76.} service类实现 [java] view plaincopy 01.package com.mvc.service; 02. 03.import java.util.List; 04. 05.import org.springframework.beans.factory.annotation.Autowired; 06.import org.springframework.stereotype.Service; 07.import org.springframework.transaction.annotation.Transactional; 08. 09.import com.mvc.dao.EntityDao; 10.import com.mvc.entity.Student; 11. 12.@Service 13.public class StudentService { 14. @Autowired 15. private EntityDao entityDao; 16. 17. @Transactional 18. public List<Object> getStudentList(){ 19. StringBuffer sff = new StringBuffer(); 20. sff.append("select a from ").append(Student.class.getSimpleName()).append(" a "); 21. List<Object> list = entityDao.createQuery(sff.toString()); 22. return list; 23. } 24. 25. public void save(Student st){ 26. entityDao.save(st); 27. } 28. public void delete(Object obj){ 29. entityDao.delete(obj); 30. } 31.} OK,例子写完。有其它业务内容,只需直接新建view,并实现相应comtroller和service就行了,配置和dao层的内容基本不变,也就是每次只需写jsp(view),controller和service调用dao就行了。 怎样,看了这个,spring mvc是不是比ssh实现更方便灵活。

81,117

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧