web day13(开发模式、修改easymall项目)

1.纯servlet开发
纯servlet开发,将html页面展示代码和Java逻辑处理代码都书写在后台中,使页面展示与逻辑处理绑死在一起,如果如果需要修改,则当前servlet需要全部修改。
2.纯jsp开发
纯jsp开发,可以在jsp页面内书写html页面展示代码和Java的逻辑处理代码,所有内容由后台转而移向前台书写,没有从根本上解决,开发和维护时会遇到可读性和可维护性较低的问题。
3.jsp+javabean开发 Java模式一
jsp负责页面展示和接受请求,JavaBean负责逻辑处理和封装数据,由于jsp一个模块负责两个模块的内容,使页面中不得不出现必要的逻辑处理代码,应该将这部分内容与jsp页面分离。因为jsp页面是善于页面展示,而不善于逻辑处理的。
4.servlet+jsp+JavaBean
servlet负责接受请求,jsp负责页面展示,JavaBean负责逻辑处理和封装数据。开发中的三个部分,在这种模式下,分成三个模块,两两模块之间得到了最大程度的解耦,一个模块的改动对另外模块的影响很小。所以可以把他们看作是相互独立的三个模块。
三个模块各司其职,能够最大成功提高开发效率,以及提升代码的可读性及可维护性。

在这里插入图片描述
在这里插入图片描述
5.MVC开发模式
在MVC开发模式看来,任何一个程序都可以由三个部分组成。负责接受请求的控制层(controller),负责展示页面的视图(view)和负责处理逻辑的模型(model)这三个部分组成。
MVC开发模式将三个模块分开,每个模块担任一个职责,模块之间几乎不会受到影响。在这种情况下,开发效率可以得到显著提升,以及提升代码的可读性和可维护性。
注意:MVC开发模式适用于所有的语法开发,并不是只有Java开发才适用。

JavaEE高级开发模式:
在这里插入图片描述
easymall项目修改
1.创建easymall新web工程
2.导入原有页面
3.导入原有静态资源
4.导入所有的jar包和配置文件
5.导入动态资源,并修改配置文件
在这里插入图片描述
6.开发注册功能
a.修改RegistServlet
在这里插入图片描述
b.修改UserService
在这里插入图片描述
c.修改UserDao

public class UserDao {
	/**
	 * 添加一条注册信息
	 * @param user用户信息对象
	 */
	public void addUser(User user) {
		Connection conn=null;
		PreparedStatement ps=null;
		try {
			conn=JDBCUtils.getConnection();
			ps=conn.prepareStatement("insert into user values(null,?,?,?,?)");
			ps.setString(1, user.getUsername());
			ps.setString(2, user.getPassword());
			ps.setString(3, user.getNickname());
			ps.setString(4, user.getEmail());
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			JDBCUtils.close(conn, ps, null);
		}
		
		
	}
	/**
	 * 根据用户名查询用户
	 * @param username 用户名
	 * @return 用户名受否存在的布尔值
	 */
	public boolean findUserByUsername(String username) {
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try {
			conn=JDBCUtils.getConnection();
			ps=conn.prepareStatement("select * from user where username=?");
			ps.setString(1, username);
			rs=ps.executeQuery();
			if(rs.next()){//为true则用户名已存在,不能注册
				return true;
			}else{//为false则用户名不存在可以注册
				return false;
			}
		} catch (SQLException e) {
			
			e.printStackTrace();
			throw new RuntimeException();
		}finally{
			JDBCUtils.close(conn, ps, rs);
		}
		
	}

d.创建user Javabean

package com.easymall.domain;
//封装用户信息的Javabean
public class User {
	private int id;
	private String username;
	private String password;
	private String nickname;
	private String email;
	public User(){}
	public User(int id, String username, String password, String nickname,
			String email) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
		this.nickname = nickname;
		this.email = email;
	}

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getNickname() {
		return nickname;
	}
	public void setNickname(String nickname) {
		this.nickname = nickname;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
}

e.创建异常类作为注册不成功的页面展示信息

package com.easymall.exception;
//
public class MsgException extends RuntimeException {
	public MsgException(String msg){
		super(msg);
	}
}

7.开发登录功能
a.修改LoginServlet

//传输数据到UserService
		UserService userService=new UserService();
		try {
			User user=userService.loginUser(username,password);
			//得到user对象,应该放入session域,保留登录状态
			request.getSession().setAttribute("user", user);
		} catch (MsgException e) {
			//发生异常则证明向前台页面输出错误提示信息
			request.setAttribute("msg", e.getMessage());
			request.getRequestDispatcher("/login.jsp").forward(request, response);
			return;
		}

b.修改UserService
在这里插入图片描述

c.修改UserDao
在这里插入图片描述
d.修改_head.jsp
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值