Struts学习笔记(一)

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
1、Struts必备的9个jar包,放入lib目录下。
commons-fileupload.jar
commons-io.jar
commons-logging.jar
commons-lang.jar
javassist.jar
ognl.jar
struts2-core.jar
xwork-core.jar
freemaker.jar
2、完成用户登陆的功能
1)首先编写一个登陆页面login.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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="">
user:<input type="text" name="user">
password:<input type="text" name="password">
<input type="submit" value="submit">
</form>
</body>
</html>
2)要将struts融入应用当中,首先我们需要修改web.xml文件。Struts是通过过滤器的机制将框架融入应用中。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></span>
</filter>

<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern></span><!-- 过滤url的模式,*表示对所有的请求进行过滤 -->
</filter-mapping>

</web-app>
3)接下来配置struts自己的一个文件,即struts.xml放在src目录下。新建的struts.xml文件会自动拷贝到build的classes文件下。访问的时候返回该目录下的文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!--dtd文件中包含了该文档的效验规则,即书写规则  -->
<package name="struts2" extends="struts-default">
<span style="color:#FF0000;"><action name="login" class="***.LoginAction"></span>
</action>
</package>
</struts>
4)再写具体的action类,这里面即LoginAction
public class LoginAction {
private String username;
private String password;
public String getUsername() {
	return username;
}
public void setUsername(String username) {
	this.username = username;
}
public String getPassword() {
	return password;
}
public void setPassword(String password) {
	this.password = password;
}
public String execute()//为什么要写execute()方法?
{
	return "success";
}
}
5)写完对应的类的时候,我们在login.jsp中加入action="login",再编辑struts.xml下的<action></action>
<action name="login" class="cn.sict.struts.LoginAction">
    <result name="success"></result>
 </action>
6)在login.jsp页面中添加action="login"。
<form action="login" method="post">
7)新建结果页面result.jsp显示用户名和密码
<body>
   username:${requestScope.username}<br>
   password:${requestScope.password}
   </body>
8)在struts.xml文件中加入显示结果页面
 <result name="success">/result.jsp</result>
struts.xml配置完之后的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
	<struts>
	<package name="struts2" extends="struts-default">
	<action name="login" class="cn.sict.struts2.LoginAction">
	<result name="success">/result.jsp</result>
	</action>
	</package>
	</struts>
第一个登陆程序到此为止。
对于struts框架来说,程序中最重要的就是struts.xml文件,它描述了整个程序的执行过程。
1、从登陆界面开始,与一般的jsp不同的地方就是action="login",这里面会默认是(login.action),如果没有自动添加.action。
2、页面所发送的请求,会被struts的过滤器接收到(充当controller的角色)。然后会到struts.xml文件中寻找相应的action,去匹配每个action的名字。匹配到之后,由相应的class类来处理相应的请求。
3、在本例中,首先在文本框username和password中填入相应的信息,提交信息之后,程序会自动调用set方法,将信息传递给与页面标签名字username和password相一致的成员变量username、password当中,并将相应的信息放在request作用域中。因此,在result.jsp中可以直接ruquestScope取出相应的值。
4、set方法调用完毕之后,立刻执行execute()方法。在本例中直接返回“success”。
5、return之后,在struts中对应的action中寻找result name为success的标签,对应执行相应的result.jsp页面。

struts.xml文件中的package类似于java包,起到分门别类的作用,name与项目名称无关。
extends="struts-default"中的extends类似于继承的意思。继承了struts-default package,具有struts-default的功能。


 
 









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值