OGNL 处理关联表 | 学习笔记

简介: 快速学习 OGNL 处理关联表,介绍了 OGNL 处理关联表系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Java Web开发系列课程 - Struts2框架入门OGNL 处理关联表】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/537/detail/7324


OGNL 处理关联表

 

目录:

一.数据库与 Java 的关系

二.Vip.代码

三.User.代码

四.UserDao.代码

五.VipDao代码

六.VipService.代码

七.UserAction.代码

八.List 代码

九.用 map 方法进行修改


一、数据库与 Java 的关系

user 表和 VIP 表属于多对一的关系多个 user 对应一个 vip 等级,外键关系的建立不影响 Java 查询,两者的关系只是一个数据库的关系。

image.png

 

二.Vip.代码

Package cn.sxt.entity

public class Vip{

private int id;

private String name;

public Vip(){

}

public Vip(int id,String name){

super();

this.id=id;

this.name=name;

}

public int getId(){

return id;

}

 

三.User.代码

public class User{

private int id;

private String name;

private String pwd;

private int vipId;

Private vip vip;

public User(){

}

Public User(int id,String name,String pwd,int vipId){

super();

this.id=id;

this.name=name;

this.pwd=pwd;

this.vipId=vipId;

}

Public User(int id,String name,String pwd,int vipId){

super();

this.id=id;

this.name=name;

this.pwd=pwd;

this.vipId=vipId;

}

Public User(int id,String name,String pwd){

super();

this.id=id;

public int getId(){

return id;

}

public void setId(int id){

this.id=id;

Public String getName(){

this.name=name;

Public String getpwd(){

return pwd;

Public void setPwd(String pwd){

this.pwd=pwd;

 

四.UserDao.代码

查询多一列:list.add(new User(rs.getInt(1),rs.getstring(2),rs.getstring(3),rs.getint(4)));

 

五.VipDao 代码

Package cn.sxt.dao;

import java.sql.resultset.

import java.util.ArrayList;

import java.util.List;

import cn.sxt.entity.Vip;

Public class VipDao extends BaseDao{

Public List getList(){

String sql=“select*from t vip”;

Listlist=new ArrayList();

ResultSet rs=this.executeQuery(sql);

While(rs.next()){

list.add(new Vip(rs.getInt(1),rs.getString(2));

catch(SQLException e)

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

this.close();

return list.size()>0?list:null;

Public Map getMap(){

String sql=“select*from t vip”;

Mapmap=new HashMap();

ResultSet rs=this.executeQuery(sql);

While(rs.next()){

map.put(rs.getInt(1),rs.getString(2));

}catch(SQLException e){

// TODO Auto-generated catch block

e.printStackTrace();

finally{

this.close();

return map.size()>0?map:null;

 

六.VipService.代码

Package cn.sxt.service;

import java.util.List;

import java.util.Map;

import cn.sxt.dao.VipDao;

import cn.sxt.entity.Vip;

Public class VipService{

private VipDao vipDao=new VipDao();

Public List getList(){

return vipDao.getList();

public Map getMap(){

return vipDao.getMap();

 

七.UserAction.代码

package cn.sxt.action;import java.util.List;public class UserAction private User user;private List list; private List vip List;private UserService userService = new UserService();

Private vipservice vipservice =new vipservice();

//登录public String login()User temp=userService.login(user);if(temp!=null)//list = userService.getList();return Action.SUCCESS;
//根据 id 查询然后跳特到 update.jsppublic String toUpdate()[user = userService. getById(user.getId());returnAction.SUCCESS;
//更新用户public String update()intresult=userService.update(user)

if(result>0)return Action. sUCCESS;lrLr'esull=user'ser'vice.upuale(user');

if(result>0){return Action.SUCCESS;public User getUser() return user;public void setUser(User user) this.user = user;public List getList() return list;public void setList(List list) this.list = list;
//获取用户列表public String list()list=userService.getList();

vipList=vipService.getList();

map = vipseryice.getMap(;

return Action.SUCCESS;

 

八.List 代码

<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"

%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+reql6 %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href= "<%=basePath%>"><title>My JSP 'index.jsp'starting page</title><meta http-equiv= "pragma" content= "no-cache"><table width= "80%" align= "center"<tr>

<td>编号</td〉<td>姓名</td><td>密码</td〉<td>会员等级</td><td>操作</td〉</tr><c:forEach items="${list }”var="bean">

<tr><s:iterator value="List"><tr><td><s:property value="#bean.Id"/></td><td><s:property value="#bean.name"/></td><td><s:property value="#bean.pwd"/></td><td><a href= "toUpdateuser.id=<s:property value="id"/>">修改</a></td></tr>

<s:iterator value="vipList"><s:if test="#bean.vipId==id"><s:property value="name"/ >

<s : property value= "map[ #bean. vipId].value" / ></s:if></s:iterator></table></body>

运行结果

image.png


九.用 map 方法进行修改

(1)修改 UserAction 代码

public class UserAction private User user;private List<User> list;private List<Vip> vipList;private Map<Integer,string> map;private UserService userService = newUserService();

private VipService vipService = newVipService();
//获取用户列表public String list()list = userService.getList();//vipList=vipService.getList();

map = vipService.getMap();return Action.SUCCESS;

2修改 List 代码

<%--<s:iterator value="vipList"><s:if test="#bean.vipId==id"><s:property value= "name"/></s:if></s: iterator>--%><s:property value= "map[#bean.vipId]"/>

(3)修改 update 代码
名:

<input type="text"name="user.name"value=”<s:property value="<s:property value= "user.name"/>"/><br>

密码:

<input type="password"name="user.pwd"value="<s:property value="<s:property value= "user.pwd"/ >'/><br)
会员等级:

<select name="user.vipId"<s:iterator value="map"><option<s:if  test="user.vipId==key">selected</s:if>value"<s:propertyvalue="key"/>"><s:property value "key"/>"><s:property value"</s:iterator></select><br>
运行结果

image.png

相关文章
|
安全 物联网 数据建模
IP地址能否申请HTTPS证书?
IP地址可申请HTTPS证书,但需满足特定条件。首先,该IP须为公网IP,具备唯一性和可控性。证书类型限于DV或OV级别,不支持EV。申请过程包括所有权验证及端口开放。适用于服务器间通信及IoT设备等场景。申请时需注意成本、浏览器兼容性和安全性问题。
|
数据采集 机器学习/深度学习 人工智能
Meta朱泽园揭秘大模型内心世界:不同于人类的2级推理
【8月更文挑战第26天】近期,Meta AI的研究者们在arXiv发布了一篇题为《语言模型的物理学:第2.1部分,小学数学和隐藏推理过程》的论文。该研究通过一系列实验揭示了大型语言模型(LLMs)在解决数学问题时的隐藏推理机制,并探讨了LLMs是否具有真正的推理能力及其实现方式是否与人类类似。研究发现LLMs不仅能记忆解题模式,还能进行适应性调整,表现出独特的二级推理过程。尽管其方法不同于人类,但在解决数学问题上能获得同样甚至更好的效果。此外,研究还指出改进训练数据质量、优化模型结构以及探索LLMs与其他AI技术的融合将是未来研究的重要方向。
271 2
|
XML 存储 前端开发
canvas和svg的区别
canvas和svg的区别
|
Rust 算法 编译器
用Numba:一行代码将Python程序运行速度提升100倍
Numba是一款可以将python函数编译为机器代码的JIT编译器,由Anaconda公司主导开发,可以对Python原生代码进行CPU和GPU加速。Numba非常擅长加速数值运算,他对Numpy支持得非常好,Numpy经过Numba加速后的速度接近C和Fortran。
1575 0
用Numba:一行代码将Python程序运行速度提升100倍
|
人工智能 移动开发 小程序
|
Web App开发 JavaScript 前端开发
JavaScript 工作原理之十三-CSS 和 JS 动画底层原理及如何优化其性能
正如你所知,动画在创建令人叹服的网络应用中扮演着一个关键角色。由于用户越来越注重用户体验,商户开始意识到完美,令人愉悦的用户体验的重要性,结果网络应用变得越来越重并且拥有更多动态交互的功能。这就要求网络应用提供更加复杂的动画来实现平滑的状态过渡贯穿于用户的使用过程当中。
2324 0
|
3天前
|
数据采集 人工智能 安全