很多显示数据的操作仅仅是通过GET方式来访问,这时整个流程是怎样的呢?需要一个对应的ActionForm来存放数据吗?
我目前还没用Struts,一直都是做个对应数据表的类来存放数据,然后装进ArrayList并发送到前台显示,在Sturts里也是用ActionFrom来存放每条记录,然后再装进ArrayList里并发送到前台显示吗?
9 个解决方案
#1
其实在大部分的servlet中,GET和POST方法都是同样处理的。 所以你用何种方式来访问action,区别不大。
流程都是客户端向服务器发送request,然后转交给action去处理,最后再response到客户端。
如果你已经有对应的FormBean,那么用一个对应的ActionForm来存放数据会比较方便。当然,这也不是非做不可的。你可以存放到request或者session里面。这个就看你系统需要了。
在Struts里面,一般都是把纪录装进ArrayList,然后再把ArrayList存入ActionForm。最后由JSP把ArrayList取出遍历,最后显示到页面上。
当你得系统变得越来越大的时候,你会发现用struts这种MVC模型会比较方便,容易维护。从技术上来说,没有什么特别新的。只是一些servlet和标签的运用。
流程都是客户端向服务器发送request,然后转交给action去处理,最后再response到客户端。
如果你已经有对应的FormBean,那么用一个对应的ActionForm来存放数据会比较方便。当然,这也不是非做不可的。你可以存放到request或者session里面。这个就看你系统需要了。
在Struts里面,一般都是把纪录装进ArrayList,然后再把ArrayList存入ActionForm。最后由JSP把ArrayList取出遍历,最后显示到页面上。
当你得系统变得越来越大的时候,你会发现用struts这种MVC模型会比较方便,容易维护。从技术上来说,没有什么特别新的。只是一些servlet和标签的运用。
#2
在Struts里面,一般都是把纪录装进ArrayList,然后再把ArrayList存入ActionForm。最后由JSP把ArrayList取出遍历,最后显示到页面上。
=================================================
谢谢!!!不是把每条记录存放在ActionForm里,然后再依次装入ArrayList的吗?我一直都是这么做,有不妥之处吗?
=================================================
谢谢!!!不是把每条记录存放在ActionForm里,然后再依次装入ArrayList的吗?我一直都是这么做,有不妥之处吗?
#3
你这样做也是可以的。不过我们设计ActionForm的目的就是封装数据,把所有逻辑上属于同一个部分的数据封装在一个formBean中,你这样做似乎和设计的最初目的相违背。
顺便问一句,你把每条记录存放在ActionForm里,然后再依次装入ArrayList,那么你在jsp中是怎么取得呢? 是不是把ArrayList放在request的Attribute里面?
顺便问一句,你把每条记录存放在ActionForm里,然后再依次装入ArrayList,那么你在jsp中是怎么取得呢? 是不是把ArrayList放在request的Attribute里面?
#4
谢谢yegaofei(踏雪而歌),非常感谢!
是呀.我不明白你说的方法如何实现.formBean一般只存放简单的数据类型的数据,听说不提倡存放复杂类型的数据,根据formBean的getter和setter方法,怎么可能像你说的那样呢?
打个比方吧-->
1.表
name sex
------------
张三 男
李四 男
==================
2.formBean
public class Person {
private string name = "";
private String sex = "";
public String getName() {
return this.name;
}
public String getSex() {
return this.sex;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
}
3.在servlet里存放数据
Person person = null;
java.util.ArrayList pList = new java.util.ArrayList();
while(rs.next()) {
person = new Person();
person.setName(rs.getString(1));
person.setSex(rs.getString(2));
pList.add(person);
}
request.setAttribute("pList", pList);
//跳转到jsp页面
4.在JSP页面里用JSTL显示
<c:set var="pList" value="${requestScope.pList}" />
<c:forEach items="${pList}" var="p">
<c:out value=${p.name} /> -- <c:out value=${p.sex} /><br>
<c:forEach>
=============================================
你应该明白我的意思了,难道我真的一直都在走错路?虽然分不多,但恳请能指点迷津,谢谢!!
是呀.我不明白你说的方法如何实现.formBean一般只存放简单的数据类型的数据,听说不提倡存放复杂类型的数据,根据formBean的getter和setter方法,怎么可能像你说的那样呢?
打个比方吧-->
1.表
name sex
------------
张三 男
李四 男
==================
2.formBean
public class Person {
private string name = "";
private String sex = "";
public String getName() {
return this.name;
}
public String getSex() {
return this.sex;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
}
3.在servlet里存放数据
Person person = null;
java.util.ArrayList pList = new java.util.ArrayList();
while(rs.next()) {
person = new Person();
person.setName(rs.getString(1));
person.setSex(rs.getString(2));
pList.add(person);
}
request.setAttribute("pList", pList);
//跳转到jsp页面
4.在JSP页面里用JSTL显示
<c:set var="pList" value="${requestScope.pList}" />
<c:forEach items="${pList}" var="p">
<c:out value=${p.name} /> -- <c:out value=${p.sex} /><br>
<c:forEach>
=============================================
你应该明白我的意思了,难道我真的一直都在走错路?虽然分不多,但恳请能指点迷津,谢谢!!
#5
formeBean不一定只存放简单数据。具体怎么设计,要看你的系统需求,没有固定的格式。
就你举的这个例子,我觉得可以把Person单独作一个Bean,而在formBean里面存放person 的arrayList。
public class Person {
private string name = "";
private String sex = "";
public String getName() {
return this.name;
}
public String getSex() {
return this.sex;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
}
public MyFormBean extends ActionForm{
private ArrayList persons;
public void setPersons(ArrayList persons){
this.persons = persons;
}
public ArrayList getPersons(){
return this.persons;
}
}
就你举的这个例子,我觉得可以把Person单独作一个Bean,而在formBean里面存放person 的arrayList。
public class Person {
private string name = "";
private String sex = "";
public String getName() {
return this.name;
}
public String getSex() {
return this.sex;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
}
public MyFormBean extends ActionForm{
private ArrayList persons;
public void setPersons(ArrayList persons){
this.persons = persons;
}
public ArrayList getPersons(){
return this.persons;
}
}
#6
在servlet里存放数据
Person person = null;
java.util.ArrayList pList = new java.util.ArrayList();
while(rs.next()) {
person = new Person();
person.setName(rs.getString(1));
person.setSex(rs.getString(2));
pList.add(person);
}
form.setPersons(pList); //这个form是struts action 中execute方法的参数,经过类型转换 //后可以调用setPersons方法
//跳转到jsp页面
4.在JSP页面里用JSTL显示
<c:forEach items="${myFormBean.persons}" var="p">
<c:out value=${p.name} /> -- <c:out value=${p.sex} /><br>
<c:forEach>
======================================================
看起来我们两个的代码几乎没有什么区别,我的还多了一个类。但是这个例子仅仅是个简单的情形。
很多时候我们的页面内容会比较多。比如说需要这样一个页面,上半部分显示一个学生的基本信息,姓名,性别,年龄,学号,年级,系别等等。 然后页面下半部分显示他的各科考试成绩。这个时候我的formBean里面就包含了这页面的各项属性,其中成绩单是一个list。这样封装formBean和页面中的内容对应比较一致。
你可以再考虑一下。
Person person = null;
java.util.ArrayList pList = new java.util.ArrayList();
while(rs.next()) {
person = new Person();
person.setName(rs.getString(1));
person.setSex(rs.getString(2));
pList.add(person);
}
form.setPersons(pList); //这个form是struts action 中execute方法的参数,经过类型转换 //后可以调用setPersons方法
//跳转到jsp页面
4.在JSP页面里用JSTL显示
<c:forEach items="${myFormBean.persons}" var="p">
<c:out value=${p.name} /> -- <c:out value=${p.sex} /><br>
<c:forEach>
======================================================
看起来我们两个的代码几乎没有什么区别,我的还多了一个类。但是这个例子仅仅是个简单的情形。
很多时候我们的页面内容会比较多。比如说需要这样一个页面,上半部分显示一个学生的基本信息,姓名,性别,年龄,学号,年级,系别等等。 然后页面下半部分显示他的各科考试成绩。这个时候我的formBean里面就包含了这页面的各项属性,其中成绩单是一个list。这样封装formBean和页面中的内容对应比较一致。
你可以再考虑一下。
#7
get跟post都是一种请求方式,它们的区别在于
get方式传递的参数都在链接上,而post实用form来提交的
所以get方式如果传递的参数过多的话会有链接长度限制的问题,比如说及其复杂的搜索
而post基本上不受参数多少限制
但是get方式的连接由于参数都在连接上,所以支持回退和搜索引擎的收录
而post方式的链接则不会被搜索引擎收录,所以一般门户网站都会尽量把请求作成get方式
get方式传递的参数都在链接上,而post实用form来提交的
所以get方式如果传递的参数过多的话会有链接长度限制的问题,比如说及其复杂的搜索
而post基本上不受参数多少限制
但是get方式的连接由于参数都在连接上,所以支持回退和搜索引擎的收录
而post方式的链接则不会被搜索引擎收录,所以一般门户网站都会尽量把请求作成get方式
#8
singleship(),不好意思,我进入给分的页面时还没有你的回复:)
#9
up
#1
其实在大部分的servlet中,GET和POST方法都是同样处理的。 所以你用何种方式来访问action,区别不大。
流程都是客户端向服务器发送request,然后转交给action去处理,最后再response到客户端。
如果你已经有对应的FormBean,那么用一个对应的ActionForm来存放数据会比较方便。当然,这也不是非做不可的。你可以存放到request或者session里面。这个就看你系统需要了。
在Struts里面,一般都是把纪录装进ArrayList,然后再把ArrayList存入ActionForm。最后由JSP把ArrayList取出遍历,最后显示到页面上。
当你得系统变得越来越大的时候,你会发现用struts这种MVC模型会比较方便,容易维护。从技术上来说,没有什么特别新的。只是一些servlet和标签的运用。
流程都是客户端向服务器发送request,然后转交给action去处理,最后再response到客户端。
如果你已经有对应的FormBean,那么用一个对应的ActionForm来存放数据会比较方便。当然,这也不是非做不可的。你可以存放到request或者session里面。这个就看你系统需要了。
在Struts里面,一般都是把纪录装进ArrayList,然后再把ArrayList存入ActionForm。最后由JSP把ArrayList取出遍历,最后显示到页面上。
当你得系统变得越来越大的时候,你会发现用struts这种MVC模型会比较方便,容易维护。从技术上来说,没有什么特别新的。只是一些servlet和标签的运用。
#2
在Struts里面,一般都是把纪录装进ArrayList,然后再把ArrayList存入ActionForm。最后由JSP把ArrayList取出遍历,最后显示到页面上。
=================================================
谢谢!!!不是把每条记录存放在ActionForm里,然后再依次装入ArrayList的吗?我一直都是这么做,有不妥之处吗?
=================================================
谢谢!!!不是把每条记录存放在ActionForm里,然后再依次装入ArrayList的吗?我一直都是这么做,有不妥之处吗?
#3
你这样做也是可以的。不过我们设计ActionForm的目的就是封装数据,把所有逻辑上属于同一个部分的数据封装在一个formBean中,你这样做似乎和设计的最初目的相违背。
顺便问一句,你把每条记录存放在ActionForm里,然后再依次装入ArrayList,那么你在jsp中是怎么取得呢? 是不是把ArrayList放在request的Attribute里面?
顺便问一句,你把每条记录存放在ActionForm里,然后再依次装入ArrayList,那么你在jsp中是怎么取得呢? 是不是把ArrayList放在request的Attribute里面?
#4
谢谢yegaofei(踏雪而歌),非常感谢!
是呀.我不明白你说的方法如何实现.formBean一般只存放简单的数据类型的数据,听说不提倡存放复杂类型的数据,根据formBean的getter和setter方法,怎么可能像你说的那样呢?
打个比方吧-->
1.表
name sex
------------
张三 男
李四 男
==================
2.formBean
public class Person {
private string name = "";
private String sex = "";
public String getName() {
return this.name;
}
public String getSex() {
return this.sex;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
}
3.在servlet里存放数据
Person person = null;
java.util.ArrayList pList = new java.util.ArrayList();
while(rs.next()) {
person = new Person();
person.setName(rs.getString(1));
person.setSex(rs.getString(2));
pList.add(person);
}
request.setAttribute("pList", pList);
//跳转到jsp页面
4.在JSP页面里用JSTL显示
<c:set var="pList" value="${requestScope.pList}" />
<c:forEach items="${pList}" var="p">
<c:out value=${p.name} /> -- <c:out value=${p.sex} /><br>
<c:forEach>
=============================================
你应该明白我的意思了,难道我真的一直都在走错路?虽然分不多,但恳请能指点迷津,谢谢!!
是呀.我不明白你说的方法如何实现.formBean一般只存放简单的数据类型的数据,听说不提倡存放复杂类型的数据,根据formBean的getter和setter方法,怎么可能像你说的那样呢?
打个比方吧-->
1.表
name sex
------------
张三 男
李四 男
==================
2.formBean
public class Person {
private string name = "";
private String sex = "";
public String getName() {
return this.name;
}
public String getSex() {
return this.sex;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
}
3.在servlet里存放数据
Person person = null;
java.util.ArrayList pList = new java.util.ArrayList();
while(rs.next()) {
person = new Person();
person.setName(rs.getString(1));
person.setSex(rs.getString(2));
pList.add(person);
}
request.setAttribute("pList", pList);
//跳转到jsp页面
4.在JSP页面里用JSTL显示
<c:set var="pList" value="${requestScope.pList}" />
<c:forEach items="${pList}" var="p">
<c:out value=${p.name} /> -- <c:out value=${p.sex} /><br>
<c:forEach>
=============================================
你应该明白我的意思了,难道我真的一直都在走错路?虽然分不多,但恳请能指点迷津,谢谢!!
#5
formeBean不一定只存放简单数据。具体怎么设计,要看你的系统需求,没有固定的格式。
就你举的这个例子,我觉得可以把Person单独作一个Bean,而在formBean里面存放person 的arrayList。
public class Person {
private string name = "";
private String sex = "";
public String getName() {
return this.name;
}
public String getSex() {
return this.sex;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
}
public MyFormBean extends ActionForm{
private ArrayList persons;
public void setPersons(ArrayList persons){
this.persons = persons;
}
public ArrayList getPersons(){
return this.persons;
}
}
就你举的这个例子,我觉得可以把Person单独作一个Bean,而在formBean里面存放person 的arrayList。
public class Person {
private string name = "";
private String sex = "";
public String getName() {
return this.name;
}
public String getSex() {
return this.sex;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
}
public MyFormBean extends ActionForm{
private ArrayList persons;
public void setPersons(ArrayList persons){
this.persons = persons;
}
public ArrayList getPersons(){
return this.persons;
}
}
#6
在servlet里存放数据
Person person = null;
java.util.ArrayList pList = new java.util.ArrayList();
while(rs.next()) {
person = new Person();
person.setName(rs.getString(1));
person.setSex(rs.getString(2));
pList.add(person);
}
form.setPersons(pList); //这个form是struts action 中execute方法的参数,经过类型转换 //后可以调用setPersons方法
//跳转到jsp页面
4.在JSP页面里用JSTL显示
<c:forEach items="${myFormBean.persons}" var="p">
<c:out value=${p.name} /> -- <c:out value=${p.sex} /><br>
<c:forEach>
======================================================
看起来我们两个的代码几乎没有什么区别,我的还多了一个类。但是这个例子仅仅是个简单的情形。
很多时候我们的页面内容会比较多。比如说需要这样一个页面,上半部分显示一个学生的基本信息,姓名,性别,年龄,学号,年级,系别等等。 然后页面下半部分显示他的各科考试成绩。这个时候我的formBean里面就包含了这页面的各项属性,其中成绩单是一个list。这样封装formBean和页面中的内容对应比较一致。
你可以再考虑一下。
Person person = null;
java.util.ArrayList pList = new java.util.ArrayList();
while(rs.next()) {
person = new Person();
person.setName(rs.getString(1));
person.setSex(rs.getString(2));
pList.add(person);
}
form.setPersons(pList); //这个form是struts action 中execute方法的参数,经过类型转换 //后可以调用setPersons方法
//跳转到jsp页面
4.在JSP页面里用JSTL显示
<c:forEach items="${myFormBean.persons}" var="p">
<c:out value=${p.name} /> -- <c:out value=${p.sex} /><br>
<c:forEach>
======================================================
看起来我们两个的代码几乎没有什么区别,我的还多了一个类。但是这个例子仅仅是个简单的情形。
很多时候我们的页面内容会比较多。比如说需要这样一个页面,上半部分显示一个学生的基本信息,姓名,性别,年龄,学号,年级,系别等等。 然后页面下半部分显示他的各科考试成绩。这个时候我的formBean里面就包含了这页面的各项属性,其中成绩单是一个list。这样封装formBean和页面中的内容对应比较一致。
你可以再考虑一下。
#7
get跟post都是一种请求方式,它们的区别在于
get方式传递的参数都在链接上,而post实用form来提交的
所以get方式如果传递的参数过多的话会有链接长度限制的问题,比如说及其复杂的搜索
而post基本上不受参数多少限制
但是get方式的连接由于参数都在连接上,所以支持回退和搜索引擎的收录
而post方式的链接则不会被搜索引擎收录,所以一般门户网站都会尽量把请求作成get方式
get方式传递的参数都在链接上,而post实用form来提交的
所以get方式如果传递的参数过多的话会有链接长度限制的问题,比如说及其复杂的搜索
而post基本上不受参数多少限制
但是get方式的连接由于参数都在连接上,所以支持回退和搜索引擎的收录
而post方式的链接则不会被搜索引擎收录,所以一般门户网站都会尽量把请求作成get方式
#8
singleship(),不好意思,我进入给分的页面时还没有你的回复:)
#9
up