总结:jsp只做显示任务,servlet用来进行业务处理,最后将与数据库交流的功能再dao专攻实现。后续完善struts。
Mvc:javabean(m)+jsp(v)+servlet(c)
将以上三部分分为4个包,beans就是数据,servlet中放jsp中的业务请求,utils中放数据库连接的原子操作,dao中与数据库进行交互的原子操作。(可以理解为,servlet中存放jsp页面的宏观的大的业务操作,如登陆,注册。而dao中存放为了实现登陆的用户数据库验证操作,或注册的用户存储操作)。如下图:
注意问题:
1. <servlet>
<servlet-name>Login</servlet-name> //servlet别名
<servlet-class>servlet.Login</servlet-class>
//servlet编译的.class文件在WEB-INF目录下的classes文件下的目录
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name> //servlet别名
<url-pattern>/Login</url-pattern>
//servlet访问路径的设置(即action中的路径)
</servlet-mapping>
2.web.xml中倒着往上找路径,从路径找到java文件(class)
<%String path =request.getContextPath(); %>
<form name="form1" method="post" action="<%=path%>/Login">
<!--path得到相对路径,即服务器下的工程文件名既"/login" -->
<!--action 是<url-pattern>/Login</url-pattern>中的值,客户端请求从这找起,找到
“<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>“
中的<servlet-name>Login</servlet-name>,在从
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>servlet.Login</servlet-class>
</servlet>
中的<servlet-name>Login</servlet-name>找到<servlet-class>servlet.Login</servlet-class>中的java类-->
3.数据库操作
sql="select * from user where userName='"+username+"' and userPwd='"+passwd+"'";//变量一定用'"+username+"这种模式
4.实现mvc模型步骤:
A.定义bean来表示数据
B.使用servlet来处理请求
C.填写bean
D.将bean存储到请求(request),会话(session)或servlet上下文(servletContext)中。
E.将请求转发到jsp页面
F.从bean中读取数据
5.后续完成注册功能时发现的问题
两种格式的按钮
<input type="button"name="注册"onclick="window.open('http://www.baidu.com.cn')">
<input type="submit" name="Submit" value="注册" onclick="check()">
<script language="javascript" type="text/javascript">
<!--
function check(){
frm = document.form;
if(frm.userPwd.value!=frm.userPwd1.value){
alert("密码错误,请重新设置!")
frm.action="<%=path%>/register.jsp";
}
else
return false;
}
//-->
</script>
onclick()事件,当在button组件中,成功时需再调用frm.submit();return;这两句。
在submit组件中,只有当return false后才不会提交。或者不写else。否则执行完onclick()后还会执行submit。不需要写frm.submit();否则会执行两遍。