一、显示注册表单

1.访问资源

   @Test
public void shouldShowRegistration() throws Exception {
SpitterRepository mockRepository = mock(SpitterRepository.class);
SpitterController controller = new SpitterController(mockRepository);
MockMvc mockMvc = standaloneSetup(controller).build();
mockMvc.perform(get("/spitter/register"))
.andExpect(view().name("registerForm"));
}

2.Controller

 package spittr.web;

 import static org.springframework.web.bind.annotation.RequestMethod.*;

 import javax.validation.Valid;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import spittr.Spitter;
import spittr.data.SpitterRepository; @Controller
@RequestMapping("/spitter")
public class SpitterController { private SpitterRepository spitterRepository; @Autowired
public SpitterController(SpitterRepository spitterRepository) {
this.spitterRepository = spitterRepository;
} @RequestMapping(value="/register", method=GET)
public String showRegistrationForm() {
return "registerForm";
} @RequestMapping(value="/register", method=POST)
public String processRegistration(
@Valid Spitter spitter,
Errors errors) {
if (errors.hasErrors()) {
return "registerForm";
} spitterRepository.save(spitter);
return "redirect:/spitter/" + spitter.getUsername();
} @RequestMapping(value="/{username}", method=GET)
public String showSpitterProfile(@PathVariable String username, Model model) {
Spitter spitter = spitterRepository.findByUsername(username);
model.addAttribute(spitter);
return "profile";
} }

3.view

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Spitter</title>
<link rel="stylesheet" type="text/css"
href="<c:url value="/resources/style.css" />" >
</head>
<body>
<h1>Register</h1> <form method="POST">
First Name: <input type="text" name="firstName" /><br/>
Last Name: <input type="text" name="lastName" /><br/>
Email: <input type="email" name="email" /><br/>
Username: <input type="text" name="username" /><br/>
Password: <input type="password" name="password" /><br/>
<input type="submit" value="Register" />
</form>
</body>
</html>

二、处理注册

1.测试处理注册

 @Test
public void shouldProcessRegistration() throws Exception {
SpitterRepository mockRepository = mock(SpitterRepository.class);
Spitter unsaved = new Spitter("jbauer", "24hours", "Jack", "Bauer", "jbauer@ctu.gov");
Spitter saved = new Spitter(24L, "jbauer", "24hours", "Jack", "Bauer", "jbauer@ctu.gov");
when(mockRepository.save(unsaved)).thenReturn(saved); SpitterController controller = new SpitterController(mockRepository);
MockMvc mockMvc = standaloneSetup(controller).build(); mockMvc.perform(post("/spitter/register")
.param("firstName", "Jack")
.param("lastName", "Bauer")
.param("username", "jbauer")
.param("password", "24hours")
.param("email", "jbauer@ctu.gov"))
.andExpect(redirectedUrl("/spitter/jbauer")); verify(mockRepository, atLeastOnce()).save(unsaved);
}

2.Controller参考上面

3.view: return "redirect:/spitter/" + spitter.getUsername();

4.Dao

 package spittr.data;

 import java.sql.ResultSet;
import java.sql.SQLException; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcOperations;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository; import spittr.Spitter; @Repository
public class JdbcSpitterRepository implements SpitterRepository { private JdbcOperations jdbc; @Autowired
public JdbcSpitterRepository(JdbcOperations jdbc) {
this.jdbc = jdbc;
} public Spitter save(Spitter spitter) {
jdbc.update(
"insert into Spitter (username, password, first_name, last_name, email)" +
" values (?, ?, ?, ?, ?)",
spitter.getUsername(),
spitter.getPassword(),
spitter.getFirstName(),
spitter.getLastName(),
spitter.getEmail());
return spitter; // TODO: Determine value for id
} public Spitter findByUsername(String username) {
return jdbc.queryForObject(
"select id, username, null, first_name, last_name, email from Spitter where username=?",
new SpitterRowMapper(),
username);
} private static class SpitterRowMapper implements RowMapper<Spitter> {
public Spitter mapRow(ResultSet rs, int rowNum) throws SQLException {
return new Spitter(
rs.getLong("id"),
rs.getString("username"),
null,
rs.getString("first_name"),
rs.getString("last_name"),
rs.getString("email"));
}
} }

二、显示某个用户的资料

1.测试:http://localhost:8080/SpringInAction4_Chapter5_SpringMVC01/spitter/eminem

2.controller写在上面

3.view

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Spitter</title>
<link rel="stylesheet" type="text/css" href="<c:url value="/resources/style.css" />" >
</head>
<body>
<h1>Your Profile</h1>
<c:out value="${spitter.username}" /><br/>
<c:out value="${spitter.firstName}" /> <c:out value="${spitter.lastName}" /><br/>
<c:out value="${spitter.email}" />
</body>
</html>

最新文章

  1. Neutron 理解 (8): Neutron 是如何实现虚机防火墙的 [How Neutron Implements Security Group]
  2. Sqli-LABS通关笔录-18-审计SQL注入2-HTTP头注入
  3. How Tomcat works — 八、tomcat中的session管理
  4. Xcode 中关于&quot;#&quot;的小知识
  5. 简单的python http接口自动化脚本
  6. repo sync 时的自动续接脚本[转]
  7. MySql5.1在Win7下的安装与重装问题的解决
  8. Nutch搜索引擎Solr简介及安装
  9. MOS管常识
  10. JAVA----线程初级
  11. 【SDOI2017】天才黑客
  12. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]
  13. 转 ssh-keygen 的 详解
  14. 利用Fiddler和Wireshark解密SSL加密流量
  15. dhroid - ioc基础(@Inject*)
  16. [luogu2312] 解方程
  17. apache 伪静态 .htaccess
  18. poi 读取数据处理方式
  19. .NET、NET Framewor以及.NET Core的关系(二)
  20. Rabbitmq消息队列(四) 发布订阅

热门文章

  1. ASP伪静态页面(不需要通过iis+ISAPI_Rewrite)
  2. hibernate--could not initialize proxy - no Session--懒加载问题
  3. 转载---SQL Server XML基础学习之&lt;6&gt;--XQuery的 value() 方法、 exist() 方法 和 nodes() 方法
  4. Exam 70-462 Administering Microsoft SQL Server 2012 Databases 复习帖
  5. NOPI读取EXCEL
  6. vue防止闪烁
  7. 性能更好的js动画实现方式——requestAnimationFrame
  8. 12_ServletConfig对象
  9. VMware10.0.4下 CentOS 6.5 cmake安装 MySQL 5.5.32
  10. osi七层模型和两主机传输过程: