写blog项目困难总结

 

window.open('blog/userManager/checkUser.jsp','','width=480,height=147');     这种直接跳转checkUser.jsp

1<a href="userInfo_landOutUser.htm" class="a1">   

2<s:form action="userInfo_addUserInfo">

这两种跳转到UserInfoAction对应的方法(UserInfo_*),在struts.xml里:

<action name="userInfo_*" class="com.mr.webiter.UserInfoAction" method="{1}">

<result name="friend_query">/blog/userManager/friends_query.jsp</result>                                                                        

 </action>

<action name="blogMain_*" class="com.mr.webiter.BlogMainAction" method="{1}">

           <result name="blogMain">/blog_main.jsp</result>

           红色部分是说明BlogMainAction函数处理完返回的参数所对应的页面或是12跳转过来的要处理的页面   

</action>

request.getSession().getServletContext().getRealPath("/" + account);

ObjectDao<ArticleInfo> objectDao= new ObjectDao<ArticleInfo>();

List<ArticleInfo> list = objectDao.queryList(hql);

以上代码代表把不同的Dao(对某个对象的操作集合)放入ObjectDao类里面操作(启动数据库连接、关闭数据库)并返回结果,好处是一个类可以处理多个Dao

<s:iterator value="%{#request.userCommned}" id="commned">

        <tr align="center">

          <td height="30" background="images/f_certer.gif"><a href="userInfo_goinUser.htm?account=<s:property value="#commned.account"/>" target="_blank"><s:property value="#commned.account"/></td>

        </tr>

</s:iterator>com.mr.webiter.BlogMainAction已经取得各个热门博客、推荐博客、热门文章等

 

1.<a href="userInfo_goinUser.htm?account=<s:property value="#commned.account"/>" target="_blank">这种跳转方式是携带“account”值跳转,然后经过“com.mr.webiter.BlogMainAction”处理,把该对象放入UserInfo,获取account值得方法是:UserInfo userInfo=(UserInfo)session.getAttribute("userInfo");所以从UserInfo获取即可,该方法在java方法内

2.另外一种方式获取这种值是:<s:hidden name="info_account" value="%{#session.userInfo.account}"/>该方法用于html页面内

3. <a href="userInfo_goinUser.htm?account=${sessionScope.account}" target="_blank" class="a1">跳转是用法

4.获取值value="%{#session.account}"这个是登录就有的,一直保存到会话结束

// 用户登录操作

request.getSession().setAttribute("account", user.getAccount());java代码里,设置会话里的account值,是整个会话不变的,就是“好人”登录了,什么地方“好人”查看其它博客都不会改变,查看博客时是跳转值方式是:1

 

//用户个人管理模块

1.com.mr.webiter.UserInfoAction里:request.getSession().setAttribute("userInfo", userInfo);把登录的用户存储到会话,并取值名"userInfo",用法:

java代码<s:set name="user" value="%{#request.userInfo}"/>

html里使用<s:property value="#user.realname"/></td>

 

2.返回原本请求页面

<action name="userInfo_*" class="com.mr.webiter.UserInfoAction" method="{1}">

           <result name="input">/blog/userManager/{1}.jsp</result> 

           <result name="success">/blog/userManager/{1}.jsp</result> 

比如:要跳转userInfo_artType_query.htm时会先跳转到"com.mr.webiter.UserInfoAction"进行处理,返回success时会自动提取artType_query.jsp来返回

感悟1:关于提示消息显示方式

<result name="success">/blog/userManager/{1}.jsp</result>   是让处理完后的提示消息在原本请求页面上

如果跑去dealwith.jsp则通常是提示框显示提示消息,点击后回才回到原本请求页面

感悟2:关于success跳转到新界面

像上面的跳转就是跳转回原本请求页面(本来在显示)

对于还没显示过的“原本页面”呢?

href="photoInfo_photo_query.htm">相片查询

PhotoAction处理完后返回success值(根据struct.xml)后就是跳转到photo_query.jsp显示处理结果

感悟3:关于UserInfoAction里的userInfo

userInfo会把之前提交页面的控件值(控件的name要与UserInfo.java的相应的属性值同名)对应进类似于javabean里,然后就可以通过get获取了(userInfo.get***)

感悟4:关于使用“对号入座”的Action多动作处理器

<a href="userInfo_phtType_query.htm">链接跳转

<s:form action="userInfo_phtType_query">表单提交跳转

<a href="blog/userManager/addUserInfo.jsp"这样的才是直接跳转

感悟5:关于在原本请求页面提示信息(重新返回时)

Htmljsp页面:

<s:fielderror><s:param value="%{'pht_type'}"/></s:fielderror>

Java:

this.addFieldError("pht_type", "您输入的相册类别重复,请重新输入!");

感悟6:关于修改删除同处一处理模块效率更高

<script language="javascript">

function openUpdateArt(type){

       var hdc=window.open('blog/userManager/phtType_update.jsp?type='+type,'','width=480,height=147');

       width=screen.width;

       height=screen.height;

       hdc.moveTo((width-480)/2,(height-147)/2);

    }

</script>

 

<s:iterator value="%{#request.pht_types}" id="type" status="st">

       <input value="<s:property value="type"/>"这个是用来显示值的 type="checkbox" name="type" class="button" id="chk_id">&nbsp;

                          <a  style="cursor:hand; " onClick="openUpdateArt('<s:property value="type"/>')">这个是说明点击该文字段就携带”type”值跳转到以上函数<s:property value="type"/></a>

             <s:if test="#st.count%5==0">

                  <br><br>

             </s:if>

         </s:iterator>

java里获取一系列被勾上的值:String phtTypes[] = request.getParameterValues("type");

感悟7:获取该Dao的所有属性值并显示

java:

String account = (String) request.getSession().getAttribute(

    "account");

    hql = "from UserInfo where account = '" + account + "'";

    objectDao = new ObjectDao<UserInfo>();

    UserInfo userInfo = objectDao.queryFrom(hql);

    request.setAttribute("userInfo", userInfo);

jsp:

<s:set name="userInfo" value="%{#request.userInfo}"/>

value="%{#userInfo.email}

感悟8:解决获取携带值乱码问题

 

try {

       account = new String(account.getBytes("ISO8859_1"), "gb2312");

    } catch (UnsupportedEncodingException e) {

       e.printStackTrace();

    }

感悟9:天无绝人之路,获取用户名“永远不变”

String account = (String) request.getSession().getAttribute("account");

感悟10userInfo找不到某个get**

如果在java里:

String andress = userInfo.getAddress();

    System.out.println(andress);

输出为null的话,肯定是之前提交的jsp表单(s:textfield之类的)的name不同于Modelde*.hbm.xml)里的。

感悟11:往会话里存储数组

request.setAttribute("friends", friend.split(","));

感悟11:额外的手动效验如何显示

javathis.addFieldError("password", "&nbsp;&nbsp;您输入的密码有误!");

              returnSUCCESS;  这样即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在算法岗面试中,描述项目经历时,你可以采用以下方法: 首先,你可以简要介绍项目的背景和目标。说明项目是什么,为什么要做这个项目,以及项目的目标是什么。这样可以让面试官对你的项目有一个整体的了解。 接下来,重点突出你在项目中承担的角色和职责。说明你在项目中负责的具体任务和工作内容,以及你在项目中的贡献。可以提到你在项目中使用了哪些算法或数据结构,以及你如何应用它们解决问题。 然后,强调你在项目中遇到的挑战和解决方案。说明你在项目中遇到的困难或问题,以及你是如何克服它们的。可以提到你采用了哪些算法或优化方法来提高项目的性能或效果。 最后,总结你在项目中的成果和收获。说明你在项目中取得的成绩和对团队的贡献。可以提到你在项目中取得的关键结果或突出表现,以及你从项目中学到的经验和教训。 通过以上的描述,你可以向面试官展示你在项目中的实际经验和技能,以及你在算法方面的能力和应用能力。记得要言简意赅地表达,突出重点,让面试官对你的项目经历留下深刻的印象。 #### 引用[.reference_title] - *1* *2* [算法岗面试,这些重点你必须要掌握](https://blog.csdn.net/weixin_42645636/article/details/128441027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [记2021-07-30日算法岗面试经历](https://blog.csdn.net/eylier/article/details/119251542)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值