zoukankan      html  css  js  c++  java
  • Struts1+Hibernate+Spring开发

    一、配置及方法调用

    1、搭建框架:dao、 entity 、service、web(action、form)。

    2、添加支持jar包。

    3、配置文件的修改:

      (1)、在web.xml中添加如下代码:

     <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:applicationContext.xml</param-value>
       </context-param> 

    <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    (2)、view 设计Action,添加相应参数(注意:继承自DispatchAction)

    (3)、在applicationContext.xml文件下编写如下代码:示例

    <!-- service -->
     <bean id="caclService" class="com.accp.service.CalcService"></bean>
     
     <!-- action -->
     <bean name="/calc" class="com.accp.web.action.CalcAction">
      <property name="caclService" ref="caclService"></property>
     </bean>

    (4)、WEB-INF下struts-config.xml中代码如下所示:

    <struts-config>
      <data-sources />
      <form-beans >
        <form-bean name="calcForm" type="org.apache.struts.action.DynaActionForm">
          <form-property name="name" type="java.lang.Double" />
          <form-property name="password" type="java.lang.Double" />
        </form-bean>

      </form-beans>

      <global-exceptions />
      <global-forwards />
      <action-mappings >
        <action
          attribute="calcForm"
          input="/calc.jsp"
          name="calcForm"
          parameter="method"
          path="/calc"
          scope="request"
          type="org.springframework.web.struts.DelegatingActionProxy">
          <set-property property="cancellable" value="true" />
          <forward
            name="result"
            path="/calc.jsp"
            contextRelative="true" />
        </action>

      </action-mappings>

      <message-resources parameter="ApplicationResources" />
    </struts-config>

    (5)jsp页面上:

    <%@ page language="java" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
     
    <html>
     <head>
      <title>JSP for DynaActionForm form</title>
     </head>
     <body bgcolor="#fffeee">
      <form action="calc.do?method=login" method="post">
      <table align="center" width="80%">
      <tr>
          <td colspan="2">
           <jsp:include flush="true" page="top.jsp"></jsp:include>
          </td>
      </tr>
      <tr>
       <td align="right">
                    用户名 :
       </td>
       <td align="left">
             <input type="text" name="name" value="${name}"/><font color="red"><html:errors property="name"/></font>
       </td>
      </tr>
      <tr>
       <td align="right">
                    密&nbsp;&nbsp;码 :
       </td>
       <td align="left">
              <input type="password" name="password" value="${password}"/><font color="red"><html:errors property="password"/></font>
       </td>
      </tr>
      <tr>
      <td colspan="2" align="center">
            <input type="submit" value="登录"/>&nbsp;<input type="reset" value="取消"/>
           </td>
      <td>&nbsp;</td>
      </tr>
      <tr>
        <td colspan="2">
         <jsp:include flush="true" page="bottom.jsp"></jsp:include>
        </td>
      </tr>
         </table>
      </form>
     </body>
    </html>

    (6)Action方法中示例代码:

    public class UserAction extends DispatchAction {
     
        private UserService userService=new UserService();
       
     
     public void setUserService(UserService userService) {
      this.userService = userService;
     }


     public ActionForward login(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response) {
      ActionMessages msg=new ActionMessages();
      DynaActionForm userForm = (DynaActionForm) form;
      System.out.println("---------user login--------");
         String name=(String) userForm.get("name");
         request.setAttribute("name", name);
         if(null==name||name.trim().length()==0){
          msg.add("name", new ActionMessage("用户名不能为空!", false));
          super.saveErrors(request, msg);
          return new ActionForward("/user.jsp");
         }
         String password=(String) userForm.get("password");
         request.setAttribute("password", password);
         if(null==password||password.trim().length()==0){
          msg.add("password", new ActionMessage("密码不能为空!", false));
          super.saveErrors(request, msg);
          return new ActionForward("/user.jsp");
         }
         Userinfo user=this.userService.getUser(name,password);
         if(null!=user){
          return mapping.findForward("index");
         }else{
          
         }
      return mapping.findForward("login");

     }
     
    }

    (7)、方法调用如:calc.do?method=login

    二、学习过程中遇到的错误

    (1)错误:在某action里使用request.setAttribute()方法将一个List类型对象放在request中,然后forward到一个jsp文件,该文件的主要内容是使用<logic:iterate>标签将这个List对象中的条目列表显示。
    与它同样逻辑但位于另一模块(teacher)中的代码执行正常。但这个模块(xxgl)中的代码,本来很简单的逻辑,却总是提示:
    org.apache.jasper.JasperException: Cannot find bean t in any scope
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
    at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
    at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
    at java.lang.Thread.run(Unknown Source)

     (2)解决方案:

    1、检查是否引入Struts1标签库

    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

    2、如代码:<div id="note_content">
           <logic:iterate id="note" name="notes" scope="request">
                ${note.content}
           </logic:iterate>
         </div>

    将具体访问的scope注明为scope=“request”;

  • 相关阅读:
    二 .数据库(Data)操作
    一. 数据库(Data)基础
    五种IO/模型
    并发编程 (协程)
    七.并发编程 (线程池,返回值,回调函数)
    六.并发编程 (线程对列)
    五.并发编程 (线程事件)
    四.并发编程 (线程信号量)
    三.并发编程 (线程锁)
    二.并发编程 (程序中线程操作)
  • 原文地址:https://www.cnblogs.com/boonya/p/2154262.html
Copyright © 2011-2022 走看看