Struts 笔记1

最近开始学习Struts,怕看过的东西忘记了,小小总结一下,方便自己,也方便javaeye的同行们在忘记某些东西的时候可以查找看看。里面很多内容都引用了郭克华老师的代码。

好了,废话少说

1.配置文件

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<!-- 在此声明actionServlet-->
<servlet-name>actionServlet</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<!-- 初始化的时候,要读取的struts config文件路径-->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>

<!-- 声明jsp表单提交时候,凡以*.do为action内容的,都被actionServlet截获处理-->
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>



struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />

<!-- 在此注册ActionForm -->
<form-beans>
<!-- name:名称 type:类路径 -->
<form-bean name="queryForm" type="prj2_1.QueryForm"></form-bean>
</form-beans>

<global-exceptions />

<!-- 设置URL逻辑名称(全局,任意的Action都可以识别到)-->
<global-forwards>
<forward name="RESULT" path="/queryResult.jsp"></forward>
</global-forwards>

<!-- 注册Action -->
<action-mappings>
<!-- type:类路径; name:相应的ActionForm的名称; path:客户端提交到服务器端时指定的路径 -->
<action name="queryForm" path="/query" type="prj2_1.QueryAction">
<!-- 设置URL逻辑名称(局部,只有这个Action可以识别到)-->
<forward name="RESULT" path="/queryResult.jsp"></forward>
</action>
</action-mappings>

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



二、要实现的类
Action
package prj2_1;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import dao.StudentDao;

//Action:负责接受ActionForm的数据,处理
//1:必须继承org.apache.struts.action.Action
//2:重写execute方法来处理业务逻辑
//3:将这个类在配置文件中注册
public class QueryAction extends Action{

public QueryAction(){
System.out.println("QueryAction构造函数");
}
//ActionForward:封装了跳转目标的路径
//mapping:访问配置文件
//form:传过来的ActionForm对象
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
QueryForm queryForm = (QueryForm)form;
String sname = queryForm.getSname();
//String sname = request.getParameter("sname");
sname = new String(sname.getBytes("ISO-8859-1"));

StudentDao studentDao = new StudentDao();
ArrayList stus = studentDao.queryStuByName(sname);

request.setAttribute("stus", stus);

//跳转
//ActionForward af = new ActionForward("/queryResult.jsp");
ActionForward af = mapping.findForward("RESULT");
return af;
}


ActionForm (只要和jsp里面的form的属性一对一对应好就可以了)
package prj2_1;

import org.apache.struts.action.ActionForm;

//ActionForm:容纳表单提交的值
//1:必须继承 org.apache.struts.action.ActionForm
//2:必须编写和表单元素同名的属性
//3:必须在Struts配置文件中进行注册
public class QueryForm extends ActionForm{

public QueryForm(){
System.out.println("QueryForm构造函数");
}
private String sname;

public String getSname() {
return sname;
}

public void setSname(String sname) {
System.out.println("QueryForm setSname");
this.sname = sname;
}
}


三、Jsp的内容,注意query.do
    <form action="/Prj2_1/query.do" method="post">
请您输入学生姓名:<input name="sname">
<input type="submit" value="模糊查询">
</form>


四、小结
感觉上, 刚刚接触Struts,也不难,关键是要记好它的配置文件是怎样关联的。它的好处是可以把代码的耦合性减低,jsp_request, actionForm, action, jsp_forward几个都可以互不认识,只需要在struts-config.xml里面配置。代码维护起来比较方便。但还有一个问题,就是request里面的attribut的name还是存在某种程度的重合,如果可以在同一位置配置就更好了,不过这个不是Struts的问题,jsp开始就一直存在了,可能已经有解决方法,可能我还没有发现,哈。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值