Spring + Struts2联合开发

来源:互联网 发布:粉底液推荐知乎 编辑:程序博客网 时间:2024/05/22 21:46

使用Spring + Struts2完成前台的新闻添加功能,来查看Spring怎样结合Struts2。

加入支持,顺序是 Spring à Struts2


注意,多选择一个Web支持库。



将Struts2擅自加入的Spring2.5支持包删除:


为了让其他框架可以结合Spring进行开发,需要在web.xml中加入以下配置:

   

    <context-param>

       <param-name>contextConfigLocation</param-name>

       <param-value>/WEB-INF/classes/applicationContext.xml</param-value>

    </context-param>

   

    <listener>

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

    </listener>

将项目部署,并启动服务器,如果看到启动时,提示加载了配置文件,就表示配置成功。

信息: Initializing Spring root WebApplicationContext

可以正常开始开发后台部分的代码:

然后编写页面的操作。

       <center>

           <ahref="pages/news/news_insert.jsp">添加新闻</a>

       </center>

编写添加的表单。

       <center>

           <s:formaction="news!insert.action"method="post"theme="simple"namespace="/">

              新闻标题: <s:textfieldname="news.title"></s:textfield><br/>

              新闻内容: <s:textfieldname="news.content"></s:textfield><br/>

              发布日期: <s:textfieldname="news.pubDate"></s:textfield><br/>

              类型编号: <s:textfieldname="news.typeId"></s:textfield><br/>

              <s:submitvalue="提交"></s:submit>

           </s:form>

       </center>

完成Action的操作,并加入验证功能:

public class NewsAction extends ActionSupport {

 

    private INewsServiceservice;

 

    private Newsnews;

 

    private Stringmessage;

    private Stringurl;

 

    // 自动验证方法,如果有错误,会自动返回input,如果正确,则进入应该进行的操作方法.

    // 为了区分要验证的操作,此方法也支持分发,可以针对某一固定操作进行验证,这里针对insert完成验证

    public void validateInsert() {

       if (news.getTitle() ==null || news.getTitle().trim().equals("")) {

           super.addFieldError("title","标题不能为空!");

       }

    }

 

    public String insert()throws Exception {

       service.insert(news);

      

       message = "添加成功" ;

       url = "index.jsp" ;

      

       return"forward";

    }

配置Spring

    <beanid="newsAction"class="org.liky.action.NewsAction">

       <propertyname="service">

           <refbean="newsServiceImpl"/>

       </property>

    </bean>

配置Struts

    <packagename="root"namespace="/"extends="struts-default">

       <actionname="news"class="newsAction">

           <resultname="forward">/forward.jsp</result>

           <resultname="input">/error.jsp</result>

       </action>

    </package>

完成forward.jsp和error.jsp

       <center>

           出现以下错误: <br/>

           <br/>

           <hr/>

           <br/>

           <fontcolor="red">

              <s:fielderror></s:fielderror>

           </font>

           <br/>

           <inputtype="button"value="返回"onclick="history.back();">

       </center>

测试时会发现错误信息不清空,解决方法是将Action不设置为单例模式。

    <beanid="newsAction"class="org.liky.action.NewsAction"scope="prototype">

       <propertyname="service">

           <refbean="newsServiceImpl"/>

       </property>

    </bean>




























0 0