Struts1进阶(一)

来源:互联网 发布:淘宝店铺文案 编辑:程序博客网 时间:2024/04/29 06:31

Struts1入门之后,我们来一步一步深入地学习Struts1。这是Struts1的进阶一。
web应用程序若要严格按照MVC设计模式,那么所有客户端的请求都需要发送给servlet处理,servlet再转发到JSP显示。因此,对于Struts1入门中的用户注册案例,register.jsp页面要禁止用户直接访问,而应把它放在WEB-INF目录中保护起来,传统做法是由用户访问servlet后,servlet再转发到register.jsp页面上。
现在我们索性把register.jsp和error.jsp页面都保护起来,即把他俩放在WEB-INF目录中,如下图:
这里写图片描述
要使用Struts的做法,就应该将Struts的配置文件——struts-config.xml修改为:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts-config PUBLIC          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"          "http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config>    <form-beans>        <form-bean name="registerForm" type="cn.itcast.web.formbean.RegisterFormBean"></form-bean>    </form-beans>    <!-- Struts在调用RegisterAction的时候,它会把所有<action>...</action>中的配置信息封装到actionmapping对象中 -->    <action-mappings>    <!-- Struts收到register请求的时候,将把请求中的所有数据封装到registerForm对象中 -->        <action path="/register"                 name="registerForm"                 type="cn.itcast.web.action.RegisterAction"                scope="request"                attribute="liayun"                parameter="method">            <forward name="message" path="/message.jsp" />        </action>        <action path="/registerUI" forward="/WEB-INF/jsp/register.jsp"></action>        <action path="/error" unknown="true" forward="/WEB-INF/jsp/error.jsp"></action>    </action-mappings>    <!-- 配置请求处理器,Struts1.2采用的请求处理器是RequestProcessor -->    <controller processorClass="org.apache.struts.action.RequestProcessor"></controller></struts-config>

这样当用户浏览网站首页时,点击注册超链接,就会跳转到register.jsp页面上来。
还记得我们网站首页index.jsp是怎样挂注册超链接的吗?不记得的话,我再写一遍:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>首页</title></head><body>    <a href="${pageContext.request.contextPath }/registerUI.do">注册</a></body></html>

Struts这个框架给我们提供了一个<html:link>标签,它就可以代替我们平常所写的超链接。使用<html:link>标签的好处有:

  • 使用<html:link action=“/action” />不用关心web应用程序的名称。
  • 可以自动附加jsessionid参数进行url重写。
  • 可以对参数信息进行url编码。

<html:link>标签附件参数常用属性有:paramID、paramName、name、property。

  • 如若我们使用<html:link>这个标签代替平常所写的超链接,并且在超链接后面附带有一个参数,必须这样写:

    <%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>首页</title></head><body>    <%          // request.setAttribute("name", "liayun");        request.setAttribute("name", "中国");    %>                                              <!-- 以name为关键字从request域里面检索出该关键字对应的值 -->    <html:link action="/registerUI" paramId="name" paramName="name">注册</html:link></body></html>

    注意:要使用<html:link>标签,千万不要忘了这句代码:

    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
  • 如若我们使用<html:link>这个标签代替平常所写的超链接,并且要在超链接后面附带有多个参数,必须这样写:

    <%@page import="java.util.HashMap"%><%@page import="java.util.Map"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>首页</title></head><body>    <%          Map map = new HashMap();        map.put("name", "aaa");        map.put("password", "123");        request.setAttribute("map", map);           %>    <html:link action="/registerUI" name="map">注册</html:link></body></html>
0 0
原创粉丝点击