前景提要

刚才有个朋友问我,赵大哥这个实验怎么做?我说哪个实验,给我发了几张截图。我一看,嗷,原来是今天,有个Java实验啊,他说大哥,能不能教教我,我说可以。我一说 他 啪的就站起来了, 很快啊 , 然后我就开始了教学。

(哈哈哈其实就是有个Java实验有点懵,写篇博客来记录下)

题目

在客户端的表单中填写用户注册信息并提交后,应用EL表达式通过访问JavaBean属性的方法将用户信息显示到页面上。

解析

其实,给的东西少的有点过分啊。那我们分析一下:

(这部分我是一段一段的代码,如果要看完整代码请直接点我)

首先表单这肯定是一个 jsp ,然后用户显示也是一个 jsp

不妨我们把第一个 jsp 命名为 forminfo.jsp ,第二个 jsp 命名为 deal.jsp

  1. forminfo.jsp核心代码

设计表单就不在赘述了,推荐用 sublime/notepad++ 写好前端代码,再复制到Eclipse中,这样会有一个良好缩进的代码风格。

请填写表单信息<br>
<table>
<form action="deal.jsp" accept-charset="utf-8">
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="pwd"></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password" name="pwd2"></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女
</td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="checkbox" name="affect" value="体育">体育
<input type="checkbox" name="affect" value="美术">美术
<input type="checkbox" name="affect" value="音乐">音乐
<input type="checkbox" name="affect" value="旅游">旅游
</td>
</tr>
<tr>
<td><input type="submit" value="提交"></td>
<td><input type="reset" value="重置"></td>
</tr>
</form>
</table>
<hr>
该表单信息将提交给deal.jsp界面,deal.jsp使用EL表达式获取表单信息。
  1. UserForm.java

其实刚开始看到,有点疑问,我第二个jsp能直接获取第一个jsp信息啊,JavaBean在哪用呢?我的理解是这样的, 为了练习JavaBean,我们可以多此一举的使用一下-.-。

首先我们在src创建一个Package名为bean,

然后我们照着图片中打出这个UserForm类打出这些字段,然后自动生成Setter/Getter(空白处右击鼠标,Source->Generate Getters and Setters)

为了文章的简洁,此处不放JavaBean的代码了。

  1. deal.jsp

这个界面,是为了显示前一个界面的信息,但是为了使用JavaBean,我们可以将获取到的信息先放到JavaBean中,代码如下:

//如果前一个界面input标签的value是中文,必须要加这行代码,不然会乱码
request.setCharacterEncoding("UTF-8");
UserForm uf = new UserForm();
uf.setUsername((String)request.getParameter("username"));
uf.setPwd((String)request.getParameter("pwd2"));
uf.setSex((String)request.getParameter("sex")); uf.setAffect((String[])request.getParameterValues("affect"));

然后将这个JavaBean放到session中,代码如下:

session.setAttribute("userform", uf);

最后在jsp用EL表达式显示:

用户显示:<br>
用户名:${sessionScope.userform.username}<br>
密码:${sessionScope.userform.pwd}<br>
性别:${sessionScope.userform.sex}<br>
爱好:${sessionScope.userform.affect<br>

到这里,操作迅速的小伙伴已经整合好所有的代码,但是最后运行结果和实验结果不一样,对我说,赵大哥, 你不讲武德 ,我按照你代码敲,结果运行效果不一样。

我说,诶,年轻人,这个讲究 点到为止 啊。

其实问题出在 爱好: 后面,我们看JavaBean中affect是个数组,所以直接输出数组才会是一个类似地址的东西。那怎么改呢?其实,在不用其他标签的情况下,我们可以这样做:

爱好:${sessionScope.userform.affect[0]} ${sessionScope.userform.affect[1]} ${sessionScope.userform.affect[2]} ${sessionScope.userform.affect[3]}<br>

对!没错,就是把String数组中的每一个String都输出出来,如果当时没有选,那么那个选项就不会显示出来,只会显示当时选择的那些。

至此,这个项目就全部讲完了。感谢看我的干巴巴的文字那么久。 当然,听说点个赞,博主会很高兴,如果点个关注,那就更好了

完整代码:

  1. forminfo.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    请填写表单信息<br>
    <table>
    <form action="deal.jsp" accept-charset="utf-8">
    <tr>
    <td>用户名:</td>
    <td><input type="text" name="username"></td>
    </tr>
    <tr>
    <td>密码:</td>
    <td><input type="password" name="pwd"></td>
    </tr>
    <tr>
    <td>确认密码:</td>
    <td><input type="password" name="pwd2"></td>
    </tr>
    <tr>
    <td>性别:</td>
    <td>
    <input type="radio" name="sex" value="男">男
    <input type="radio" name="sex" value="女">女
    </td>
    </tr>
    <tr>
    <td>性别:</td>
    <td>
    <input type="checkbox" name="affect" value="体育">体育
    <input type="checkbox" name="affect" value="美术">美术
    <input type="checkbox" name="affect" value="音乐">音乐
    <input type="checkbox" name="affect" value="旅游">旅游
    </td>
    </tr>
    <tr>
    <td><input type="submit" value="提交"></td>
    <td><input type="reset" value="重置"></td>
    </tr>
    </form>
    </table>
    <hr>
    该表单信息将提交给deal.jsp界面,deal.jsp使用EL表达式获取表单信息。
    </body>
    </html>

  2. UserForm.java

    package bean;
    
    public class UserForm {
    private String username;
    private String pwd;
    private String sex;
    private String[] affect=null;
    public String getUsername() {
    return username;
    }
    public void setUsername(String username) {
    this.username = username;
    }
    public String getPwd() {
    return pwd;
    }
    public void setPwd(String pwd) {
    this.pwd = pwd;
    }
    public String getSex() {
    return sex;
    }
    public void setSex(String sex) {
    this.sex = sex;
    }
    public String[] getAffect() {
    System.out.println(affect[0]);
    return affect;
    }
    public void setAffect(String[] affect) {
    this.affect = affect;
    }
    }

  3. deal.jsp

    <%@page import="bean.UserForm"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%
    //如果前一个界面input标签的value是中文,必须要加这行代码,不然会乱码
    request.setCharacterEncoding("UTF-8");
    UserForm uf = new UserForm();
    uf.setUsername((String)request.getParameter("username"));
    uf.setPwd((String)request.getParameter("pwd2"));
    uf.setSex((String)request.getParameter("sex"));
    uf.setAffect((String[])request.getParameterValues("affect"));
    session.setAttribute("userform", uf);
    %>
    用户显示:<br>
    用户名:${sessionScope.userform.username}<br>
    密码:${sessionScope.userform.pwd}<br>
    性别:${sessionScope.userform.sex}<br>
    爱好:${sessionScope.userform.affect[0]}&nbsp;&nbsp;${sessionScope.userform.affect[1]}&nbsp;&nbsp;${sessionScope.userform.affect[2]}&nbsp;&nbsp;${sessionScope.userform.affect[3]}<br>
    </body>
    </html>

总结

能坚持看到这里的人啊,各个都是人才~

其实实验有个可以扩展的点,

就是表单中的密码和确认密码框,我是没做处理的, 第二个界面默认接受到确认密码框的内容的

想写的话,可以在submit提交按钮的OnClick事件中写一小段JS代码,来保证密码和确认密码框输入的是相同的~

终归到底,就是EL表达式获取JavaBean的属性~

EL表达式访问JavaBean的更多相关文章

  1. 实战1--应用EL表达式访问JavaBean的属性

    (1)编写index.jsp页面,用来收集用户的注册信息 <%@ page language="java" pageEncoding="GBK"%> ...

  2. Java Web程序设计笔记 • 【第9章 EL表达式】

    全部章节   >>>> 本章目录 9.1 EL 表达式基础 9.1.1 EL 表达式简介 9.1.2 EL 表达式的定义 9.1.3 使用 EL 访问变量 9.1.4 使用 E ...

  3. 超全面的JavaWeb笔记day12<Jsp&JavaBean&El表达式>

    1.JSP三大指令 page include taglib 2.9个内置对象 out page pageContext request response session application exc ...

  4. day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)

    day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件 ...

  5. EL表达式读取数据(在Map,javaBean,List)

    <%@page import="cn.hncu.domain.User"%><!--这里是进行导包--><%@ page language=" ...

  6. day12 EL 表达式和国际化开发

    day12 EL 表达式和国际化开发 1. EL(Expression Language) 表达式简介 1.1 执行运算 1.2 获取web开发常用对象(el 中定义了11个隐式对象) 1.3 使用 ...

  7. EL表达式的语法与应用

    EL(是Expression Language的缩写),使用EL对JSP输出进行优化,可以使得页面结构更加清晰,代码可读性高,也更加便于维护. EL表达式的语法: 语法:$(EL 表达式) $  和 ...

  8. JSP基础--EL表达式

    EL(表达式语言) 1 EL概述 1.1 EL的作用 JSP2.0要把html和css分离.要把html和javascript分离.要把Java脚本替换成标签.标签的好处是非Java人员都可以使用. ...

  9. JSP中的内置标记(JSP动作)和 EL表达式

    一.JSP的内置标记(JSP动作) (一)JSP的内置标记都是以<jsp: 开始标记的 一般会用到<jsp:useBean/>,<jsp:setProperty/>,&l ...

  10. 小峰servlet/jsp(4)EL表达式

    一.EL表达式内置对象: 二.EL表达式访问4种范围属性: 寻找值的顺序: page-->request-->session-->application; 三.EL表达式接收请求参数 ...

