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