app1org.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:app1-servlet.xml1app1/
int sum = a + b;
model.addAttribute("msg", sum);
return "restful";
}
}
重定向redirect
语法:return "redirect:/foo/bar";
// @PostMapping("/rest/test/{a}/{b}")
public String test(@PathVariable int a, @PathVariable int b, Model model) {
int sum = a + b;
model.addAttribute("msg", sum);
//return "redirect:/index.jsp";
return "redirect:/rest/test2";
}
@GetMapping("/rest/test2")
public String test2(Model model) {
model.addAttribute("msg", "redirect ok...");
return "restful";
}
获取参数
建议所有参数都加上@RequestParam()
package cn.cnyasin.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class EncodingController {
@RequestMapping("/encoding/test1")
public String test1(@RequestParam("data") String data, Model model) {
model.addAttribute("msg", data);
return "encoding";
}
}
@RestController
public class JsonController {
// @RequestMapping(value = "/json/test1", produces = "application/json;charset=utf-8")
@RequestMapping(value = "/json/test1")
public String test1() throws JsonProcessingException {
HashMap user = new HashMap();
user.put("id", 123);
user.put("name", "张三");
user.put("age", 12);
List userList = new ArrayList();
userList.add(user);
HashMap data = new HashMap();
data.put("total", 10);
data.put("userList", userList);
ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = objectMapper.writevalueAsString(data);
return jsonStr;
}
}
Fastjson使用
使用方法类似“Jackson”,但是据说bug较多,此处就不练习了
Maven导入Jackson依赖
com.alibabafastjson1.2.76
SSM整合
依赖:
Junit(junit)
数据库驱动(mysql-connector-java)
连接池(默认、c3p0、dhcp、druid等)
Servlet(servlet-api)
JSP(jsp-api,jstl)
Mybatis(mybatis)
Mybatis-Spring(mybatis-spring)
Spring(spring-mvc,spring-jdbc)
整合分层后配置文件列表(具体文件内容已经单独列为一个文件夹:SSM分层配置)
/pom.xml
/web/WEB-INF/web.xml
/classpath:jdbc.properties
/classpath:mybatis-config.xml
/classpath:applicationContext.xml
/classpath:spring-mvc.xml
/classpath:spring-service.xml
/classpath:spring-dao.xml
整合分层后以书籍查询为例代码演示
cn.cnyasin.pojo.Book.jsva
package cn.cnyasin.pojo;
public class Book {
private int id;
private String name;
private int status;
private long createdAt;
// getter,setter...
}
cn.cnyasin.dao.BookMapper.java
package cn.cnyasin.dao;
import cn.cnyasin.pojo.Book;
import java.util.List;
public interface BookMapper {
// 增加
int insertOne(Book book);
// 修改
int updateOne(Book book);
// 删除
int deleteOne(int id);
// 一个
Book getOne(int id);
// 所有
List getAll();
}
cn.cnyasin.dao.BookMapper.xml
insert into book (`name`, `status`, `created_at`)
values (#{name}, #{status}, #{createdAt})
update book set `name` = #{name} where id = #{id}
delete from book where id = #{id}
cn.cnyasin.service.BookService.java
package cn.cnyasin.service;
import cn.cnyasin.pojo.Book;
import java.util.List;
public interface BookService {
// 增加
int insertOne(Book book);
// 修改
int updateOne(Book book);
// 删除
int deleteOne(int id);
// 一个
Book getOne(int id);
// 所有
List getAll();
// 事务测试:插入&删除&查全部
List insertDeleteGetAll(Book book);
}
cn.cnyasin.service.BookServiceImpl.java
package cn.cnyasin.service;
import cn.cnyasin.dao.BookMapper;
import cn.cnyasin.pojo.Book;
import java.util.List;
public class BookServiceImpl implements BookService {
private BookMapper bookMapper;
public void setBookMapper(BookMapper bookMapper) {
this.bookMapper = bookMapper;
}
public int insertOne(Book book) {
return bookMapper.insertOne(book);
}
public int updateOne(Book book) {
return bookMapper.updateOne(book);
}
public int deleteOne(int id) {
return bookMapper.deleteOne(id);
}
public Book getOne(int id) {
return bookMapper.getOne(id);
}
public List getAll() {
return bookMapper.getAll();
}
public List insertDeleteGetAll(Book book) {
bookMapper.insertOne(book);
int i = 10 / 0;
bookMapper.deleteOne(15);
return bookMapper.getAll();
}
}
cn.cnyasin.controller.BookController.java
package cn.cnyasin.controller;
import cn.cnyasin.pojo.Book;
import cn.cnyasin.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Controller
public class BookController {
@Autowired
@Qualifier("bookServiceImpl")
private BookService bookService;
@RequestMapping("/book/list")
public String getAllBook(Model model) {
List list = bookService.getAll();
model.addAttribute("list", list);
return "bookList";
}
@RequestMapping("/book/insert")
public String insertDeleteGetAll(Model model) {
Book book = new Book();
book.setName("哈喽啊");
book.setStatus(1);
book.setCreatedAt(new Date().getTime() / 1000);
bookService.insertDeleteGetAll(book);
return "redirect:/book/list";
}
}