引自免费微信小程序:皆我百晓生
任务一: 首先,我们需要创建Spring MVC的基本结构,包括Web.xml、DispatcherServlet配置、控制器(Java类)和视图(JSP文件)。
- 创建web.xml:
SpringMVCDemo
dispatcher
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
/WEB-INF/spring/appServlet/servlet-context.xml
1
dispatcher
/
- 创建servlet-context.xml:
- 创建控制器类(例如:LoginController.java):
package com.example.yourpackage.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class LoginController {
@RequestMapping("/login")
public String showLoginPage(Model model) {
return "login";
}
@RequestMapping("/register")
public String showRegisterPage(Model model) {
return "register";
}
}
- 在WEB-INF/views目录下创建login.jsp和register.jsp页面。
任务二: 在任务一的基础上,我们可以通过在控制器中添加条件判断来实现不同角色用户的登录页面。
package com.example.yourpackage.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class LoginController {
@GetMapping("/login")
public String showLoginPage(Model model) {
return "login";
}
@GetMapping("/register")
public String showRegisterPage(Model model) {
return "register";
}
// 新增一个处理login.do请求的方法
@RequestMapping(value = "/login.do", method = RequestMethod.GET)
public String loginPageForRole(String role, Model model) {
if ("admin".equals(role)) {
return "admin_login";
} else {
return "user_login";
}
}
@RequestMapping(value = "/register.do", method = RequestMethod.GET)
public String registerPage(Model model) {
return "register";
}
}
然后在WEB-INF/views目录下分别创建admin_login.jsp和user_login.jsp页面。
任务三: 为了实现登录功能,我们可以创建一个User对象作为参数,并在后端进行验证。这里展示两种方法:基本数据类型和实体Bean。
- 使用基本数据类型作为参数:
@RequestMapping(value = "/login.do", method = RequestMethod.POST)
public String login(@RequestParam("username") String username, @RequestParam("password") String password, Model model) {
if ("admin".equals(username) && "123".equals(password)) {
return "success";
} else {
return "error";
}
}
- 使用实体Bean作为参数: 首先创建User实体类:
public class User {
private String username;
private String password;
// getters and setters
}
然后修改控制器中的方法:
@RequestMapping(value = "/login.do", method = RequestMethod.POST)
public String login(User user, Model model) {
if ("admin".equals(user.getUsername()) && "123".equals(user.getPassword())) {
return "success";
} else {
return "error";
}
}
在这个例子中,我们没有涉及到数据库操作和表单提交的HTML页面,你需要根据实际项目需求来完成这部分内容。同时,实际生产环境中,密码应加密存储并进行安全校验,这里仅作演示用途。
