如何使用Eclipse制作一个crud操作

自己用eclipse制作的安卓程序如何安装到手机上???_百度知道
自己用eclipse制作的安卓程序如何安装到手机上???
我有更好的答案
最简单的方法是,你在eclipse AVD运行后,在bin文件夹了会生成一个apk安装包,可以拉到手机安装!
bin文件夹里的apk后缀的文件,把他拉到手机,运行那个,就是安装了。
其他类似问题
3人觉得有用
为您推荐:
您可能关注的推广回答者:
安卓的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁当前访客身份:游客 [
:引用来自“snowdream”的评论扩散好东西要共享...
:引用来自“余哥Cse”的评论支持!
:引用来自“silence_changing”的评论我能说我的激...
:我能说我的激动吗
:引用来自“恶少SAMA”的评论 4.3之前可用,4.4已...
:4.3之前可用,4.4已经可以手工隐藏了
:能否修改一下,改成全js的?你这里面还夹杂这asp...
今日访问:3
昨日访问:78
本周访问:215
本月访问:487
所有访问:12117
springside4配置Mysql并在Eclipse上创建quickstart的CRUD示例
发表于3年前( 15:04)&&
阅读(2303)&|&评论()
0人收藏此文章,
一:准备工作
1.下载安装MySql,确保安装成功。
2.下载mave、springside并配置,参考:
3.Eclipse配置m2eclipse.参考上篇博客:
4.成功运行quickstart,运行界面如下:
二:&配置Mysql
&&&&1.官方参考资料:
&&&&2.修改pom.xml,注释掉h2相关配置
&!-- 项目属性,修改为mysql --&
&jdbc.driver.groupId&com.h2database&/jdbc.driver.groupId&
&jdbc.driver.artifactId&h2&/jdbc.driver.artifactId&
&jdbc.driver.version&${h2.version}&/jdbc.driver.version&
&jdbc.driver.groupId&mysql&/jdbc.driver.groupId&
&jdbc.driver.artifactId&mysql-connector-java&/jdbc.driver.artifactId&
&jdbc.driver.version&5.0.8&/jdbc.driver.version&
&dependency&
&groupId&com.h2database&/groupId&
&artifactId&h2&/artifactId&
&version&${h2.version}&/version&
&scope&test&/scope&
&/dependency&
&&&&&&&&&&&&&!-- 修改刷新开发环境数据库,将sql脚本定义至mysql的脚本 --&
&sql driver=&${jdbc.driver}& url=&${jdbc.url}& userid=&${jdbc.username}& password=&${jdbc.password}& onerror=&continue&&
&classpath refid=&maven.test.classpath& /&
&transaction src=&src/main/resources/sql/mysql/schema.sql&/&
&transaction src=&src/test/resources/data/import-data.sql&/&
3.修改application.properties
#mysql database setting
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springdb?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=1234
#dbcp settings
dbcp.maxIdle=5
dbcp.maxActive=40
4.修改applicationContext.xml相应部分
如果在functional测试期间也需要使用mysql,更改application.functional.properties中的配置,并且修改applicatonContext.xml的functional profile中的sql脚本目录。
5.在mysql下新建数据库(例如:springdb),然后运行springside下的mysql脚本
6.运行springside项目bin下的refresh-db.bat,刷新数据。会看到表中多了数据
三:CRUD示例
&&&&官方资料:。但是我按照官方资料运行有点错误,所以自己总结下。
&&&&1.数据库设计:
&&&&在src/resouces/sql/mysql/schema.sql 中手工编写创建表的sql。 建好之后最好运行springside项目bin下的refresh-db.bat,刷新数据。
create table acct_user (
id bigint auto_increment,
email varchar(255),
login_name varchar(255) not null unique,
name varchar(255),
password varchar(255),
primary key (id)
) engine=InnoDB;
&&&&2.Entity
&&&&&&&&2.1 手工编写Entity,利用默认大于配置原理,写尽量少的注释, 一般只有带前缀的表名,Cache和关联属性需要注释。
package org.springside.examples.quickstart.
import javax.persistence.E
import javax.persistence.T
import org.hibernate.validator.constraints.NotB
@Table(name=&ACCT_USER&)
public class UserDemo extends IdEntity {
private String loginN
public String getLoginName() {
return loginN
public void setLoginName(String loginName) {
this.loginName = loginN
public String getPassword() {
public void setPassword(String password) {
this.password =
public String getName() {
public void setName(String name) {
this.name =
public String getEmail() {
public void setEmail(String email) {
this.email =
&&&& 2.2 执行test中的JpaMapptingTest.java校验ORM配置正确。
&&&&&2.3 Spring的LocalContainerEntityManagerFactoryBean能自动扫描packagesToScan中的@Entity类,无需逐一配置。&&&&
&&&& 3.1写一个简单的DAO接口,日后再根据需要添加方法定义。
package org.springside.examples.quickstart.
import org.springframework.data.repository.PagingAndSortingR
import org.springside.examples.quickstart.entity.UserD
public interface UserDemoDao extends PagingAndSortingRepository&UserDemo, Long& {
&& 3.2 Spring Data JPA能根据&jpa:repositories&自动扫描继承于Repostory及其子接口的接口,无需配置。
&&&& 3.3 如果有复杂的操作或ORM关系可添加单元测试,否则可忽略。
&&&&4.Service
&&&& 4.1 按业务划分新建或使用已有Service(与DAO不应是一一对应关系),根据需求添加方法定义。 注意事务定义。
package org.springside.examples.quickstart.service.
import java.util.L
import org.springframework.beans.factory.annotation.A
import org.springframework.data.domain.S
import org.springframework.data.domain.Sort.D
import org.
import org.springframework.transaction.annotation.T
import org.springside.examples.quickstart.entity.UserD
import org.springside.examples.quickstart.repository.UserDemoD
@Component
@Transactional(readOnly = true)
public class UserDemoService {
private UserDemoDao userDemoD
@Autowired
public void setUserDemoDao(UserDemoDao userDemoDao) {
this.userDemoDao = userDemoD
public UserDemo findUserDemobyName(Long id) {
return userDemoDao.findOne(id);
@Transactional(readOnly = false)
public void deleteUserDemo(Long id) {
userDemoDao.delete(id);
@Transactional(readOnly = false)
public void saveUserDemo(UserDemo userDemo) {
userDemoDao.save(userDemo);
public List&UserDemo& findAllUserDemo() {
return (List&UserDemo&) userDemoDao.findAll(((new Sort(Direction.ASC,
&& &4.2 Spring能根据applicationContext.xml中的&context:component-scan...&自动扫描@Service或@Component, 无需配置。
&&&& 4.3 对有业务逻辑的方法要编写单元测试,并用Mock框架模拟dao层。
&&&&5.Web Controller
&&&&&5.1 我这里写了两个controller 一个负责增、查、删
package org.springside.examples.quickstart.web.
import java.util.L
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.C
import org.springframework.ui.M
import org.springframework.web.bind.annotation.PathV
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.servlet.mvc.support.RedirectA
import org.springside.examples.quickstart.entity.UserD
import org.springside.examples.quickstart.service.userdemo.UserDemoS
* List page:
* @author Robin
@Controller
@RequestMapping(value = &/userDemo&)
public class UserDemoController {
@Autowired
private UserDemoService userDemoS
@RequestMapping(value ={&list&,&&})
public String list(Model model) {
List&UserDemo& userDemos = userDemoService.findAllUserDemo();
model.addAttribute(&userDemos&, userDemos);
return &userDemo/userDemoList&;
@RequestMapping(value = &create&, method = RequestMethod.GET)
public String createForm(Model model) {
model.addAttribute(&userDemo&, new UserDemo());
//设置跳转的action 但是未成功。采用写死的方法
//model.addAttribute(&action&, &create&);
return &userDemo/userDemoForm&;
@RequestMapping(value = &save&, method = RequestMethod.POST)
public String create(UserDemo newUserDemo,
RedirectAttributes redirectAttributes) {
userDemoService.saveUserDemo(newUserDemo);
redirectAttributes.addFlashAttribute(&message&, &创建&+newUserDemo.getLoginName()+&成功&);
return &redirect:/userDemo/&;
@RequestMapping(value = &delete/{id}&)
public String delete(@PathVariable(&id&) Long id,
RedirectAttributes redirectAttributes) {
userDemoService.deleteUserDemo(id);
redirectAttributes.addFlashAttribute(&message&, &删除任务成功&);
return &redirect:/userDemo/&;
5.2 另外一个负责修改
package org.springside.examples.quickstart.web.
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.C
import org.springframework.ui.M
import org.springframework.web.bind.annotation.ModelA
import org.springframework.web.bind.annotation.PathV
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.servlet.mvc.support.RedirectA
import org.springside.examples.quickstart.entity.UserD
import org.springside.examples.quickstart.service.userdemo.UserDemoS
@Controller
@RequestMapping(value = &/userDemo&)
public class UserDemoUpdateController {
private UserDemoService userDemoS
@Autowired
public void setUserDemoService(UserDemoService userDemoService) {
this.userDemoService = userDemoS
@RequestMapping(value = &update/{id}&)
public String updateForm(Model model) {
return &userDemo/userDemoForm&;
@RequestMapping(value = &save/{id}&)
public String update(@ModelAttribute(&userDemo&) UserDemo userDemo,
RedirectAttributes redirectAttributes) {
userDemoService.saveUserDemo(userDemo);
redirectAttributes.addFlashAttribute(&message&,
&更新& + userDemo.getLoginName() + &成功&);
return &redirect:/userDemo/&;
* 使用@ModelAttribute, 实现Struts2
* Preparable二次部分绑定的效果,先根据form的id从数据库查出Task对象,再把Form提交的内容绑定到该对象上。
* 因为仅update()方法的form中有id属性,因此本方法在该方法中执行.
@ModelAttribute(&userDemo&)
public UserDemo getUserDemoId(@PathVariable(&id&) Long id) {
return userDemoService.findUserDemobyName(id);
} &&&&5.3 Spring能根据spring-mvc.xml中的&context:component-scan& 自动扫描@Controller, 无需配置。
&&&&5.4 如果有participation update的情况,即Form表单中的变量没有包含Entity中的所有属性,一个方法是另外编写一个DTO,一个方法是参照quickstart中基于@ModelAttribute的二次绑定的做法。
&&&&&6.JSP
&&&&&总共两个jsp页面,在WEB-INF的views文件夹下新建userDemo,在其中创建两个jsp文件:userDemoForm.jsp,userDemoList.jsp
&&&&& 6.1 userDemoForm.jsp
&%@ page contentType=&text/charset=UTF-8& %&
&%@ taglib prefix=&c& uri=&/jsp/jstl/core& %&
&c:set var=&ctx& value=&${pageContext.request.contextPath}&/&
&title&UserDemo管理&/title&
$(document).ready(function() {
//聚焦第一个输入框
$(&#userDemo_loginName&).focus();
//为inputForm注册validate函数
$(&#inputForm&).validate();
&form id=&inputForm& action=&${ctx}/userDemo/save/${userDemo.id}&
method=&POST& class=&form-horizontal&&
&input type=&hidden& name=&id& value=&${userDemo.id}&/&
&fieldset&
&legend&&small&管理UserDemo任务&/small&&/legend&
&div class=&control-group&&
&label for=&userDemo_loginName& class=&control-label&&LoginName:&/label&
&div class=&controls&&
&input type=&text& id=&userDemo_loginName& name=&loginName&
value=&${userDemo.loginName}& class=&input-large required& minlength=&3&/&
&div class=&control-group&&
&label for=&userDemo_password& class=&control-label&&Password:&/label&
&div class=&controls&&
&textarea id=&userDemo_password& name=&password& class=&input-large&&${userDemo.password}&/textarea&
&div class=&control-group&&
&label for=&userDemo_name& class=&control-label&&Name:&/label&
&div class=&controls&&
&textarea id=&userDemo_name& name=&name& class=&input-large&&${userDemo.name}&/textarea&
&div class=&control-group&&
&label for=&userDemo_email& class=&control-label&&Email:&/label&
&div class=&controls&&
&textarea id=&userDemo_email& name=&email& class=&input-large&&${userDemo.email}&/textarea&
&div class=&form-actions&&
&input id=&submit_btn& class=&btn btn-primary& type=&submit& value=&提交&/&&
&input id=&cancel_btn& class=&btn& type=&button& value=&返回& onclick=&history.back()&/&
&/fieldset&
6.2 userDemoList.jsp
&%@ page contentType=&text/charset=UTF-8& %&
&%@ taglib prefix=&c& uri=&/jsp/jstl/core& %&
&%@ taglib prefix=&tags& tagdir=&/WEB-INF/tags& %&
&c:set var=&ctx& value=&${pageContext.request.contextPath}&/&
&title&UserDemo管理&/title&
&c:if test=&${not empty message}&&
&div id=&message& class=&alert alert-success&&&button data-dismiss=&alert& class=&close&&&&/button&${message}&/div&
&div class=&row&&
&div class=&span4 offset7&&
&form class=&form-search& action=&#&&
&label&查询条件(id):&/label& &input type=&text& name=&search_LIKE_id& class=&input-medium& value=&${param.search_LIKE_id}&&
&button type=&submit& class=&btn&&Search&/button&
&tags:sort/&
&table id=&contentTable& class=&table table-striped table-bordered table-condensed&&
&thead&&tr&&th&登录名&/th&&th&密码&/th&&th&姓名&/th&&th&邮箱&/th&&th&操作&/th&&/tr&&/thead&
&c:forEach items=&${userDemos}& var=&userDemo&&
&td&&a href=&${ctx}/userDemo/update/${userDemo.id}&&${userDemo.loginName}&/a&&/td&
&td&${userDemo.password}&/td&
&td&${userDemo.name}&/td&
&td&${userDemo.email}&/td&
&td&&a href=&${ctx}/userDemo/delete/${userDemo.id}&&删除&/a&&/td&
&/c:forEach&
&div&&a class=&btn& href=&${ctx}/userDemo/create&&创建用户&/a&&/div&
6.3 为方便查看userdemo修改header.jsp ,添加一行代码:&li&&a href=&${ctx}/userDemo&&userDemo&/a&&/li&
7.最好重启下eclipse。运行结果如下:
四:遇到的问题
&&&&1.修改配置文件后,必须要重启eclipse,否则不能正确读取,不知道是什么原因。
&&& &2.Invocation of init method failed错误。
&&&&&& 解决办法:@RequestMapping(value = &save&)& 多个requestmapping 的value值相同,设置为不同的值。
&&&&&&3.开发过程中可能会遇到运行refresh-db.bat出错的问题,可能是由于没有mysql-connector&& jar包引起的,此外还要注意mysql-connector&的版本问题,在配置文件中要注意。
说明:我也是刚开始研究接触springside,有困难大家一起讨论~~~
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读为什么Play引用了CRUD后在eclipse中会找不到class文件_百度知道
为什么Play引用了CRUD后在eclipse中会找不到class文件
提问者采纳
您好,很高兴为您解答:解决它的办法是重新 把该项目重新 生成eclipse所支持的项目,然后重新导入eclipse中。 找不到的原因是新加入的Module的路径没有加入到eclipse中。希望以上信息可以帮到您!
微软认证系统工程师
其他类似问题
为您推荐:
crud的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Spring MVC + Hibernate + Maven: Crud操作示例 - ImportNew
| 分类: ,
| 标签: ,
关于作者(Alexey Zvolinskiy)
Alexey是一个在使用Java,TestNG 和Selenium的自动化WEB应用程序中有丰富经验的测试开发者。他如此的喜欢QA以至于在下班后他为初级QA工程师提供培训课程。
在这篇文章中我想介绍一个Spring MVC + Hibernate + Maven例子。这组技术主要涉及一些基础知识,我想在每一个必要的地方详细解释它。本篇话题范围以外的更多资源,我会提供链接方便你阅读。在文章的最后,我将发布一个GitHub的链接。
示例web应用程序是基于Spring MVC, Hibernate, Maven的,界面是基于HTML的。这个应用程序将提供所有的CRUD操作:增删改查。和往常一样,我将使用Mysql作为我的数据库。这个应用程序将把足球俱乐部相关的实体来作为示例,所以这个教程将会涉及运动领域。
我需要在数据库中创建一个表,下面就是创建它的代码:
CREATE TABLE `teams` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`name` varchar(40) NOT NULL,
`rating` int(6) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
这个表将在应用程序中用下面的类来表示:
@Table(name=&teams&)
public class Team {
@GeneratedValue
public Integer getId() {
public void setId(Integer id) {
public String getName() {
public void setName(String name) {
this.name =
public Integer getRating() {
public void setRating(Integer rating) {
this.rating =
然后我需要在IDE(我使用)里面创建一个Maven项目。我将略过创建的详细过程,你可以查看它在我的关于的文章里,这是文件的链接。首先最重要的一点就是WebAppConfig.java 文件,所以我开始吧:
@Configuration
@ComponentScan(&com.sprhib&)
@EnableWebMvc
@EnableTransactionManagement
@PropertySource(&classpath:application.properties&)
public class WebAppConfig {
private static final String PROPERTY_NAME_DATABASE_DRIVER = &db.driver&;
private static final String PROPERTY_NAME_DATABASE_PASSWORD = &db.password&;
private static final String PROPERTY_NAME_DATABASE_URL = &db.url&;
private static final String PROPERTY_NAME_DATABASE_USERNAME = &db.username&;
private static final String PROPERTY_NAME_HIBERNATE_DIALECT = &hibernate.dialect&;
private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = &hibernate.show_sql&;
private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = &entitymanager.packages.to.scan&;
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(env.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));
dataSource.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));
dataSource.setUsername(env.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));
dataSource.setPassword(env.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));
return dataS
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource());
sessionFactoryBean.setPackagesToScan(env.getRequiredProperty(
PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));
sessionFactoryBean.setHibernateProperties(hibProperties());
return sessionFactoryB
private Properties hibProperties() {
Properties properties = new Properties();
properties.put(PROPERTY_NAME_HIBERNATE_DIALECT, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT));
properties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory().getObject());
return transactionM
public UrlBasedViewResolver setupViewResolver() {
UrlBasedViewResolver resolver = new UrlBasedViewResolver();
resolver.setPrefix(&/WEB-INF/pages/&);
resolver.setSuffix(&.jsp&);
resolver.setViewClass(JstlView.class);
在这个文件开头,你看见了注解@EnableTransactionManagement,它可以使Spring的注解驱动事务管理器生效工作。注解@PropertySource(“classpath:application.properties”)定位属性文件所在的资源文件夹。注意着三个beans:transactionManager, sessionFactory, dataSource,这些beans提供了事务管理。更多信息可以阅读我的关于的文章。
#DB properties:
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/hibnatedb
db.username=hibuser
db.password=root
#Hibernate Configuration:
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.show_sql=true
entitymanager.packages.to.scan=com.sprhib.model
以上是我和项目有关的所有准备,接下来我将向你展示DAO层和Service层。
DAO层和Service层
下面是DAOs和Services接口和实现:
public interface TeamDAO {
public void addTeam(Team team);
public void updateTeam(Team team);
public Team getTeam(int id);
public void deleteTeam(int id);
public List
getTeams();
@Repository
public class TeamDAOImpl implements TeamDAO {
@Autowired
private SessionFactory sessionF
private Session getCurrentSession() {
return sessionFactory.getCurrentSession();
public void addTeam(Team team) {
getCurrentSession().save(team);
public void updateTeam(Team team) {
Team teamToUpdate = getTeam(team.getId());
teamToUpdate.setName(team.getName());
teamToUpdate.setRating(team.getRating());
getCurrentSession().update(teamToUpdate);
public Team getTeam(int id) {
Team team = (Team) getCurrentSession().get(Team.class, id);
public void deleteTeam(int id) {
Team team = getTeam(id);
if (team != null)
getCurrentSession().delete(team);
@SuppressWarnings(&unchecked&)
public List
getTeams() {
return getCurrentSession().createQuery(&from Team&).list();
注解 @Repository 表明被注解的类是一个DAO
public interface TeamService {
public void addTeam(Team team);
public void updateTeam(Team team);
public Team getTeam(int id);
public void deleteTeam(int id);
public List
getTeams();
@Transactional
public class TeamServiceImpl implements TeamService {
@Autowired
private TeamDAO teamDAO;
public void addTeam(Team team) {
teamDAO.addTeam(team);
public void updateTeam(Team team) {
teamDAO.updateTeam(team);
public Team getTeam(int id) {
return teamDAO.getTeam(id);
public void deleteTeam(int id) {
teamDAO.deleteTeam(id);
public List
getTeams() {
return teamDAO.getTeams();
注解@Service表明备注解的类是一个“Service”。注解@Transactional在一个方法或者是类上声明一个事务。
控制器和JSPs
现在我就要涵盖所有的 CRUD操作,这一章会有点长。我将从最基础的控制器开始,它负责主页:
@Controller
public class LinkController {
@RequestMapping(value=&/&)
public ModelAndView mainPage() {
return new ModelAndView(&home&);
@RequestMapping(value=&/index&)
public ModelAndView indexPage() {
return new ModelAndView(&home&);
它挺简单的,这是JSP文件:
&h1&Home page&/h1&
${message}&br&
&a href=&${pageContext.request.contextPath}/team/add.html&&Add new team&/a&&br&
&a href=&${pageContext.request.contextPath}/team/list.html&&Team list&/a&&br&
下面是这里是核心控制器,主要应用程序的控制器:
@Controller
public class TeamController {
@Autowired
private TeamService teamS
@RequestMapping(value=&/team/add&)
public ModelAndView addTeamPage() {
ModelAndView modelAndView = new ModelAndView(&add-team-form&);
modelAndView.addObject(&team&, new Team());
return modelAndV
@RequestMapping(value=&/team/add/process&)
public ModelAndView addingTeam(@ModelAttribute Team team) {
ModelAndView modelAndView = new ModelAndView(&home&);
teamService.addTeam(team);
String message = &Team was successfully added.&;
modelAndView.addObject(&message&, message);
return modelAndV
@RequestMapping(value=&/team/list&)
public ModelAndView listOfTeams() {
ModelAndView modelAndView = new ModelAndView(&list-of-teams&);
teams = teamService.getTeams();
modelAndView.addObject(&teams&, teams);
return modelAndV
@RequestMapping(value=&/team/edit/{id}&, method=RequestMethod.GET)
public ModelAndView editTeamPage(@PathVariable Integer id) {
ModelAndView modelAndView = new ModelAndView(&edit-team-form&);
Team team = teamService.getTeam(id);
modelAndView.addObject(&team&,team);
return modelAndV
@RequestMapping(value=&/team/edit/{id}&, method=RequestMethod.POST)
public ModelAndView edditingTeam(@ModelAttribute Team team, @PathVariable Integer id) {
ModelAndView modelAndView = new ModelAndView(&home&);
teamService.updateTeam(team);
String message = &Team was successfully edited.&;
modelAndView.addObject(&message&, message);
return modelAndV
@RequestMapping(value=&/team/delete/{id}&, method=RequestMethod.GET)
public ModelAndView deleteTeam(@PathVariable Integer id) {
ModelAndView modelAndView = new ModelAndView(&home&);
teamService.deleteTeam(id);
String message = &Team was successfully deleted.&;
modelAndView.addObject(&message&, message);
return modelAndV
基本上所有的方法和请求映射都是很清晰的。请注意editTeamPage() 和edditingTeam() 方法的@RequestMapping,对于不同的method属性包含不同的值。
现在我们来看看JSP页面:
“Add new team” 页面
&h1&Add team page&/h1&
&p&Here you can add a new team.&/p&
&form:form method=&POST& commandname=&team& action=&${pageContext.request.contextPath}/team/add/process.html&&
&td&Name:&/td&
&td&&form:input path=&name&&&/form:input&&/td&
&td&Rating:&/td&
&td&&form:input path=&rating&&&/form:input&&/td&
&td&&input value=&Add& type=&submit&&&/td&
&/form:form&
&p&&a href=&${pageContext.request.contextPath}/index.html&&Home page&/a&&/p&
“List of teams” 页面:
&h1&List of teams&/h1&
&p&Here you can see the list of the teams, edit them, remove or update.&/p&
&c:foreach var=&team& items=&${teams}&&
&/c:foreach&&table border=&1px& cellpadding=&0& cellspacing=&0&&
&th width=&10%&&id&/th&&th width=&15%&&name&/th&&th width=&10%&&rating&/th&&th width=&10%&&actions&/th&
&td&${team.id}&/td&
&td&${team.name}&/td&
&td&${team.rating}&/td&
&a href=&${pageContext.request.contextPath}/team/edit/${team.id}.html&&Edit&/a&&br&
&a href=&${pageContext.request.contextPath}/team/delete/${team.id}.html&&Delete&/a&&br&
&p&&a href=&${pageContext.request.contextPath}/index.html&&Home page&/a&&/p&
“Edit team” 页面:
&h1&Edit team page&/h1&
&p&Here you can edit the existing team.&/p&
&p&${message}&/p&
&form:form method=&POST& commandname=&team& action=&${pageContext.request.contextPath}/team/edit/${team.id}.html&&
&td&Name:&/td&
&td&&form:input path=&name&&&/form:input&&/td&
&td&Rating:&/td&
&td&&form:input path=&rating&&&/form:input&&/td&
&td&&input value=&Edit& type=&submit&&&/td&
&/form:form&
&p&&a href=&${pageContext.request.contextPath}/index.html&&Home page&/a&&/p&
“List of teams” 页面的效果:
几个技术的整合通常不是一件简单的事情,所有如果要想成功就需要有耐心。在这篇文章中没有囊括所有的资源,你可以访问去查看哪些你感兴趣的类。
原文链接:
- 译文链接: [ 转载请保留原文出处、译者和译文链接。]
关于作者:
(新浪微博:)
微信关注: ImportNew
分享Java相关的技术文章、工具资源和热点资讯。扫描加关注,碎片时间提高Java开发技能!
博主,去哪里找到JVM官方支持的参数呀,能提供一下么?
关于ImportNew
ImportNew 专注于 Java 技术分享。于日 11:11正式上线。是的,这是一个很特别的时刻 :)
ImportNew 由两个 Java 关键字 import 和 new 组成,意指:Java 开发者学习新知识的网站。 import 可认为是学习和吸收, new 则可认为是新知识、新技术圈子和新朋友……
&#8211; 写了文章?看干货?去头条!
&#8211; 为IT单身男女服务的征婚传播平台
&#8211; 优秀的工具资源导航
&#8211; 活跃 &#038; 专业的翻译小组
&#8211; 国内外的精选博客文章
&#8211; JavaScript, HTML5, CSS
&#8211; 专注Android技术分享
&#8211; 专注iOS技术分享
&#8211; 专注Java技术分享
&#8211; 专注Python技术分享
新浪微博:
微信号:importnew
反馈建议:@
广告与商务合作QQ:
& 2015 ImportNew}

我要回帖

更多关于 crud操作 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信