struts1.x 校验

h1>登录(validator框架客户端验证(javascript))</h1>

<hr>

<html:javascript formName="loginForm"/>

<html:form action="login2.do" οnsubmit="return validateLoginForm(this)">

username : <html:text property="username"/><br/>

password : <html:password property="password"/><br>

<html:submit/>

</html:form>



25、声明式异常



Action中

UserManager.getInstance().login(username, password);

return mapping.findForward("success");



业务逻辑记得先建立两个异常类

public void login(String username, String password) {

// if (!"admin".equals(username)) {

// throw new UserNotFoundException();

// }

// if (!"admin".equals(password)) {

// throw new PasswordErrorException();

// }

// }



Struts配置文件中



定义全局异常



<global-exceptions>

<!-- 全局异常

<exception key="user.not.found" type="com.bjsxt.struts.UserNotFoundException" path="/login_error.jsp"/>

<exception key="user.password.error" type="com.bjsxt.struts.PasswordErrorException" path="/login_error.jsp"/>

-->



定义action

<action-mappings>

<action path="/login"

type="com.bjsxt.struts.LoginAction"

name="loginForm"

scope="request"

validate="false"

input="/login.jsp"<!-- 默认异常转向 -->

>

<!--

<exception key="user.not.found" type="com.bjsxt.struts.UserNotFoundException" path="/login_error.jsp"/>

<exception key="user.password.error" type="com.bjsxt.struts.PasswordErrorException" path="/login_error.jsp"/>

-->

<forward name="success" path="/login_success.jsp"/>

<forward name="error" path="/login.jsp"/>

</action>



Jsp页面

<html:errors/>



声明式异常传递一个站位附的办法



异常类中

public class UserNotFoundException extends RuntimeException {



public UserNotFoundException(String msg) {

super(msg);

}

}



业务调用中



public void login(String username, String password) {

// if (!"admin".equals(username)) {

// throw new UserNotFoundException(username);

// }

// if (!"admin".equals(password)) {

// throw new PasswordErrorException();

// }

// }



26、个性化异常处理



建立资源文件



user.login.success={0},登录成功

user.not.found=用户不能找到,用户名称=[{0}]

user.password.error=密码错误

user.login.error=登录失败



建立一个异常处理类



public class ErrorCodeException extends RuntimeException {



private String errorCode;



private Object[] args;

//没有占位符

public ErrorCodeException(String errorCode) {

this(errorCode, null);

}

//有一个占位符的

public ErrorCodeException(String errorCode, Object args0) {

this(errorCode, new Object[]{args0});

}

//有多个占位符的

public ErrorCodeException(String errorCode, Object[] args) {

this.errorCode = errorCode;

this.args = args;

}



public String getErrorCode() {

return errorCode;

}



public Object[] getArgs() {

return args;

}

}



业务调用类



public void login(String username, String password) {

// if (!"admin".equals(username)) {

// throw new ErrorCodeException("user.not.found", username);

// }

// if (!"admin".equals(password)) {

// throw new ErrorCodeException("user.password.error");

// }



Struts配置文件



先建立一个继承handle 类复写里面的一点方法

public class ErrorCodeExceptionHandler extends ExceptionHandler {



public ActionForward execute(

Exception ex,

ExceptionConfig ae,

ActionMapping mapping,

ActionForm formInstance,

HttpServletRequest request,

HttpServletResponse response)

throws ServletException {

//写下面的if方法

if (!(ex instanceof ErrorCodeException)) {

return super.execute(ex, ae, mapping, formInstance, request, response);

}



//

ActionForward forward = null;

ActionMessage error = null;

String property = null;



// Build the forward from the exception mapping if it exists

// or from the form input

if (ae.getPath() != null) {

forward = new ActionForward(ae.getPath());

} else {

forward = mapping.getInputForward();

}



// Figure out the error

if (ex instanceof ModuleException) {

error = ((ModuleException) ex).getActionMessage();

property = ((ModuleException) ex).getProperty();

} else {

//修改下面

ErrorCodeException ece = (ErrorCodeException)ex;

String errorCode = ece.getErrorCode();

Object[] args = ece.getArgs();

error = new ActionMessage(errorCode, args);

property = error.getKey();

//

//error = new ActionMessage(ae.getKey(), ex.getMessage());

//property = error.getKey();

}



this.logException(ex);



// Store the exception

request.setAttribute(Globals.EXCEPTION_KEY, ex);

this.storeException(request, property, error, forward, ae.getScope());



return forward;



}

}



写struts配置文件的这里



全局异常

<exceptionkey="error.exception" type="com.bjsxt.struts.AppException" handler="com.bjsxt.struts.AppExceptionHandler"/>



27、不要个性化异常



建立一个异常类

public class AppException extends RuntimeException {



public AppException(String msg) {

super(msg);

}



业务调用



public void login(String username, String password) {

if (!"admin".equals(username)) {

throw new AppException("用户不能找到,用户=【" + username + "】");

}

if (!"admin".equals(password)) {

throw new AppException("密码不正确!");

}



Struts配置文件

<exceptionkey="error.exception" type="com.bjsxt.struts.AppException"/>



配置资源文件



error.exception={0}



没有必要建立一个异常处理类



28、forwardaction的使用



只要这样配置就能转向了不用配置action



<action path="/login1"

type="org.apache.struts.actions.ForwardAction"

parameter="/login.jsp"

></action>



29、Dispatchaction



页面转向window.self.location = "usermaint.do?command=find&userId=" + document.getElementsByName("selectFlag")[j].value;



采用DispathAction

* 如果覆写DispathAction中的execute方法,必须显示的用super调用execute方法

* parameter参数值不能是execute或perform





30、容错处理//可以去掉查找所有用户的方法

protected ActionForward unspecified(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {



System.out.println("-----------UserAction.unspecified()-----------");



//调用业务逻辑操作

List userList = UserManager.getInstance().findAllUserList();

request.setAttribute("userlist", userList);



return mapping.findForward("list_success");



// ActionForward af = new ActionForward();

// af.setPath("/user/usermaint.do?command=list");

// af.setRedirect(true);

// return af;

}



31、模式匹配



建立三个页面

Add—success.jsp

Del-success.jsp

Modify-success.jsp



Jdp页面中



<a href="user/add.do?command=add">添加用户</a><br>

<a href="user/del.do?command=del">删除用户</a><br>

<a href="user/modify.do?command=modify">修改用户</a><br>



Struts配置



<action path="/user/*"

type="com.bjsxt.struts.UserAction"

parameter="command"

>

<!--

<forward name="success" path="/user/{1}_success.jsp"/>

-->

<forward name="success" path="/{0}_success.jsp"/>

</action>



Action中

return mapping.findForward("success");



33、补充说明



要把所有的jsp放到web-inf下浏览器是不能访问得到的,只有通过Action才能访问得到





注意图片的现实只与basename有关系也目录无关系

../img

<action path="/basedata/additem"与下面无关

<forwardname="upload_detail" path="/WEB-INF/jsp/basedata/item_upload.jsp"/>






验证用户存在与否

建立一个基本的action,然后其他action继承它就可以了!

public class BaseAction extends DispatchAction {



@Override

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

if (request.getSession().getAttribute("user") == null) {

return mapping.findForward("index");

}



return super.execute(mapping, form, request, response);

}



其他action

public class ItemAction extends BaseAction {



注意返回的设置要带上返回的差数

否则用过滤类来保存

或用threadlocal做传递



function goBack() {

window.self.location = "item.do?command=list&pageNo=${itemForm.pageNo}&pageSize=${itemForm.pageSize}";

}



下拉选择列表的写法



<td><select name="unitId" class="select1" id="unitId">

<c:forEach items="${drp:getItemUnitList()}" var="iu" >

<c:set var="select" value=""/>

<c:if test="${ iu.id eq item.unit.id }">

<c:set var="select" value="selected"/>

</c:if>

<option value="${iu.id}" ${ select }>${iu.name}</option>

</c:forEach>

</select></td>





分页补充



function resetItem() {

document.getElementsByName("clientIdOrName").value = "";

}



function topPage() {

window.self.location = "item.do?command=list&pageNo=${pagemodel.topPageNo}&pageSize=${itemForm.pageSize}&clientIdOrName=${ itemForm.clientIdOrName }"

}



function previousPage() {

window.self.location = "item.do?command=list&pageNo=${pagemodel.previousPageNo}&pageSize=${itemForm.pageSize}&clientIdOrName=${ itemForm.clientIdOrName }"

}



function nextPage() {

window.self.location = "item.do?command=list&pageNo=${pagemodel.nextPageNo}&pageSize=${itemForm.pageSize}&clientIdOrName=${ itemForm.clientIdOrName }"

}



function bottomPage() {

window.self.location = "item.do?command=list&pageNo=${pagemodel.bottomPageNo}&pageSize=${itemForm.pageSize}&clientIdOrName=${ itemForm.clientIdOrName }"

}



按键事件的设置

function myOnkeypress() {

if (window.event.keyCode == 13) {

queryItem();

}

单元格中



<td width="46%"><input name="clientIdOrName" type="text" class="text1" id="clientIdOrName" value="${ itemForm.clientIdOrName }" size="50" maxlength="50" οnkeypress="myOnkeypress()">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
代码下载:完整代码,可直接运行 ;运行版本:2022a或2019b或2014a;若运行有问题,可私信博主; **仿真咨询 1 各类智能优化算法改进及应用** 生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化 **2 机器学习和深度学习方面** 卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断 **3 图像处理方面** 图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知 **4 路径规划方面** 旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化 **5 无人机应用方面** 无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配 **6 无线传感器定位及布局方面** 传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化 **7 信号处理方面** 信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化 **8 电力系统方面** 微电网优化、无功优化、配电网重构、储能配置 **9 元胞自动机方面** 交通流 人群疏散 病毒扩散 晶体生长 **10 雷达方面** 卡尔曼滤波跟踪、航迹关联、航迹融合

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值