JSP开发模型
JSP概念:
JSP的开发模型即JSP Model,在Web开发中,为了更方便地使用JSP技术,Sun公司为JSP技术提供了两种开发模型:JSP Model1和JSP Model2。JSP Model1简单轻便,适合小型Web项目的快速开发;JSP Model2模型是在JSP Model1的基础上提出的,它提供了更清晰的代码分层,更适用于多人合作开发的大型Web项目,实际开发过程中可以根据项目需求,选择合适的模型。
JSP Model1模型工作原理图
Model1基础是JSP,它由JSP和JavaBean组成,JSP从HttpRequest中获得所需的数据,并进行业务逻辑的处理,然后将结果通过HttpResponse返回给前端浏览器。
JSP Model2模型工作原理图
相比Model1, Model2 是将控制层(Servlet) 单独划分出来负责业务流程的控制,接收请求,创建所需的JavaBean实例,并将处理后的数据再返回给视图层(JSP) 进行界面数据展示。
MVC处理过程
MVC设计模式将软件程序分为三个核心模块:模型(Model)、视图(View)和控制器(Controller) ,这三个模块如图所示:
实现步骤:
编写UserBean类:
package cn.itcast.chapter10.model2.domain;
public class UserBean {
private String name;
private String password;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
编写RegisterFormBean类:
package cn.itcast.chapter10.model2.domain;
import java.util.HashMap;
import java.util.Map;
public class RegisterFormBean {
private String name;
private String password;
private String password2;
private String email;
private Map<String,String> errors = new HashMap<String,String>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword2() {
return password2;
}
public void setPassword2(String password2) {
this.password2 = password2;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public boolean validate(){
boolean flag = true;
if(name == null || name.trim().equals("")){
errors.put(“name”,“请输入姓名”);
flag = false;
}
if(password == null || password.trim().equals("")){
errors.put(“password”,“请输入密码”);
flag = false;
}else if(password.length()>12 || password.length()<6){
errors.put(“password”,“请输入6-12个字符”);
flag = false;
}
if(password != null && !password.equals(password2)){
errors.put(“password2”,“两次输入密码不匹配”);
flag = false;
}
String regex = “[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+”;
if(email == null || email.trim().equals("")){
errors.put(“email”,“请输入邮箱”);
flag = false;
return flag;
}else if(!email.matches(regex)){
errors.put(“email”,“邮箱格式错误”);
flag = false;
return flag;
}
return flag;
}
public void setErrorMsg(String err,String errMsg){
if((err != null) && (errMsg!=null)){
errors.put(err, errMsg);
}
}
public Map<String, String> getErrors() {
return errors;
}
}
创建工具类UBUtil
package cn.itcast.chapter10.model2.util;
import java.util.HashMap;
import cn.itcast.chapter11.model2.domain.UserBean;
public class DBUtil {
private static DBUtil instance = new DBUtil();
private HashMap<String, UserBean> users = new HashMap<String, UserBean>();
public DBUtil(){
UserBean user1 = new UserBean();
user1.setName(“Jack”);
user1.setPassword(“123456”);
user1.setEmail(“jack@it315.org”);
users.put(“Jack”,user1);
UserBean user2 = new UserBean();
user2.setName(“Rose”);
user2.setPassword(“abcdefr”);
user2.setEmail(“rose@it315.org”);
users.put(“Rose”,user2);
}
public static DBUtil getInstance() {
return instance;
}
public UserBean getUser(String username){
UserBean user = (UserBean) users.get(username);
return user;
}
public boolean insertUser(UserBean user){
if(user == null){
return false;
}
String username = user.getName();
//String usernameDB = users.get(username).getName()
//UserBean userDB = users.get(username);
if(users.get(username) !=null){
return false;
}
users.put(username,user);
return true;
}
}
创建Servlet 定义ControllerServlet类:
package cn.itcast.chapter10.model.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.itcast.chapter11.model2.domain.RegisterFormBean;
import cn.itcast.chapter11.model2.domain.UserBean;
import cn.itcast.chapter11.model2.util.DBUtil;
public class ControllerServet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“test/html;charset=utf-8”);
request.setCharacterEncoding(“utf-8”);
//BeanUtils.populate(new RegisterFormBean(), request.getParameterMap());
String name = request.getParameter(“name”);
String password = request.getParameter(“password”);
String password2 = request.getParameter(“password2”);
String email = request.getParameter(“email”);
RegisterFormBean formBean = new RegisterFormBean();
formBean.setName(name);
formBean.setPassword(password);
formBean.setPassword(password2);
formBean.setEmail(email);
if(!formBean.validate()) {
request.setAttribute(“formBean”, formBean);
request.getRequestDispatcher(“register.jsp”).forward(request,response);
return;
}
UserBean userBean = new UserBean();
userBean.setName(name);
userBean.setPassword(password);
userBean.setEmail(email);
boolean b = DBUtil.getInstance().insertUser(userBean);
if(!b) {
request.setAttribute(“DBMes”, “用户名不存在”);
request.setAttribute(“formBean”, formBean);
request.getRequestDispatcher(“register.jsp”).forward(request, response);
return;
}
response.getWriter().print(“恭喜你,注册成功,3秒后自动跳转”);
request.getSession().setAttribute(“userBean”, userBean);
response.setHeader(“refresh”, “3,url = loginSuccess.jsp”);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
创建JSP页面,编写register.jsp文件:
<%@ page language=“java” pageEncoding=“GBK”%>
- 您的姓名:${userBean.name }
- 您的邮箱:${userBean.email }
运行测试: