Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Architecture & Framework  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 看Spring附带jpetstore(Spring as web tier)登入过程,请指点
yeafee

javaholder



发贴: 42
积分: 1
于 2005-11-23 16:36 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
今天开始看Spring附带的samples中的jpetstore,我配置的是选用Spring作为web tier.
在index.html页面中,有"shop/signonForm.do",根据petstore-servlet.xml中的配置,

<bean name="/shop/signonForm.do"
class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="SignonForm"/>
</bean>

进入到/WEB-INF/jsp/Spring/SignonForm.jsp页面;然后在SignonForm.jsp中登录Form有action="<c:url value="/shop/signon.do"/>".此后,有几个地方不明白,

<bean name="/shop/signon.do"
class="org.springframework.samples.jpetstore.web.spring.SignonController"> ①

<property name="petStore" ref="petStore"/> ②

</bean>


问题①: SignonController.java主要代码如下:

public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
String username = request.getParameter("username");
String password = request.getParameter("password");
Account account = this.petStore.getAccount(username, password);
if (account == null) {
return new ModelAndView("Error", "message",
"Invalid username or password. Signon failed.");
}
else {
UserSession userSession = new UserSession(account);
PagedListHolder myList = new PagedListHolder(this.petStore.getProductListByCategory(account.getFavouriteCategoryId()));
myList.setPageSize(4);
userSession.setMyList(myList);
request.getSession().setAttribute("userSession", userSession);

String forwardAction = request.getParameter("forwardAction");

if (forwardAction != null) {
response.sendRedirect(forwardAction);
return null;
}
else {
return new ModelAndView("index");
  }
}
}

上面的UserSession对象是在从哪里来的呢?找了长久没有所获。Sad
还有forwardAction,那个参数是从SignonForm.jsp中的下边代码处来的??可为什么要用一个if语句呢?不解!!!

<c:if test="${!empty signonForwardAction}">
<input type="hidden" name="forwardAction" value="<c:url value="${signonForwardAction}"/>"/>
</c:if>

---------------------------------------------------------------------------------------------------
问题②:发现在petstore-servlet.xml中有好几处都有:
<property name="petStore" ref="petStore"/>

好像是个引用什么的吧?只是这个petstore在哪里呢?有何用呢?

-------------------------------------------------------
-------------------------------------------------------
问题完毕!
呵呵,刚开始Spring的学习,一上来就碰到这么多的问题了,还请各路不吝指导哇!多谢先!Smile附上 petstore-servlet.xml.

petstore-servlet.xml (4.79k)


yeafee edited on 2005-11-23 16:45

三人行,必有我师焉
敏而好学,不耻三问
学而时习之,不思则罔
..........
作者 Re:看Spring附带jpetstore(Spring as web tier)登入过程,请指点 [Re:yeafee]
yeafee

javaholder



发贴: 42
积分: 1
于 2005-11-23 17:03 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Koders.comhttp://www.koders.com/java/fid98C29E37C029B7258FFD1F2229459813CE5DE3F0.aspx?s=iso+3166 .这个网站是卖源码的么?

其中有好多的java程序源码?好像有的还有价格的.



三人行,必有我师焉
敏而好学,不耻三问
学而时习之,不思则罔
..........
作者 Re:看Spring附带jpetstore(Spring as web tier)登入过程,请指点 [Re:yeafee]
yeafee

javaholder



发贴: 42
积分: 1
于 2005-11-23 17:03 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
好像系统有点问题,刷新后就提交两次了的

yeafee edited on 2005-11-23 17:07

三人行,必有我师焉
敏而好学,不耻三问
学而时习之,不思则罔
..........
作者 Re:看Spring附带jpetstore(Spring as web tier)登入过程,请指点 [Re:yeafee]
floater

Java Jedi

总版主


发贴: 3233
积分: 421
于 2005-11-24 02:55 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
UserSession is in org.springframework.samples.jpetstore.web.spring package.

That if check is just to make sure it's well defined, it's a double check.

petStore bean is define in jpetstore\attributes\WEB-INF\applicationContext.xml. This is the central place for the entire application logic.

Hmm, I am a little bit surprised about these code, it could be done in a better way. Maybe it's a little old.



"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
- Martin Fowler, Refactoring - Improving the Design of Existing Code
作者 Re:看Spring附带jpetstore(Spring as web tier)登入过程,请指点 [Re:yeafee]
yeafee

javaholder



发贴: 42
积分: 1
于 2005-11-24 09:31 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
感谢floater,我在黑暗中摸索着,你在前方不远处燃亮了一点星火.给我指引了方向,也有一些温暖.(这里让我想想了巴金先生的<<灯>>,怀念巴金先生,巴金走了,灯仍在)


三人行,必有我师焉
敏而好学,不耻三问
学而时习之,不思则罔
..........
作者 Re:看Spring附带jpetstore(Spring as web tier)登入过程,请指点 [Re:yeafee]
yeafee

