目前对MVC的认识:
V层:网页上看得到的,用户所接触的。用到jsp,html,css等,供用户提供数据,也可显示数据给用户。
C层:做控制的,数据拿过来,怎么做什么处理,网页将如何跳转等等。做控制就是servlet了,它又有三种工作方式,一般用带了doget,dopost方法的那种。
M层:一些具体实现的方法,工具,比如做数据库方面的dbHelper等,总之就是最下边的东西,可以直接拿来调用的。
具体的web project文件布局:
webroot下放.jsp,当然也可以自己在webroot下建立文件夹放在下边。
src下面的包,一般是servlet一个包,db一个包,filter一个包,其他可以自己再建立。
表名user
字段:username,password,real_name
login.jsp
<form method="post" action="LoginServlet">
<table>
<tr>
<td>用户名:</td><td><input type="text" name="username"/></td>
</tr>
<tr>
<td>密 码 :</td><td><input type="password" name="password"/></td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="提交" /></td>
<td><input type="reset" name="Submit2" value="重置" /></td>
</tr>
</table>
</form>
loginServlet:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username"); // 获取表单数据
int password = Integer.parseInt(request.getParameter("password"));
//System.out.println("here1");
sqlBean bean = new sqlBean(); //
boolean haslogin = bean.islogin(username, password,request);
if (haslogin) {
request.getSession().setAttribute("loginUser", username); //创建Session信息
request.getRequestDispatcher("/user/main.jsp").forward(request,response);
}
else {
request.setAttribute("errorMsg","用户名或密码错误,或者不匹配!");
request.getRequestDispatcher("/user/error.jsp").forward(request,response);
}
}
sqlBean.class
public class sqlBean { //类定义
public Connection conn=null;
public ResultSet rs=null;
Statement st=null;
public sqlBean(){ //构造方法
try{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/test?user=root&password=123456";
conn=DriverManager.getConnection(url);
st=conn.createStatement();
}
catch(java.lang.ClassNotFoundException e){
System.out.print("连接MySQL服务器出错!"+e.getMessage());
} catch (SQLException e) {
e.printStackTrace();
}
}
public User executeQuery(String username){ //查询结果对象
User user = new User(); //创建对象
try{
rs=st.executeQuery("select * from user where username='"+username+"'");
while(rs.next()){
user.setUsername(username); //设置对象属性
user.setReal_name(rs.getString("real_name"));
user.setPassword(Integer.parseInt(rs.getString("password")));
}
}
catch(SQLException e){
System.out.print("执行查询错误:"+e.getMessage());
}
return user;
}
public boolean islogin(String username, int password,HttpServletRequest request) { // 是否存在记录
User user = new User(); //
try {
rs = st.executeQuery("select * from user where username='"+username+"' and password='"+password+"'");
if (rs.next()) { //
user.setUsername(username); // 建立session信息
user.setReal_name(rs.getString("real_name"));
user.setPassword(password);
request.getSession().setAttribute("user", user);
return true;
} else {
return false;
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
public int executeInsert(String sql){ //插入记录方法
int num=0;
try{
num=st.executeUpdate(sql);
}
catch(SQLException e){
System.out.print("记录插入错误:"+e.getMessage());
}
return num;
}
/*public int Update(String sql){ //更新记录方法
int num=0;
try{
num=st.executeUpdate(sql);
}catch(SQLException ex){
System.out.print("执行修改错误:"+ex.getMessage());
}
return num;
}*/
public int Update(String username) {
int num=0;
String sql="update user set password='123456' where username='"+username+"'";
try{
num=st.executeUpdate(sql);
}catch(SQLException ex){
System.out.print("执行修改错误:"+ex.getMessage());
}
return num;
}
public int executeDelete(String username){ //删除记录方法
int num=0;
String sql="delete from user where username='"+username+"'";
try{
num=st.executeUpdate(sql);
}
catch(SQLException e){
System.out.print("删除记录错误:"+e.getMessage());
}
CloseDataBase();
return num;
}
/* public User executeQuery_sql(String sql,HttpServletRequest request){ //选择查询
User user = new User(); //创建对象
try{
rs=st.executeQuery(sql);
request.setAttribute("realName", rs.getString("real_name"));
}
catch(SQLException e){
System.out.print("执行查询错误:"+e.getMessage());
}
return user;
}*/
public void CloseDataBase(){ //关闭数据库连接方法
try{
conn.close();
st.close();
}
catch(Exception ex){
System.out.print("关闭Connection对象错误:"+ex.getMessage());
}
}
}