JavaEE——JSP开发模式(model1)
model1开发模式

- 工作流程:
①浏览器请求,JSP页面接收
②JSP根据请求和JavaBean进行交互
③JavaBean进行业务处理,JDBC操纵数据库
④JSP将请求结果返回浏览器页面
- 利用model1,设计一个简单的登陆页面
新建Java web项目,项目结构如下:

建立基于Mysql的JDBC类
package com.ddpapa.test.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MysqlDBConn {
private Statement stmt;
private Connection conn;
ResultSet rs;
public MysqlDBConn(){
stmt = null;
try {
/*加载数据库驱动获取数据库连接*/
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/datatest","root","123456");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
rs = null;
}
public Connection getConn() {
return this.conn;
}
public ResultSet executeQuery(String sql){
/*取得结果集*/
try {
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(sql);
} catch (Exception e) {
// TODO: handle exception
System.err.println("Data.executeQuery: " + e.getMessage());
}
return rs;
}
public void closeStmt()
{
/*关闭Stmt*/
try
{
stmt.close();
}catch(SQLException e){
System.err.println("Data.executeQuery: " + e.getMessage());
}
}
public void closeConn()
{
/*关闭数据库连接*/
try
{
conn.close();
}catch(SQLException e){
System.err.println("Data.executeQuery: " + e.getMessage());
}
}
}
MysqlDBConn.java
建立JavaBean
package com.ddpapa.test.model.vo;
public class UserTable {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer 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;
}
}
UserTable.java
新建login.jsp
<%@ page language="java" pageEncoding="gb2312" %>
<html>
<head>
<title>登陆界面</title>
</head>
<body>
<form action="validate.jsp" method="get">
<table>
<tr>
<th colspan="2" align="center">登陆页面</th>
</tr>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" size="20"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password" size="20"></td>
</tr>
</table>
<input type="submit" value="登陆">
<input type="reset" value="重置">
</form>
</body>
</html>
login.jsp
新建validate.jsp
<%@page language="java" pageEncoding="gb2312" import="java.sql.*,com.ddpapa.test.model.vo.UserTable"%>
<jsp:useBean id="MysqlDB" scope="page" class="com.ddpapa.test.jdbc.MysqlDBConn"></jsp:useBean>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<body>
<%
request.setCharacterEncoding("gb2312");
String usr=request.getParameter("username");
String pwd=request.getParameter("password");
boolean validate = false;
UserTable user = null;
user = (UserTable)session.getAttribute("user");
if(user==null){
String sql = "select * from userTable";
ResultSet rs = MysqlDB.executeQuery(sql); //取得结果集
while(rs.next()){
if((rs.getString("username").trim().compareTo(usr)==0) && (rs.getString("password").compareTo(pwd)==0)){
user = new UserTable();
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
validate = true;
}
}
rs.close();
MysqlDB.closeStmt();
MysqlDB.closeConn();
}else{
validate = true;
}
if(validate){
%>
<jsp:forward page="success.jsp"/>
<%
}else{
%>
<jsp:forward page="error.jsp"/>
<%
}
%>
</body>
</html>
validate.jsp
新建error.jsp
<%@ page language="java" pageEncoding="gb2312" %>
<html>
<head>
<title>登陆失败</title>
</head>
<body>
抱歉!登陆失败
</body>
</html>
新建success.jsp
<%@ page language="java" pageEncoding="gb2312" import="com.ddpapa.test.model.vo.UserTable"%>
<html>
<head>
<title>登陆成功</title>
</head>
<body>
<%
String usr = request.getParameter("username");
%>
<%=usr%>,您好!欢迎登陆。
</body>
</html>
修改web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>jsp_model1</display-name>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
- 错误集锦
500错误——lib目录下缺少数据库连接jar包

500错误——org.apache.jasper.JasperException:An exception occurred processing JSP page [/xxx.jsp] at line [x]
success代码如下时出现错误:

错误原因session对象getAttribute返回值为null(根本原因user不存在),导致空指针错误,改为request对象解决问题

