1,
获取数据库连接的代码
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/mydb?user=root&password=12345678";
Connection con = DriverManager.getConnection(url);
2,
struts1.x编写步骤:
1.编写JavaBean:User,必须继承于ActionForm类
2.在strus-config.xml中注册User的对象user,FormBean的概念
<struts-config>
<form-beans>
<form-bean name="user" type="myuser.User" />
</form-beans>
<global-forwards>
<forward name="userlist" path="/userlist.jsp" redirect="true"></forward>
</global-forwards>
<action-mappings>
<action path="/user" type="myuser.UserAction" name="user" parameter="op"></action>
</action-mappings>
</struts-config>
3,编写UserDAO类中的方法 addUser(User user)
4.编写AddUserAction,调用UserDAO类中的addUser方法,添加用户此类必须继承于Action
5.配置AddUserAction, path,name,scope,forward添加成功后直接转向userlist.jsp
3,struts标签:
bean:用来创建bean、访问bean和访问bean的属性。
html:用来创建Struts输入表单。
logic:用来进行逻辑判断、集合迭代和流程控制。
nested:建立在前三个标签库的基础上,具有前三个标签库的所有功能,只是允许标签间的嵌套。
tiles:用来创建tiles样式的页面。
4, <a href="#" class="delet" lang="${user.userName}">删除</a> (#表示不跳转,lang用来传值)
5,
struts1.3 api 文档
1.Action类
exectute方法
2.ActionMapping 对应
<action path="/user" type="myuser.UserAction" name="user" parameter="op"></action>
3.ActionForward 对应
<forward name="list" path="/userlist.jsp" redirect="true"></forward>
4.FormBean
编写struts框架,主要用到了反射的方法
6.
struts2.x环境搭建:
1,建一个动态网站项目。
2,jar包拷贝到项目中。
3,从例子程序中拷贝struts.xml 和 web.xml模版文件,struts.xml文件放到src或者classess目录下
(struts2中在action中获取response对象ServletActionContext.getResponse();)
4,2.配置Action
package用组织action
<package name="user" namespace="/" extends="struts-default">
<action name="checklogin" class="myuser.CheckLoginAction" method="execute"></action>
7, struts.devMode = false 设置开发模式(Struts2.x),无扩展名和扩展名为.action时,由struts2进行处理。
8,
三种Action获取数据的方式
1.注入属性
2.Domain Model 这是一般常用的方式
3.ModelDriven
<s:if test="#session.user==null">(OGNL表达式)
9,
配置Action的方法(struts2)
如何解决action太多的问题??
1.建立多个Action类
2.method方式:建立一个Action类,在类中编写不同的方法,在不同的方法中处理不同的请求。
在struts.xml中配置method属性,让不同的action指向同一个Action类的不同方法。
3.感叹号方式:
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
不需要配置method,直接用!方法名的方式来调用。
DynamicMethodInvocation =动态方法调用
4.通配符方式(官网推荐) “约定大于配置”
checkLogin
checkExists
add
delete
modify
<action name="*" class="myuser.UserAction" method={1}>
</action>
10,
a.Value Stack 的概念 访问时不用加#
值栈
b.Stack Context 访问时要加#
都是用来存放数据
11,<s:iterator value="#USERLIST" id="cue" status="st">
其中id可以省略,st用来表示序号,#代表是OGNL表达式
12,所有访问改为从根目录开始:绝对路径的问题 <a href="${pageContext.request.contextPath}/main.jsp">返回主页面</a>
13,<td><a href="#" class="picture" lang="<s:property value="id" />">照片</a></td>(href加#表示不跳转)
14,
提交表单:1,用ajax提交的,在action中就return null,2. 用<from>表单提交,在action中return到你想去地方。
15, <result name="list" type="redirectAction" >(跳转到action时要加“redirectAction”)
16,
实现文件上传,添加用户照片
1.为表单设置
enctype= "multipart/form-data"
17,
private File image;//
private String imageFileName;//
private String imageContentType;//
(Struts2规定的上传文件的变量)
18,
getParentFile()的作用是获得父目录
问题就是.mkdirs(); 这个方法只能生成一层一层的文件夹,不能生成文件,而你的file对象路径是直接到文件那一层的,不用getParentFile()获得父目录的话,就会像你说的那样生成两个文件夹而不是你想要的文件,所以要先调用getParentFile()获得父目录,用.mkdirs()生成父目录文件夹,最后把你想要的文件生成到这个文件夹下面,就是想要的结果。
19,照片上传,layer
json
{ //您服务端接口需严格按照下述格式返回
"status": 1, //请求的状态,1表示成功,其它表示失败
"msg": "", //状态提示语
"title": "", //相册标题
"id": number型, //相册id
"start": 0, //初始显示的图片序号,默认0
"data": [ //相册包含的图片,数组格式
{
"name": "", //图片名
"pid": number型, //图片id
"src": "", //原图地址
"thumb": "", //缩略图地址
"area": [638, 851] //原图宽高
}
]
}
20,
如果有照片,那么将照片的信息用表格的方式显示出来
首先判断是否有照片
用到s:if
<s:if test="%{#PICTURE.size()>0}">
21,
No operations allowed after connection closed.
连接关闭后,不允许执行任何操作。