一个Struts2的实例
对Web应用程序而言,需要跨越HTTP协议的两个障碍——无状态和基于文本。
在没有使用struts的时候,你会有一个很真切的体会,就是如何把html页面上的数据提交给后台处理,以什么格式提交?
这是个值得思索的问题。当然要是用Servlet就可以解决。但是在Servlet中要处理request中的各种参数。这些参数是String格式
要将这些String格式的数据转换成java中的类型。这是个枯燥且庞大的工程。
/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String userString=request.getParameter("username"); String password=request.getParameter("password"); PrintWriter out = response.getWriter(); out.println(userString); }
而使用了struts控件,就可以自动的获取前台html中的数据。并且可以自动的存储到javabean中。想想这是多么令人愉快的事情啊!
就Struts的配置来说还是非常简单的。首先在WebContent/WEB-INF/lib中导入必须的包
如图:
其次在web.xml中配置FilterDispatcher
<?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.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> </web-app>
然后配置struts.xml文件(struts.xml必须小写,而且必须放到src目录下)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="default" extends="struts-default"> <action name="LoginAction" class="action.LoginAction"> <result name="success">/success.jsp</result> </action> </package> </struts>
之后就是写action了。
package action; public class LoginAction { private String username; // 表单的请求参数被放入到动作(action)中名字匹配的属性上。(只要名字匹配,框架自动完成) 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(){ // 业务逻辑处理 return "success"; //返回控制字符串,已选择应该被呈现的结果页面。从struts.xml可以看出返回到success.html页面。 } }