社区
Web 开发
帖子详情
Spring的MVC可不可以和Struts在同一个Context下使用?
zhirenshao
2005-06-12 09:42:38
我在同一个web application下可不可以同时使用Spring的MVC和Struts?
比如我在web.xml里配,让 .do 的request都去struts的ActionServlet, .form的request都去spring的controller,可以这样吗?
...全文
213
19
打赏
收藏
Spring的MVC可不可以和Struts在同一个Context下使用?
我在同一个web application下可不可以同时使用Spring的MVC和Struts? 比如我在web.xml里配,让 .do 的request都去struts的ActionServlet, .form的request都去spring的controller,可以这样吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhirenshao
2005-06-21
打赏
举报
回复
谢谢各位,我用过了阿敏的方法,成功的。现在系统运行的很稳定。
YuLimin
2005-06-17
打赏
举报
回复
老属是否被Cat了?
umbrella1984
2005-06-17
打赏
举报
回复
mapping context没听过,session context就听过。
yinleiyoung
2005-06-16
打赏
举报
回复
本人用的框架就是struts+spring+hibernate的
dlxu
2005-06-16
打赏
举报
回复
但是如果没有框架,一旦开发大一点的系统,你就很郁闷了
loveunittesting
2005-06-16
打赏
举报
回复
破java框架,看这就让人烦。做了好几年java,现在觉得这东西就是骗钱用的
miaoliujun
2005-06-16
打赏
举报
回复
当然可以,只是mapping的问题
YuLimin
2005-06-16
打赏
举报
回复
第 8 层楼 回复人:umbrella1984 (雨伞)Context不能相通吧
什么意思?
hojay2001
2005-06-15
打赏
举报
回复
应该是可以的.
su27007
2005-06-15
打赏
举报
回复
学习一下!
umbrella1984
2005-06-15
打赏
举报
回复
只好望分兴叹了
umbrella1984
2005-06-15
打赏
举报
回复
Context不能相通吧
YuLimin
2005-06-15
打赏
举报
回复
老属,你用我的第二个配置文件就可以的:)我试过了。。。
yangbc
2005-06-13
打赏
举报
回复
这样做是不是自找麻烦,为什么不用统一简单的架构,非要混合使用,虽然每种架构都不完美,但为了开发和维护方便,我认为大体框架风格要一致
BWM369
2005-06-13
打赏
举报
回复
还没有搞到Spring.
向高手学习!
YuLimin
2005-06-13
打赏
举报
回复
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>/spring/*</url-pattern> <!-- 注意这里类似于“一个目录与目录下面的所有映射” -->
</servlet-mapping>
zhirenshao
2005-06-13
打赏
举报
回复
yangbc(土豆块)
因为我的项目已经开发到一半了,前一半都是用struts的,我现在在研究spring,现在项目里也试验一下
YuLimin
2005-06-12
打赏
举报
回复
没有这么用过,但是应当是可以的
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>XXXX</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>*.form</url-pattern>
</servlet-mapping>
zhirenshao
2005-06-12
打赏
举报
回复
阿敏, 每次我的疑难贴都有你回,谢谢。 (而且每次我的疑难贴总共都没几个人回,所以你都有很多分)
spring
_
MVC
源码
弃用了
struts
,用
spring
mvc
框架做了几个项目,感觉都不错,而且
使用
了注解方式,可以省掉一大堆配置文件。本文主要介绍
使用
注解方式配置的
spring
mvc
,之前写的
spring
3.0
mvc
和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。 文中用的框架版本:
spring
3,hibernate 3,没有的,自己上网下。 先说web.xml配置: [java] view plaincopy 01.<?xml version="1.0" encoding="UTF-8"?> 02.
03.
s3h3
04. <
context
-param> 05.
context
ConfigLocation
06.
classpath:application
Context
*.xml
07.
context
-param> 08.
09.
org.
spring
framework.web.
context
.
Context
LoaderListener
10.
11. 12.
13.
spring
14.
org.
spring
framework.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.
context="http://www.
spring
framework.org/schema/
context
" 05. xsi:schemaLocation="http://www.
spring
framework.org/schema/beans http://www.
spring
framework.org/schema/beans/
spring
-beans-3.0.xsd 06. http://www.
spring
framework.org/schema/aop http://www.
spring
framework.org/schema/aop/
spring
-aop-3.0.xsd 07. http://www.
spring
framework.org/schema/tx http://www.
spring
framework.org/schema/tx/
spring
-tx-3.0.xsd 08. http://www.
spring
framework.org/schema/
context
http://www.
spring
framework.org/schema/
context
/
spring
-
context
-3.0.xsd"> 09. 10. <
context
:annotation-config /> 11. <!-- 把标记了@Controller注解的类转换为bean --> 12. <
context
:component-scan base-package="com.
mvc
.controller" /> 13. <!-- 启动
Spring
MVC
的注解功能,完成请求和注解POJO的映射 --> 14.
15. 16. <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> 17.
19. 20.
23.
application
Context
.xml代码 [java] view plaincopy 01.<?xml version="1.0" encoding="UTF-8"?> 02.
context="http://www.
spring
framework.org/schema/
context
" 04. xmlns:p="http://www.
spring
framework.org/schema/p" xmlns:tx="http://www.
spring
framework.org/schema/tx" 05. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 06. xsi:schemaLocation=" 07. http://www.
spring
framework.org/schema/beans http://www.
spring
framework.org/schema/beans/
spring
-beans-3.0.xsd 08. http://www.
spring
framework.org/schema/
context
http://www.
spring
framework.org/schema/
context
/
spring
-
context
-3.0.xsd 09. http://www.
spring
framework.org/schema/aop http://www.
spring
framework.org/schema/aop/
spring
-aop-3.0.xsd 10. http://www.
spring
framework.org/schema/tx http://www.
spring
framework.org/schema/tx/
spring
-tx-3.0.xsd"> 11. 12. <
context
:annotation-config /> 13. <
context
:component-scan base-package="com.
mvc
" /> <!-- 自动扫描所有注解该路径 --> 14. 15. <
context
:property-placeholder location="classpath:/hibernate.properties" /> 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.
spring
framework.orm.hibernate3.HibernateCallback; 07.import org.
spring
framework.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在application
Context
.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.get
Context
Path() %>/student.do?method=add"; 20.} 21. 22.function del(id){ 23.$.ajax( { 24. type : "POST", 25. url : "<%=request.get
Context
Path()%>/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.get
Context
Path() %>/student.do"; 12.} 13.// -->
ContextPath() %>/student.do?method=save"> 17.
18.
19.
姓名
<input id="user" name="user" type="text" /></td>
20.
密码
<input id="psw" name="psw" type="text" /></td>
21.
<input type="submit" value="提交"/><input type="button" value="返回" />
22.
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.
spring
framework.beans.factory.annotation.Autowired; 11.import org.
spring
framework.stereotype.Controller; 12.import org.
spring
framework.ui.ModelMap; 13.import org.
spring
framework.web.bind.annotation.RequestMapping; 14.import org.
spring
framework.web.bind.annotation.RequestMethod; 15.import org.
spring
framework.web.bind.annotation.RequestParam; 16.import org.
spring
framework.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.
spring
framework.beans.factory.annotation.Autowired; 06.import org.
spring
framework.stereotype.Service; 07.import org.
spring
framework.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实现更方便灵活。
spring
2_5 系列jar包
commons-logging.jar
spring
.jar
spring
-agent.jar
spring
-aop.jar
spring
-aspects.jar
spring
-beans.jar
spring
-
context
.jar
spring
-
context
-support.jar
spring
-core.jar
spring
-jdbc.jar
spring
-jms.jar
spring
-orm.jar
spring
-test.jar
spring
-tomcat-weaver.jar
spring
-tx.jar
spring
-web.jar
spring
-web
mvc
.jar
spring
-web
mvc
-portlet.jar
spring
-web
mvc
-
struts
.jar
spring
3.2.4.RELEASE jar包
spring
3.2.4 Realease 的所有jar包:
spring
-
context
-3.2.4.RELEASE.jar
spring
-core-3.2.4.RELEASE.jar
spring
-beans-3.2.4.RELEASE.jar
spring
-test-3.2.4.RELEASE.jar
spring
-web-3.2.4.RELEASE.jar
spring
-aop-3.2.4.RELEASE.jar
spring
-web
mvc
-3.2.4.RELEASE.jar
spring
-jdbc-3.2.4.RELEASE.jar
spring
-tx-3.2.4.RELEASE.jar
spring
-
context
-support-3.2.4.RELEASE.jar
spring
-orm-3.2.4.RELEASE.jar
spring
-jms-3.2.4.RELEASE.jar
spring
-expression-3.2.4.RELEASE.jar
spring
-aspects-3.2.4.RELEASE.jar
spring
-oxm-3.2.4.RELEASE.jar
spring
-web
mvc
-portlet-3.2.4.RELEASE.jar
spring
-instrument-3.2.4.RELEASE.jar
spring
-
struts
-3.2.4.RELEASE.jar
spring
-instrument-tomcat-3.2.4.RELEASE.jar
Spring
的
MVC
和
Struts
在
同一个
Context
下
使用
我在
同一个
web application下
可不可以
同时
使用
Spring
的
MVC
和
Struts
? 比如我在web.xml里配,让 .do 的request都去
struts
的ActionServlet, .form的request都去
spring
的controller,可以这样吗? 因为我的项目已经开发到一半了,前一半都是用
struts
的,我现在在研究
spring
,现在项目里也试验一下 -------
Struts
2快速升级
Spring
MVC
指南
Struts
2升级
Spring
MVC
Struts
2自动填充
Web 开发
81,091
社区成员
341,718
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章