JavaEE——JSP开发模式(model1)的更多相关文章
- jsp基础、el技术、jstl标签、javaEE的开发模式
一.jsp技术基础 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ...
- 【JAVAWEB学习笔记】18_el&jstl&javaee的开发模式
一.EL技术 1.EL 表达式概述 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写. 2.EL从域中取出数据 ...
- 动态页面技术----EL技术、JSTL技术,javaEE的开发模式
1 EL技术 1.1 EL 表达式 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写, EL出现的目的是要替代jsp页面中脚本的编写,就是简化java代码. ...
- javaEE的开发模式
1.什么是模式 模式在开发过程中总结出的“套路”,总结出的一套约定俗成的设计模式 2.javaEE经历的模式 model1模式: 技术组成:jsp+javaBean model1的弊端:随着业务复杂性 ...
- JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门
2 JSP内置标签(美化+业务逻辑) 1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容 2)JSP内 ...
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
- 十五 JSP开发模式&MVC设计模式
JSP开发模式: JavaBean + JSP : 缺点:页面代码过多,不利于维护,JSP页面代码变得臃肿 Servlet + JavaBean + JSP :MVC设计模式 M:model 模 ...
- Tip: JSP开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. JSP+JavaBean模式适合开发业务 ...
- 浅析Java开发模式—Model1、Model2和三层
"解耦"的思想一直是我们倡导的,但在实际项目中怎样去做?这是需要我们去好好思考的.下面以Model1.Model2.三层为切入点,对比下去了解解耦的思想. Model1 使用JSP ...
随机推荐
- 用户上传gif动图分解成多张帧图片,并合并生成新gif图片
背景 为什么要制作这么一款工具 首先公司最近在做一款表情包的产品,需要将文字生成到gif图片中,并可以控制文字显示的位置,并将不同的文字显示在不同的图片上 制作成网页端工具,随时随地,方便使用 探索 ...
- mapper文件中“添加一条新数据并返回此数据的ID(主键)”的方法
在mapper文件的insert语句前加上<selectKey>标签即可 如下: 添加前测试: 添加后测试:
- Maven学习归纳(三)——依赖添加依赖排除与项目整合
一.Maven的坐标 1. 坐标的定义 数学意义上的坐标可以是平面上的(x,y)也可以是空间上的(x,y,z),都可以确定一个质点的位置和方向. Maven中有很多构件,为了能够自动化解析任何一个构件 ...
- ExpandableListView 可折叠的下拉listview
ExpandableListView用法如下 1.定义布局文件main.xml文件 <?xml version="1.0" encoding="utf-8" ...
- springmvc项目中的中文乱码的解决及未生效解决
情景: springmvc项目中,在控制台输出时中文乱码,在web网页中正常. 解决方法: 在web.xml中添加如下代码: <!-- 中文乱码解决 --> <filter> ...
- Winform中使用FastReport实现自定义PDF打印预览
场景 Winform中使用FastReport实现简单的自定义PDF导出: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1009 ...
- Kubernetes监控实践
一.Kubernetes介绍 Kubernetes(K8s)是一个开源平台,能够有效简化应用管理.应用部署和应用扩展环节的手动操作流程,让用户更加灵活地部署管理云端应用. 作为可扩展的容错平台,K8s ...
- Day4 文件管理-常用命令
文件管理 --> 创建 移动 删除 复制 1.cp复制: #####-v:详细显示命令执行的操作 #####-r: 递归处理目录与子目录 #####-p: 保留源文件或目录的属性 #####1. ...
- 年年有余之java求余的技巧集合
背景 传说里玉皇大帝派龙王马上降雨到共光一带,龙王接到玉皇大帝命令,立马从海上调水,跑去共光施云布雨,但粗心又着急的龙王不小心把海里的鲸鱼随着雨水一起降落在了共光,龙王怕玉皇大帝责怪,灵机一动便声称他 ...
- WordPress对接微信小程序遇到的问题
1.文章内容中的“<”和“>”字符显示问题 小程序是使用“wxPares工具来实现html转wxml的,如果你的文本包含了代码比如xml会携带<>符号,程序会将其转化,造成解析 ...