JSP页面从后台类取值

一、在jsp页面中使用jstl标签获取存入的值

把要设置到jsp页面的值存到request中;
java类:
request.setAttribute("name", "nameValue");
request.getRequestDispatcher("/demo.jsp").forward(request, response);
jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  </head>
<body>
${name }
</body>
</html>
其中,<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>表示导入jstl标签库,没导入的话无法使用jstl标签,使用jstl标签可以减少很多代码量,导入jstl标签后就可以通过使用${}的方法来获取值了。
二、JSP中通过JSP调用类(.java)中的方法
在包中添加一个类:如
package com;
public class test {
 public String sd(){
 return "sd";
 }
}
在默认的首页index.jsp(当然也可以自己新建一个jsp文件)的开头引入<%@ page import= "tianaoweb.com.* "%>

在<body> </body>中添加相应的java代码片,如:

<%  String str;  test te=new test();  %>  <%=te.sd() %>

参考文献:
https://zhidao.baidu.com/question/552637444669181852.html
http://www.2cto.com/kf/201207/143345.html
<think>我们正在寻找在JSP页面中使已保存字段不被更改的方法。根据引用内容,我们可以从以下几个方面考虑: 1. 在前端页面中,将已保存的字段设置为只读(readonly)或禁用(disabled)。 2. 在后端进行校验,确保已保存的字段不会被更新。 3. 通过权限控制,只有特定用户才能修改字段。 从引用[3]中可以看到前端页面使用input元素来显示和编辑字段。我们可以通过设置input的readonly属性来防止用户修改。 示例代码: ```jsp <input name="address" id="address" class="form-control" type="text" maxlength="50" value="<s:property value="oldTableEntity.address"/>" readonly> ``` 或者使用disabled属性(注意:disabled的字段在提交表单时不会包含该字段的,所以如果希望提交该但不允许修改,应该使用readonly): ```jsp <input ... disabled> ``` 另外,引用[4]提到了通过ajax进行局部更新,如果只允许修改部分字段,那么在后端接收参数时,只更新允许修改的字段,忽略已保存的字段(即使前端传来,也不更新)。 此外,引用[5]中提到了从后台map取值,我们可以在后端逻辑中,对于已保存的字段,从数据库中重新加载原始,而不使用前端传来的修改。 综合以上,推荐做法: 1. 对于前端展示: - 如果该字段不需要提交(即不需要修改),则使用disabled属性。 - 如果该字段需要提交但不容许修改(例如作为标识),则使用readonly属性。 2. 对于后端处理: - 在更新数据库时,只更新允许修改的字段,对于不允许修改的字段,直接从数据库读取原始填充,忽略前端传来的。 3. 权限控制:通过用户角色判断是否允许修改某些字段。 注意:只依赖前端控制是不安全的,因为恶意用户可能修改前端代码或直接发送请求。因此,后端必须进行校验。 具体步骤: 假设我们有一个实体oldTableEntity,其中address字段一旦保存就不允许修改。 步骤1:前端JSP页面,将address字段设置为readonly。 ```jsp <input name="address" id="address" ... readonly> ``` 步骤2:在后台更新逻辑中,跳过address字段的更新。 例如,在Servlet或Action中,我们只更新允许修改的字段(如email),而不更新address: ```java // 假设从数据库获取原始对象 OldTableEntity entity = oldTableService.getById(id); // 只更新允许修改的字段 entity.setEmail(req.getParameter("email")); // 忽略address字段,即使前端传来address参数,我们也不设置 // 这样数据库中的address字段不会被修改 oldTableService.update(entity); ``` 步骤3:如果希望更严格,可以在更新前校验该字段是否被修改(虽然前端不允许修改,但防止恶意请求),如果被修改则拒绝更新。 总结:通过前端readonly和后端忽略更新相结合,可以确保已保存字段不被更改。 相关问题: 1. 在JSP中,readonly和disabled有什么区别? 2. 如何防止恶意用户绕过前端页面直接修改字段? 3. 在后端Spring MVC框架中,如何实现部分字段的更新? </think>### JSP页面中防止已保存字段被更改的方法 在JSP页面中确保已保存字段不被更改,可以通过以下几种技术实现: #### 1. **前端控制(推荐基础方案)** 使用HTML输入框的`readonly`属性,参考引用[3]的字段展示方式: ```jsp <input name="address" type="text" value="<s:property value="oldTableEntity.address"/>" readonly> ``` - **效果**:字段显示为灰色不可编辑状态 - **优点**:简单易实现,无需额外JavaScript - **注意**:此方法仅阻止用户界面操作,不能防止恶意请求修改 #### 2. **后端验证(必须配合方案)** 在Servlet/Controller层增加校验逻辑(参考引用[4]的更新流程): ```java // 在更新方法中添加字段保护逻辑 protected void doPost(HttpServletRequest req, HttpServletResponse resp) { String originalAddress = loadOriginalValueFromDB(); // 从数据库读取原始 String submittedAddress = req.getParameter("address"); if(!originalAddress.equals(submittedAddress)) { throw new IllegalStateException("关键字段不允许修改"); } // 继续处理其他可修改字段... } ``` - **安全机制**:即使绕过前端也能阻止非法修改数据库 - **引用[5]关联**:可通过`HashMap`存储原始进行比对 #### 3. **条件渲染(动态控制)** 根据业务状态动态设置字段属性(结合引用[3][^3]的实体状态): ```jsp <c:choose> <c:when test="${oldTableEntity.state == 'APPROVED'}"> <input name="address" readonly value="${oldTableEntity.address}"> </c:when> <c:otherwise> <input name="address" value="${oldTableEntity.address}"> </c:otherwise> </c:choose> ``` #### 4. **替代显示方案** 对不可修改字段使用非输入组件: ```jsp <div class="form-control-static">${oldTableEntity.address}</div> <input type="hidden" name="address" value="${oldTableEntity.address}"> ``` - **适用场景**:仅需展示但需要传递的字段 - **安全性**:完全移除了用户操作入口 ### 安全增强建议 1. **前后端双重校验**:前端`readonly`+后端字段修改验证 2. **权限隔离**:敏感字段仅允许特定角色修改(如管理员) 3. **审计日志**:记录关键字段访问日志(参考引用[2]安全性分析[^2]) 4. **传输加密**:敏感字段使用HTTPS传输 --- ### 相关问题 1. 如何防止用户通过开发者工具移除`readonly`属性修改字段? 2. 在Spring MVC框架中如何优雅实现字段更新保护? 3. 不可修改字段在前端展示时有哪些用户体验优化方案? 4. 如何设计数据库审计日志记录关键字段修改历史? [^1]: 引用JSP表达式配置规范 [^2]: 引用JSP页面安全性设计考量 [^3]: 引用前端字段绑定实现方式 [^4]: 引用后端更新处理逻辑 [^5]: 引用数据验证实现模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值