jsp mysql 表单提交_手动建Java web项目的方法,JSP,DBUtils,MySQL,下拉框,form表单显示【诗书画唱】...

1、创建一个用户类型utype表,包含id和tname(用户类型名)字段,插入以下几条数据:

1 超级管理员

2 管理员

3 客户

4 商户

5 合作伙伴

通过jdbc编程将utype表中的tname拼接成一个下拉框显示在jsp页面上7cc9ba025730d387b1ed40907a70de18.png

create table utype

(

id int primary key auto_increment,

tname varchar(100)

);

insert into utype(tname) values ("超级管理员"),('管理员' ),('客户' ),('商户' ),('合作伙伴' );

select * from utype090ec2672765c03485c539449f8ce4dc.png

46a5847ce558d5421f5b8b5cd178144c.png

879d633b40ee001532bdf59f68b345e4.png

88cf7c9a53c0e4803a8438b7bd1c0c3d.png

3d9ed6d1787c8d13aca4139cf837e29d.png

package com.SSHC.bean;

public class Utype {

private Integer id;

private String tname;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getTname() {

return tname;

}

public void setTname(String tname) {

this.tname = tname;

}

}60a5c00df13654c564ab56d53385d79a.png

48e1bd30cf9f3e5b589c50015d15ce14.png

package com.SSHC.DAO;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import com.SSHC.bean.Utype;

import com.SSHC.util.DBUtils;

//DAO(Data Access Object)是一个数据访问接口,

//数据访问:顾名思义就是与数据库打交道。

//夹在业务逻辑与数据库资源中间。

///DAO就是实现增删改查的一个类

