springMVC的简单增删改查案例,简单认识@controller,@Service,@RequestMapping注解方式
1.Dao类
book与Category类
public class Book {
private long id;
private String isbn;
private String title;
private Category category;
private String author;
public Book(long id, String isbn, String title, Category category,
String author) {
super();
this.id = id;
this.isbn = isbn;
this.title = title;
this.category = category;
this.author = author;
}
public Book() {
super();
// TODO Auto-generated constructor stub
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
import java.io.Serializable;
//书类型类
public class Category implements Serializable {
private static final long serialVersionUID = 7712571129230552971L;
private String name;
private int id;
public Category(int id,String name) {
super();
this.name = name;
this.id = id;
}
public Category() {
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
@Override
public String toString() {
return super.toString();
}
}
2.做接口及实现接口的Service类
public interface BookService {
// 列举所有书的类型
List<Category> getCategories();
// 按id查找类型
Category getCategory(long id);
// 列举所有书籍
List<Book> getAllBooks();
// 保存书籍
Book save(Book book);
// 更新书籍
Book update(Book book);
// 按id查找书
Book getBook(long id);
// 下一id
long getNextid();
}
/**
*注解方式,在实现接口的方法类上必须记得加上相应的注解@Service
*
*/
@Service
public class BookServiceImpl implements BookService{
private List<Category> categories;
private List<Book> books;
public BookServiceImpl() {
categories=new ArrayList<Category>();
Category category1=new Category(1,"Computer");
Category category2=new Category(2,"travel");
Category category3=new Category(3,"home");
categories.add(category3);
categories.add(category1);
categories.add(category2);
books=new ArrayList<Book>();
books.add(new Book(1L,"10001","java for dead",
category1,"imsadan"));
books.add(new Book(2L,"10002","PHP for dead",
category1,"zxf"));
}
@Override
public List<Category> getCategories() {
return categories;
}
@Override
public Category getCategory(long id) {
for (Category category:categories) {
if (id==category.getId()) {
return category;
}
}
return null;
}
@Override
public List<Book> getAllBooks() {
return books;
}
@Override
public Book save(Book book) {
book.setId(getNextid());
books.add(book);
return book;
}
@Override
public Book update(Book book) {
int count=books.size();
for(int i=0;i<count;i++){
Book savebook=books.get(i);
if (savebook.getId()==book.getId()) {
books.set(i,book);
return book;
}
}
return book;
}
@Override
public Book getBook(long id) {
for (Book book:books) {
if (id==book.getId()) {
return book;
}
}
return null;
}
@Override
public long getNextid() {
long id=0L;
for (Book book:books) {
long bookid=book.getId();
if (bookid>id) {
id=bookid;
}
}
return id+1;
}
}
springmvc控制类
/*
*作为控制类,连接视图
*/
@Controller
public class BookController{
@Autowired
private BookService bookService;
private static final Log logger=
LogFactory.getLog(BookController.class);
/*
*相应input.action页面
*添加
*编辑
*保存
*更新
*显示
*/
@RequestMapping(value="/book_input")
public String inputBook(Model model ){
List<Category> categories=bookService.getCategories();
model.addAttribute("categories",categories);
model.addAttribute("Book",new Book());
return "bookAdd";
}
@RequestMapping(value="/book_edit/{id}")
public String editBook(Model model,@PathVariable long id){
List<Category> categories= bookService.getCategories();
model.addAttribute("categories", categories);
Book book=bookService.getBook(id);
model.addAttribute("Book", book);
return "bookEdit";
}
@RequestMapping(value="/book_save")
public String saveBook(@ModelAttribute Book book){
Category category=
bookService.getCategory(book.getCategory().getId());
book.setCategory(category);
bookService.save(book);
//重定向
return "redirect:/book_list";
}
@RequestMapping(value="/book_up")
public String updateBook(@ModelAttribute Book book){
Category category=
bookService.getCategory(book.getCategory().getId());
book.setCategory(category);
bookService.update(book);
return "redirect:/book_list";
}
@RequestMapping(value="/book_list")
public String bookList(Model model){
logger.info("book_list");
List<Book> books=bookService.getAllBooks();
model.addAttribute("books", books);
return "BookList";
}
}
@RequestMapping:为控制器指定可以处理哪些URL请求
3.DispatchServlet配置
DispatchServlet是前置的一个控制器,配置在web.xml中
**
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<!-- scan the package and the sub package -->
<context:component-scan base-package="controller"/>
<context:component-scan base-package="servises"/>
<mvc:annotation-driven />
<mvc:resources location="/" mapping="/*.html"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="ViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
</beans>
注:访问到jgp,css等文件问题
(1)
如上的<mvc:resources location="/" mapping="/*.html"/>
(2)Tomcat的defaultServlet处理
<servlet-mapping>
<servlet-name>default</>
<url-patten>...</url-patten>
</>
springmvc转发与重定向
通过redirect、forward:url转到另一个Action;可以通过redirect:url防止表单的重复提交
注:参考的一个简单log4j.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="debug" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
jsp页面不在具体贴上来了,已上传了