Struts 笔记1

xiaoxiao2026-08-24  11

最近开始学习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开始就一直存在了,可能已经有解决方法,可能我还没有发现,哈。 相关资源:传智播客struts2全程学习笔记
转载请注明原文地址: https://www.6miu.com/read-5051778.html

最新回复(0)