public class UtypeDao {

//用XXXDao(XXX为表名比如Eduinfo),Eduinfo:教育信息。

///XXXDAO可查询eduinfo表中的所有的数据。

//List用上泛型:

public ListselectAll(){

String sql = "select * from Utype";

Connection conn = null;

PreparedStatement pstm = null;

ResultSet rs = null;

Listlist = new ArrayList();

try {

//下面用上DBUtils(当然命名为Dbutil,也可以

//自己知道是数据库常用工具就可以了:

conn = DBUtils.getConn();

pstm = conn.prepareStatement(sql);

rs = pstm.executeQuery();

while(rs.next()) {

Integer id = rs.getInt("id");

String ename = rs.getString("tname");

//进行打包:

Utype edu = new Utype();

edu.setId(id);

edu.setTname(ename);

//继续打包:

list.add(edu);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return list;

}

public static void main(String[] args) {

UtypeDao ed = new UtypeDao();

Listlist = ed.selectAll();

System.out.println(list.size());

}

}

4b5eb9b315c203b15e79f4d74604f04c.png

70f155f605d423d9b80785342087de78.png

package com.SSHC.util;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Properties;

public class DBUtils {

private static String driverName;

private static String url;

private static String user;

private static String pwd;

static {

Properties prop = new Properties();

InputStream is = DBUtils.class.getClassLoader()

.getResourceAsStream("db.properties");

try {

prop.load(is);

driverName = prop.getProperty("dn");

url = prop.getProperty("url");

user = prop.getProperty("un");

pwd = prop.getProperty("up");

} catch (IOException e) {

e.printStackTrace();

}

}

public static Connection getConn(){

Connection conn = null;

try {

Class.forName(driverName);

conn = DriverManager.getConnection(url,user,pwd);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

public static void close(ResultSet rs,

PreparedStatement pstm

,Connection conn){

try {

if(rs != null) {

rs.close();

}

if(pstm != null) {

pstm.close();

}

if(conn != null) {

conn.close();

}

} catch(Exception e) {

e.printStackTrace();

}

}

}

04756072790cea8591dc0993f3cb94a2.png

4f4886861616eb1337fece2bb609eabd.png

dn=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/firstjsp?useUnicode=true&characterEncoding=UTF-8

un=root

up=root1f7b00b034b42ac51076cc82d3f97e94.png

8a85e2b2f59d5d1fa20569f148729851.png

="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

//用selectAll()方法查询eduinfo表中的所有的数据:

UtypeDao UtypeDao= new UtypeDao();

List list = UtypeDao.selectAll();

//跳转到study.jsp页面,显示出学历下拉框

/***用StringBuilder拼接html字符串,把内容

用append放进html中,

之后可以跳转时用EL表达式   ${html }直接调用:*/

StringBuilder html = new StringBuilder();

for(Utype U : list) {

html.append("" + U.getTname()

+ "");

} //有时用System.out.println(html)等来测试,找BUG等;

request.setAttribute("html", html);

request.getRequestDispatcher("forwardUtype.jsp")

.forward(request, response);

%>fd39f795e957bd24848285cd8714268c.png

f97b891e596be1486fd3652edf5c9a40.png

charset=UTF-8" pageEncoding="UTF-8"%>

String path = request.getContextPath();

String basePath = request.getScheme()

+"://"+request.getServerName()

+":"+request.getServerPort()+path+"/";

%>

/p>

4.01 Transitional//EN">

content="keyword1,keyword2,keyword3">

content="This is my page">

请选择

${html }

c3d042c726d2a11cad44ec32b4c4e65f.png

运行结果截图:5794b1c2364f50a3787cdb9dc7dab5ff.png

info:信息

f53aaf30d48bd35c31bf58a927c3e398.png

2、创建一个食品信息表foodinfo,包含id,name和price字段,插入一些数据,通过jdbc编程将foodinfo表中的所有数据拼接成一个表格显示在jsp页面上。

要求使用bean,dao和DbUtilsfce9cb1376eaa5f540436edc5dbd8d1b.png

create table foodinfo(

id int primary key auto_increment,

name varchar(100) ,

price   double

);

insert into  foodinfo(name,price) values ('诗书画唱苹果',66.6),('诗书画唱香蕉',88.8 ),('诗书画唱葡萄',23.3 ),('诗书画唱桃子' ,13.14);

select * from foodinfo401960fbf4ee77f05fc96297df1209ec.png

2e427d17751f129a7d702faa03608dd6.png

96d41782e2e754dffec80a483dd3ee3b.png

bfb93e711cb80b02fe1cdee2d35fb97f.png

package com.SSHC.bean;

public class foodinfo {

private Integer id;

private String name;

private Double price;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Double getPrice() {

return price;

}

public void setPrice(Double price) {

this.price = price;

}

}

2dbcc37a43643f448ff97ec90d48b463.png

ae007a44db95f390269d1fb2b3f23919.png

package com.SSHC.DAO;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import com.SSHC.Utils.DBUtils;

import com.SSHC.bean.foodinfo;

public class DAO {

public ListselectAll(){

String sql = "select * from foodinfo";

Connection conn = null;

PreparedStatement pstm = null;

ResultSet rs = null;

List list = new ArrayList();

try {

conn = DBUtils.getConn();

pstm = conn.prepareStatement(sql);

rs = pstm.executeQuery();

while(rs.next()) {

Integer id = rs.getInt("id");

String ename = rs.getString("name");

Double price = rs.getDouble("price");

//进行打包

foodinfo edu = new foodinfo();

edu.setId(id);

edu.setName(ename);

edu.setPrice(price);

//继续打包

list.add(edu);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return list;

}

public static void main(String[] args) {

DAO ed = new DAO();

Listlist = ed.selectAll();

System.out.println(list.size());

}

}

773241e60cb187f84f68d8fd0b622f76.png

6493ab65b3123d3d06fe58a5301b5cd4.png

package com.SSHC.Utils;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Properties;

public class DBUtils {

private static String driverName;

private static String url;

private static String user;

private static String pwd;

static {

//读取properties文件

Properties prop = new Properties();

//将db.properties文件读取到内存中去

InputStream is = DBUtils.class.getClassLoader()

.getResourceAsStream("db.properties");

//加载内容

try {

prop.load(is);

//读取内容

driverName = prop.getProperty("dn");

//System.out.println(driverName);

url = prop.getProperty("url");

user = prop.getProperty("un");

pwd = prop.getProperty("up");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//获取数据库连接对象的方法

public static Connection getConn(){

Connection conn = null;

try {

Class.forName(driverName);

conn = DriverManager.getConnection(url,user,pwd);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return conn;

}

public static void close(ResultSet rs,PreparedStatement pstm

,Connection conn){

try {

if(rs != null) {

rs.close();

}

if(pstm != null) {

pstm.close();

}

if(conn != null) {

conn.close();

}

} catch(Exception e) {

e.printStackTrace();

}

}

}

aafe8f7f96b78fd6c187e389e036ed01.png

c994656b8a5cee3e26edf8998c7ccecf.png

dn=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/firstjsp?useUnicode=true&characterEncoding=UTF-8

un=root

up=root7fa24a7f1c848065a6a3fdd9c01dfe12.png

757f0ab68db44ce1a094dd4a8e064425.png

="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

DAO DAO= new DAO();

List list = DAO.selectAll();

StringBuilder html = new StringBuilder();

for(foodinfo U : list) {

html.append("

"

+ U.getId() + "

" + U.getName()

+ "

"+ U.getPrice() +"");

}

request.setAttribute("html", html);

request.getRequestDispatcher("two.jsp")

.forward(request, response);

%>e77c2ce8919bd85288ee73118a9b2726.png

17e41dfbb76405196779e6a0012fcd5b.png

charset=UTF-8" pageEncoding="UTF-8"%>

String path = request.getContextPath();

String basePath = request.getScheme()

+"://"+request.getServerName()

+":"+request.getServerPort()+path+"/";

%>

/p>

4.01 Transitional//EN">

content="keyword1,keyword2,keyword3">

content="This is my page">

编号名称价格

${html }

2683bdaed79eee5473589be68063c984.png

5c728c208a4366ab72568aaad81b9f8d.png

——————————

手动建Java web项目的方法:da7ab2b0527e1f8ca0962c34398d19bd.png

25d7a4ef601e9efdd330a69eb7de5859.png

0ff6909abbf1ed815f7788ae9bf95d27.png

bf2d910c8c2c66548c606f2b0a6b3813.png

ef6d041c89d6257dfce04a2128e8d589.png不要点finsh,先点两次Next

0a02b36871fa3443c226a9099077f768.png

449d480586a743a925c4583a45191237.png

c460cb06e6f79f8ea062889a602c5c7d.png

e6228d9a1c9b36ce66da655a8d8920ce.png

例子:

用form表单来传内容,用EL表达式和param.获取传过来的内容:

a41db81d56dc60d4a6d25a02323c956f.png

a17f13210c5231fd3263ee1753a8094e.png

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

账号:

0e210828397f0faeb2be773e897632f9.png

a33b5072136ec366015a7eb9412fb399.png

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

request.setCharacterEncoding("utf-8");

%>

你输入的账号是:${param.act }

选择的性别是:${param.sex }

2e4f04726616b187acdcfc2dd5617c69.png

1372a616dfcbf096611d8b1950f0121d.png

909b9d1f1f494af439bb62bb791bac07.png

e5524fd1145644d3e2d5db0215bb86c1.png

用上EL表达式的范围变量的知识,声明一个变量的作用域范围为session,在网页,分别用

${requestScope.msg }和 session:${sessionScope.msg }获取值,其中肯定只要session:${sessionScope.msg }能打印出内容,${requestScope.msg }在这里不能打印出内容:7221312734731db2f5894b14436d65ad.png

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

String msg = "Hello world";

//只从request作用域去找有没有msg

session.setAttribute("msg", msg);

%>

request:${requestScope.msg }

session:${sessionScope.msg }

76280bd3184401d6ad43133781447b5e.png

60a19bef3e30539e92cfd1f76276be72.png

36f9712226e279ca8f8ab721eb123f6b.png

读取数据库中的表中的数据,将这些数据组装成一个下拉框。

1、创建表eduinfo

2、在java代码中创建一个这个表对应的javabean,它的名字跟你的表名是一样的Eduinfo

3、根据eduinfo表中的列来创建Eduinfo类的属性,你的表中有几个列javabean中就有一个属性,而且属性名要跟表的列名一致。

4、创建表对应的数据访问类(dao),EduinfoDaoecc732333ad62c11efc50f82022b528d.png

45a7e8982a2c353c61b2c8115d132282.png

连接名一开始是随意的:106ec563842e148a3cef4f965a476565.png

create table eduinfo(

id int primary key auto_increment,

ename varchar(100)

);

--drop table  eduinfo

--【个人的总结:当有一个列名设置为主键自增的时候就是在insert语句中注明列名,比如"(ename) ",

--不然会报错.如果不指名列名,

--就会默认插入"博士"到id列,但是数据类型不一样,同时id是主键自增的,不可以插入内容】

insert into eduinfo(ename) values ("博士"),('硕士' ),('本科' ),('大专' ),('高中' ),('初中' );

select * from eduinfo

dafeb5e97cbbaea17003b5628c43c2ea.png

cc145a91c19a016d60b9cc17dc0cc8a2.png

861afa1c1ca5342e5d06c553060283fb.png

package com.jy.bean;

public class Eduinfo {

private Integer id;

private String ename;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getEname() {

return ename;

}

public void setEname(String ename) {

this.ename = ename;

}

}

1b2af8483c6e4a16d877acd4bdfa93a7.png

c56c6f36983db7a33b3e9bbbde80089d.png

b4d11ff1e24d90070b234a8e5dc58ba0.png

package com.jy.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import com.jy.bean.Eduinfo;

import com.jy.util.Dbutil;

//就是实现增删改查的一个类

public class EduinfoDao {

//用XXXDao(XXX为表名比如Eduinfo),Eduinfo:教育信息

//可查询eduinfo表中的所有的数据

//List用上泛型:

public ListselectAll(){

String sql = "select * from eduinfo";

Connection conn = null;

PreparedStatement pstm = null;

ResultSet rs = null;

Listlist = new ArrayList();

try {

//下面用上DBUtils(当然命名为Dbutil,也可以

//自己知道是数据库常用工具就可以了:

conn = Dbutil.getConn();

pstm = conn.prepareStatement(sql);

rs = pstm.executeQuery();

while(rs.next()) {

Integer id = rs.getInt("id");

String ename = rs.getString("ename");

//进行打包:

Eduinfo edu = new Eduinfo();

edu.setId(id);

edu.setEname(ename);

//继续打包:

list.add(edu);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return list;

}

public static void main(String[] args) {

EduinfoDao ed = new EduinfoDao();

Listlist = ed.selectAll();

System.out.println(list.size());

}

}

cda3385a7dbf883c4195b7e3ab090e10.png

ea534d4afedad21a184e1c5ba64e60a4.png

package com.jy.util;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Properties;

public class Dbutil {

private static String driverName;

private static String url;

private static String user;

private static String pwd;

static {

//读取properties文件

Properties prop = new Properties();

//将db.properties文件读取到内存中去

InputStream is = Dbutil.class.getClassLoader()

.getResourceAsStream("db.properties");

//加载内容

try {

prop.load(is);

//读取内容

driverName = prop.getProperty("dn");

//System.out.println(driverName);

url = prop.getProperty("url");

user = prop.getProperty("un");

pwd = prop.getProperty("up");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//获取数据库连接对象的方法

public static Connection getConn(){

Connection conn = null;

try {

Class.forName(driverName);

conn = DriverManager.getConnection(url,user,pwd);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return conn;

}

public static void close(ResultSet rs,PreparedStatement pstm

,Connection conn){

try {

if(rs != null) {

rs.close();

}

if(pstm != null) {

pstm.close();

}

if(conn != null) {

conn.close();

}

} catch(Exception e) {

e.printStackTrace();

}

}

}

97f2095c90df5515011f33e285c2c39f.png

57332cac6dd02c8b01ac5fa2c82f7e51.png

dn=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/firstjsp?useUnicode=true&characterEncoding=UTF-8

un=root

up=root809e631eb8d6749ed1af7080a4f3527f.png

da318186f867adb20603fd61bd837cef.png

04897b5004725da7b41bc179757ddc3c.png

543b297b76870ae2a529d10d00eb79f1.png

="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

//用selectAll()方法查询eduinfo表中的所有的数据:

EduinfoDao eduinfoDao = new EduinfoDao();

Listlist = eduinfoDao.selectAll();

//跳转到study.jsp页面,显示出学历下拉框

/***用StringBuilder拼接html字符串,把内容

用append放进html中,

之后可以跳转时用EL表达式   ${html }直接调用:*/

StringBuilder html = new StringBuilder();

for(Eduinfo edu : list) {

html.append("" + edu.getEname()

+ "");

}

//有时用System.out.println(html)等来测试,找BUG等;

request.setAttribute("html", html);

request.getRequestDispatcher("study.jsp")

.forward(request, response);

%>

c1c6cf1b5faf76ab5c46847aa0120a27.png

185b476d2eb9c8a93cec56986db15fca.png

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

请选择

${html }

0a8f8b07e9319b8c43555d75cc49b461.png

运行:0820252994cc2f2b6201ce558dedb047.png

个人备注的注意事项:4f6db807f07064f9a610047231774ce7.png

5e20d1715b15dafe4f553dcd89e2556d.png

_____________________

下面是JSP的知识的集合:

一、页面跳转方式

二、传参方式

在页面中需要输入日期框的时候,我们不能够直接写三个文本输入框,可以使用脚本文件(从网上面下载)来引入一个日期框(JS文件)

在eclipse项目中使用日期框:

1、将日期脚本文件拷贝到工程WebContent目录下(可以创建子文件夹)

2、创建jsp页面,在页面中引入日期脚本文件

"3、在页面中编写如下的代码:

οnclick=""new Calendar().show(this);"" />"

页面跳转的方式有两种:

1、转发

2、重定向

"区别:

1、浏览器地址栏显示的最后的地址不同,转发就显示前面的请求的地址,而重定向会显示最后跳转的页面的地址

2、转发就是一次请求,重定向是两次请求"

3、重定向可以跳转到项目外面的页面去

项目中一般建议使用转发方式跳转

JS代码中优先使用单引号

传参方式:

"1、浏览器地址栏中直接传入

http://localhost:8888/j190802/demo.jsp?act=admin&pwd=123&sex=男"

2、表单提交

一、getParameter和getAttribute的区别。

二、四大作用域:pageContext,request,session,application

三、EL表达式

getAttribute和setAttribute方法

getParameter和getAttribute的区别:

1、getParameter返回值是String,getAttribute返回值是Object

2、getParameter方法是一个单身狗,没有对应的setParameter方法

如果调用setAttribute方法,后面的程序中就必定会调用getAttribute方法

3、getParameter的使用场景:表单提交时获取数据,url路径中夹带的参数

getAttribute的使用场景:页面转发时调用。

pageContext,session和application跟request和response一样,可以直接拿过来使用

"pageContext,request,session以及application叫jsp页面的四大作用域,指的就是你放在这些对象中的变量在哪个范围内有效。

四大作用域对象都有setAttribute方法和getAttribute方法。"

pageContext:表示放在这个对象中(调用setAttribute方法)的变量在本JSP页面有效

request:表示放在同一次请求中的变量有效

session:表示同一次会话中的变量有效

application:只要不重启服务器,放在里面的变量就会一直有效

request:当进行页面转发时传递参数

session:当实现购物车功能时就需要使用session

购物车:需要访问很多的页面和发送很多的搜索请求,购物车中的数据必须要一直有效。

一、作业讲解

二、EL表达式

EL表达式就是JSP中的一种特有的语言,可以简化我们的java代码。

EL表达式写法:${表达式},注意:{}中间只能是表达式,不能是语句

EL表达式有两种运算符:.和[](JS对象的运算符)

EL表达式可以写在JSP页面的任何地方

"EL表达式中的变量的显示过程:会依次从pageContext,request,session以及

applicaion四个作用域中找这个变量,一旦找到了就返回这个值,如果四个作用域都找不到,就显示为""""(不是显示为null)"

一、EL表达式显示map和list中的值。

二、通过EL表达式加载表单数据,修改数据时使用

${}中比较两个字符串是否相等,可以使用==也可以使用eq

${message == "success" ? "登录成功" : "登录失败"}

${message eq "success" ? "登录成功" : "登录失败"}

复习三大容器:List,Map,Set

List,Map和Set都是接口,所以不能够直接new出来的

List最常用的实现类:ArrayList

Map最常用的实现类:HashMap

Set最常用的实现类:HashSet

一、EL表达式中的范围变量

二、表单提交后的EL表达式

三、EL表达式

如果是通过表单方式提交的数据,那么通过EL表达式获取就必须使用param隐式对象

EL表达式中的范围变量:

pageContext:pageScope

request:requestScope

session:sessionScope

application:applicationScope

上面四个scope变量都是用来替换getAttribute方法的

而param隐式对象就是用来替换getParameter方法的

2fff408ab286c9f3bd924afd1245c1a6.png

67d302303537b1292a58ec1f2352e171.png

2e10b8d7a12d539c1ebe97210748a752.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值