Java Web学习
记录下在学习Java Web项目中遇到的一些问题。
登录的action
登录action在struts中的定义如下:
<package name="users" namespace="/users" extends="default">
<action name="*_*" class="action.{1}Action" method="{2}">
<result name="login_success">/users/home.jsp</result>
<result name="login_failure">/login.jsp</result>
</action>
</package>
在form
表单中的action属性时,使用path
与没有使用path
的区别。
没有使用path
,如下:
<form id="login-form" action="/users/Users_login.action" method="POST" onsubmit="return validateForm()">
此时submit之后,对应的action地址是:http://localhost:8080/users/Users_login.action
,并出错。
引入path后:
<form id="login-form" action="<%=path %>/users/Users_login.action" method="POST" onsubmit="return validateForm()">
提交时的地址为:http://localhost:8080/08_01_FGJ/users/Users_login.action
,可以正常访问。
登录失败跳转后获取不到css和js文件
在login.jsp
中导入的css和js如下:
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/login.css">
在登录失败后,还是跳转到login.jsp
,却发现没有css样式。
通过调试发现,此时获取css
的路劲是http://localhost:8080/08_01_FGJ/users/css/login.css
, 会提示找不到。
可以通过base
标签解决
<%
String basePath=request.getContextPath();
String path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() + basePath;
%>
<base href="<%=path %>/">
增删改查
删除
在Web中经常需要删除数据,在删除的时候,可能需要被删除数据的id,那么如何做呢?记录下,在学习过程中,遇到的情况:
使用Struts2的标签s:param
:
<s:a action="useraction" method="delUser">
删除
<s:param name="id">${user.id}</s:param>
</s:a>
其还有另一种样式:
<s:a action="adminppt" method="delPpt">删除
<s:param name="pptid">
<s:property value="#ppt.id"/>
</s:param>
</s:a>
使用链接拼接的方式
<a href="${pageContext.request.contextPath}/department_edit.action?did=<s:property value="#d.did"/>">编辑</a>
编辑
同样在编辑的时候也需要id
如下,在form的表单中,使用post提交,可以使用s:hidden
<s:form id="saveForm" action="department_update" method="post" namespace="/" theme="simple">
<s:hidden name="did" value="%{model.did}"></s:hidden>
<table style="font-size: :16px">
<tr>
<td>部门名称:</td>
<td><s:textfield name="dname" value="%{model.dname}"></s:textfield></td>
</tr>
<tr>
<td>部门介绍:</td>
<td></td>
</tr>
<tr>
<td width="10%"></td>
<td><s:textarea rows="5" cols="50" name="ddesc" value="%{model.ddesc}"></s:textarea></td>
</tr>
</table>
</s:form>
在编辑的时候,一般有提交和回退两个按钮,对应的事件如下:
<a href="javascript:document.getElementById('saveForm').submit()">保存</a>
<a href="javascript:history.go(-1)">退回</a>