随机推荐

  1. Nacos与OpenFeign开发

    目录 1.前言 2.生产者 3.消费者 4.扩展 1.前言 我的话是微服务B调用微服务A的controller层 2.生产者 微服务A请求接口如下: @GetMapping("/listUn ...

  2. java 中文繁简体转换工具 opencc4j 使用介绍 1.8.0

    Opencc4j Opencc4j 支持中文繁简体转换,考虑到词组级别. 在线体验 Features 特点 严格区分「一简对多繁」和「一简对多异」. 完全兼容异体字,可以实现动态替换. 严格审校一简对 ...

  3. Python通过ssh登录实现报文监听

    Python自动化ssh登录目标主机,实现报文长度length 0监听,并根据反馈信息弹窗报警: 代码比较简陋,后续记得优化改进. #_*_coding:utf-8 _*_ #!/usr/bin/py ...

  4. linq小结

    普通查询 var query = from s in context.Student select s; //投影列 var query = from s in context.Student sel ...

  5. Redis 缓存雪崩 |击穿 |穿透 概念及解决方案

    一.雪崩 1.概念  指某一时间段,缓存集中过期失效,无数的请求绕开缓存,直接访问数据库. 2.解决方案 让redis数据永不过期,这种方式最可靠的.最安全的,但占用空间,内存消耗大,并且不能保持数据 ...

  6. 在 Rainbond 上使用 Curve 云原生存储

    Curve 是网易主导自研的现代化存储系统, 目前支持文件存储(CurveFS)和块存储(CurveBS). CurveBS 的核心应用场景主要包括: 虚拟机/容器的性能型.混合型.容量型云盘或持久化 ...

  7. windows下使用pytorch进行单机多卡分布式训练

    现在有四张卡,但是部署在windows10系统上,想尝试下在windows上使用单机多卡进行分布式训练,网上找了一圈硬是没找到相关的文章.以下是踩坑过程. 首先,pytorch的版本必须是大于1.7, ...

  8. 日期时间数据的处理—R语言

    日期时间是一类独特的数据,在实际中有众多的应用.R语言的基础包中提供了两种类型的时间数据,一类是Date日期数据,它不包括时间和时区信息,另一类是POSIXct/POSIXlt类型数据,其中包括了日期 ...

  9. day04-SpringCloud Eureka-服务注册与发现01

    SpringCloud Eureka-服务注册与发现01 1.Eureka介绍 1.1学习Eureka前的说明 目前主流的服务注册&发现的组件是 Nacos,但是 Eureka 作为老牌经典的 ...

  10. Python简易学生管理系统

    目录结构: 1. 学生文件 student.py # 学生类 class Student(object): # 存放学生信息 student_info = {} # 学生初始化方法 def __ini ...