JSP模式学习指导讲义.docx
《JSP模式学习指导讲义.docx》由会员分享,可在线阅读,更多相关《JSP模式学习指导讲义.docx(19页珍藏版)》请在冰豆网上搜索。
JSP模式学习指导讲义
JSP模式学习指导讲义
1.JSP模式一第1种方式
特征:
JSP模式一第1种方式:
以JSP为核心,所有的操作都是JSP负责。
JSP负责接收输入的数据、业务处理、调用页面等等。
图1JSPModel一
(1)
实例1使用JSPModel第1种方式设计用户登录程序
1.登录页面:
login.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
学生登录学生登录
姓名:
学号:
2.成功页面:
success.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
学生登录成功页面学生登录成功啦!
3.失败页面:
fail.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
学生登录失败页面学生登录失败啦!
4.登录处理页面:
loginDo.jsp
<%@pagelanguage="java"import="java.util.*,java.sql.*"pageEncoding="gb2312"%>
<%@pageimport="com.my.db.*"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
学生登录处理<%
//1:
获取输入的数据
StringstuNo=request.getParameter("stuNo").trim();
StringstuName=request.getParameter("stuName").trim();
//2:
获得连接
DBCon1db=newDBCon1();
Connectioncon=db.getConnection();
//3:
创建sql语句
Stringsql="select*fromtb_studentwherestuName=?
andstuNo=?
";
//4:
获得pstmt对象
PreparedStatementpstmt=con.prepareStatement(sql);
pstmt.setString(1,stuName);
pstmt.setString(2,stuNo);
//5:
获得ResultSet对象
ResultSetrs=pstmt.executeQuery();
//6:
判断学生是否存在
booleanresult=false;
if(rs.next()){
result=true;
}
//关闭数据库的连接
rs.close();
pstmt.close();
con.close();
if(result){
//存在该学生
response.sendRedirect("success.jsp");
}else{
//不存在该学生
response.sendRedirect("fail.jsp");
}
%>
运行结果:
2.JSP模式一第2种方式
特征:
JSP模式一第2种方式:
以JSP为核心,JSP页面作为控制端,业务部分交给JavaBean负责处理。
图2JSPModel一
(2)
实例2使用JSPModel第2种方式设计用户登录程序
1.登录页面:
login1.jsp
与login.jsp一致
2.成功页面:
success.jsp失败页面:
fail.jsp
与前面例1中一致
3.JavaBean
Student.java
packagecom.my.vo;
publicclassStudent{
privateintid;
privateStringstuName;
privateStringstuNo;
publicStudent(){
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetStuName(){
returnstuName;
}
publicvoidsetStuName(StringstuName){
this.stuName=stuName;
}
publicStringgetStuNo(){
returnstuNo;
}
publicvoidsetStuNo(StringstuNo){
this.stuNo=stuNo;
}
}
StudentBean.java
packagecom.my.vo;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importcom.my.db.DBCon1;
publicclassStudentBean{
privateDBCon1db;
publicStudentBean(){
db=newDBCon1();
}
//验证学生是否存在
publicbooleanisExistStu(Studentstu){
booleanresult=false;
Stringsql="select*fromtb_studentwherestuName=?
andstuNo=?
";
try{
//1:
获得连接
Connectioncon=db.getConnection();
//2:
获得预处理对象
PreparedStatementpstmt=con.prepareStatement(sql);
pstmt.setString(1,stu.getStuName());
pstmt.setString(2,stu.getStuNo());
//3:
获得结果集对象
ResultSetrs=pstmt.executeQuery();
//4:
判断是否存在
if(rs.next()){
result=true;
}
//5:
关闭数据库连接、结果集、预处理对象
if(rs!
=null)rs.close();
if(pstmt!
=null)pstmt.close();
if(con!
=null)con.close();
}catch(SQLExceptione){
e.printStackTrace();
}
returnresult;
}
}
4.登录处理页面:
loginDo1.jsp
<%@pagelanguage="java"import="java.util.*,java.sql.*"pageEncoding="gb2312"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
学生登录处理--调用JavaBean获取输入数据-->
useBeanid="stu"class="com.my.vo.Student"/>
setPropertyproperty="*"name="stu"/>
--调用学生Bean进行业务处理-->
useBeanid="stuBean"class="com.my.vo.StudentBean"/>
<%
booleanresult=stuBean.isExistStu(stu);
if(result){
//存在该学生
response.sendRedirect("success.jsp");
}else{
//不存在该学生
response.sendRedirect("fail.jsp");
}
%>
运行结果与例1一致。
2.JSP模式二
特征:
JSP模式二:
以Servlet为核心,业务处理交给模型端,页面显示交给JSP页面。
图2JSPModel一
(2)
实例3使用JSPModel二设计用户登录程序
1.用户登录页面:
login2.jsp
与例1一致
2.成功页面:
success.jsp失败页面:
fail.jsp
与例1一致
3.JavaBean
Student.java/StudentBean.java
与例2一致
4.Servlet控制端:
StuLogin.java
packagecom.my.control;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.my.vo.Student;
importcom.my.vo.StudentBean;
publicclassStuLoginextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriterout=response.getWriter();
//1:
获取输入的学生姓名、学号
StringstuName=request.getParameter("stuName");
StringstuNo=request.getParameter("stuNo");
//2:
创建学生对象
Studentstu=newStudent();
stu.setStuName(stuName);
stu.setStuNo(stuNo);
//3:
调用StudentBean
StudentBeanstuBean=newStudentBean();
//4:
判断是否存在该学生
booleanresult=stuBean.isExistStu(stu);
if(result){
//存在该用户
response.sendRedirect("success.jsp");
}else{
//不存在该用户
response.sendRedirect("fail.jsp");
}
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
this.doGet(request,response);
}
}
运行结果与例2一致
继续改进
改进思路:
1.模型层的改进
2.整体结构的改进
改进的结果:
1.实体层:
com.my.vo或者com.my.bean
2.控制层:
com.my.action或者com.my.control
3.模型层:
com.my.dao(接口)com.my.dao.impl(实现的类)
4.服务层:
com.my.service(接口)com.my.service.impl(服务实现类)
5.数据库连接:
com.my.db
6.工具包:
com.my.util:
字符串处理、日期处理、中文处理等等