javaholder



发贴: 42
积分: 1
于 2005-11-24 12:45 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
<c:if test="${!empty signonForwardAction}">
<input type="hidden" name="forwardAction" value="<c:url value="${signonForwardAction}"/>"/>
</c:if>


这个signonForwardAction值从何而来呢?和下面的SignonInterceptor.java有关联的?它们是如何联系的呢?我的意思是如何从SignonController.java又到了SignonInterceptor.java??还请不烦再次指点.Smile

public class SignonInterceptor extends HandlerInterceptorAdapter {

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
UserSession userSession = (UserSession) WebUtils.getSessionAttribute(request, "userSession");
if (userSession == null) {
String url = request.getServletPath();
String query = request.getQueryString();
ModelAndView modelAndView = new ModelAndView("SignonForm");
if (query != null) {
modelAndView.addObject("signonForwardAction", url+"?"+query);
}
else {
modelAndView.addObject("signonForwardAction", url);
}
throw new ModelAndViewDefiningException(modelAndView);
}
else {
return true;
}
}
}


yeafee edited on 2005-11-24 12:54

三人行,必有我师焉
敏而好学,不耻三问
学而时习之,不思则罔
..........
作者 Re:看Spring附带jpetstore(Spring as web tier)登入过程,请指点 [Re:yeafee]
floater

Java Jedi

总版主


发贴: 3233
积分: 421
于 2005-11-24 14:24 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
In petstore-servlet.xml, which is the web config file and loaded from web.xml, this interceptor is assigned to four urls. So when you hit those 4 urls, this interceptor will intercept your request and check the user session, if it's not there, it reroutes you to SignonForm(in the above code). Once your submit from that form, the SignonController is called, and then reroute you back to where you originally come from.


"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
- Martin Fowler, Refactoring - Improving the Design of Existing Code
作者 Re:看Spring附带jpetstore(Spring as web tier)登入过程,请指点 [Re:yeafee]
yeafee

javaholder



发贴: 42
积分: 1
于 2005-11-24 20:33 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
3kx,floter的指点总是那么及时。
Hmm,I must walk along,then i can have a same light.Smile

Continue.....


yeafee edited on 2005-11-26 09:23

三人行,必有我师焉
敏而好学,不耻三问
学而时习之,不思则罔
..........
作者 Re:看Spring附带jpetstore(Spring as web tier)登入过程,请指点 [Re:yeafee]
yeafee

javaholder



发贴: 42
积分: 1
于 2005-11-29 11:54 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
嗯,我现在才发现这个.Sad


3. I want to have a tutorial which can show me nuts and bolts, one piece at a time. A combined petstore is good, but not good for beginners. So I wrote the document to fill in the gap.

不得不,作为一个热切的初学者,我得先放一放这个petstrore.尽管它比较精典.先看完这个再说.

A tutorial for Spring Web



三人行,必有我师焉
敏而好学,不耻三问
学而时习之,不思则罔
..........
作者 Re:看Spring附带jpetstore(Spring as web tier)登入过程,请指点 [Re:yeafee]
floater

Java Jedi

总版主


发贴: 3233
积分: 421
于 2005-11-29 12:11 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Yea, but it's a little bit old, I just don't have time to update it, translate it into chinese. But the basic ideal is still there, though I really want to add the ideas and logic between web frameworks and consequently why Struts is a crap, and it should not be used for any new projects at all, given the choice of Spring mvc.

Oh, there are other iBATIS, core, and ejb docs too, yes, I wrote them, --- 老王卖瓜,自卖自夸, :-),just to save you some time, really.


floater edited on 2005-11-29 12:14

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
- Martin Fowler, Refactoring - Improving the Design of Existing Code
作者 Re:看Spring附带jpetstore(Spring as web tier)登入过程,请指点 [Re:yeafee]
yeafee

javaholder



发贴: 42
积分: 1
于 2005-11-29 17:04 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
老王卖瓜,自卖自夸
,或许这个更通俗些了,
王婆卖瓜,自卖自夸
Smile,呵呵,或许我这个已经有此之嫌了.$_$.我们都该如此才好呀,尽可能的把自己的所长及所能及有益之事展示出来才好.

呵呵,英文的tutorial也差不多可以看了,写的很好,于我有益,尤其是下面这个:

public class UserHomeController implements Controller
{
private String viewFilename;
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws Exception
{
return new ModelAndView(this.getViewFilename());
}
public void setViewFilename(String name) { this.viewFilename = name; }
public String getViewFilename() { return this.viewFilename; }
}

那个this.getViewFilename(),真是用的很好呀.Smile受教了.


yeafee edited on 2005-11-29 17:10

三人行,必有我师焉
敏而好学,不耻三问
学而时习之,不思则罔
..........

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923