Struts2的下载和安装
- 去下载Struts2 最新版
- struts2目录结构【开发时没必要将lib目录下jar文件全部复制到项目中】
- apps 该文件夹包含了基于struts2 的示例应用,这些示例应用对于学习者是非常有用的
- docs 该文件夹下包含了struts2 相关文档,包括struts2 快速入门、struts2的文档以及API文档等
- lib 该文件夹下包含了Struts2框架和核心类库,以及struts2第三方插件类库
- src 该文件夹下包含了Struts2框架的全部源代码
Struts2的入门理论
第一个Struts2应用入门
- 创建WEB工程
- 导入必要jar包
a.将apps\struts2-blank-2.1.8.1\WEB-INF\lib下所有 jar复制到项目的 lib目录下 - 编写jsp页面
- 编写Action服务器端处理逻辑
- 进行框架配置web.xml、struts.xml
- 运行测试
IDEA中搭建【Struts】项目
1.点击Create New Project
2.勾选struts配置
3.项目命名,点击Finish
4.在WEB-INF中新建目录lib,将之前下载的struts2必备的包放入该目录
【集成library–lib目录选择全部的jar包,右击选择Add as Library填struts2】
5.自动生成web.xml配置改成如下:
6.当strut.xml extend="struts-default"报错时,添加就行了如下
编写类
1.继承接口【com.opensymphony.xwork2.ActionSupport】 实现模型驱动接口
2.格式
public String 函数名{
return 结果字符串
}
默认执行excute方法
实体类一定要生成set方法,set接收参数
使用通配符配置Action
全局结果视图
result元素的配置
页面标签引用
EL表达式 :${表达式}
OGNL表达式: 在jsp页面为不和EL冲突 %{表达式} 在OGNL标签的value属性中可以不写
OGNL表达式只能在 OGNL标签中使用
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<tr>
<td width="22">学号</td>
<td width="22">名字</td>
<td width="22">年龄</td>
<td width="16">性别</td>
<td width="41">出生日期</td>
<td width="37">所属班级</td>
</tr>
<c:forEach items="${list}" var="s">
<tr>
<td>${s.stuId }</td>
<td>${s.stuName}</td>
<td>${s.age}</td>
<td>${s.sex==true?"女":"男" }</td>
<td>${s.birthday }</td>
<td>${s.className}</td>
</tr>
</c:forEach>
验证错误回显
1.基于XML配置方式实现
此时对应页面回显错误信息则只要直接取得S标签
xml配置中的一些简单验证
2.采用手工编写代码实现
//action类
//全局验证 对象里所有方法都验证
public void validate(){
System.out.println("全局");
if(user.getUsername()==null || user.getUsername().trim().equals("")){
//像存放错误的容器中存放错误容器
this.addFieldError("nameError","用户名为空");
}
if(user.getPassword()==null || user.getPassword().trim().equals("")){
this.addFieldErroe("pwdError","密码不能为空");
}
}
//局部验证
public void validateLogin(){
System.out.println("局部");
if(user.getUsername()==null || user.getUsername().trim().equals("")){
//像存放错误的容器中存放错误容器
this.addFieldError("nameError","用户名为空");
}
if(user.getPassword()==null || user.getPassword().trim().equals("")){
this.addFieldErroe("pwdError","密码不能为空");
}
}
此验证对应页面取错误信息
//jsp页面
<!-- 导入struts 标签库 -->此时用到S标签取得错误信息
<%@taglib uri="/struts-tags" prefix="s" %>
<form action="user_login.action" onsubmit="return checkForm()" >
用户名<input type="text" name="username" />
<s:fielderror fieldName="nameError"></s:fielderror><br/>
密码<input type="password" name="pwd" id="pwd"/>
<s:fielderror fieldName="pwdError"></s:fielderror><br/>
<input type="submit" value="登录" />
</form>
关于文件上传
1.文件上传概述
2.文件上传
例:
//jsp页面
<form action = "" method="post" enctype="multipart/form-data">
<input type="file" name="pic" />
<input type="submit" value="上传"/>
</form>
//action文件上传代码
public class UpAction extendsActionSupport{
//使用第一接受数据方式 得到 上传的文件
private File pic;
//文件名称 固定写法 pic+FileName
private String picFileName;
//得到文件mine类型
private String picContentType;
//生成get、set方法
public String addUI(){
return "addUI";
}
public String add(){
System.out.println(picFileName);
String houZ = picFileName.subString(picFileName.lastIndexOf("."),picFileName.length());
//服务器上保存图片的真实 五里路径
String destFile = ServletActionContext.getServletContext().getRealPath("/image");
//创建文件对象 将上传的图片复制
File destFile = new File(realPath+"/"+Syetem.currentTimeMillis()+houZ);
//保存文件
try{
FileUtils.copyFile(pic,destFile);
}catch(IOException e){
e.printStackTrace();
}
System.out.println(realPath);
return null;
}
}