Struts是一个开源的web框架,框架提高了程序的规范的同时也约束了程序员的自由
为什么会有struts:因为我们对mvc理解的不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和扩展,所以我们有必要用一个统一的规范来开发项目(struts)
Struts 的好处: 程序更加规范化,开发效率提高了,可读性增加了,程序的可维护性增加了
运行原理:
一个请求从浏览器发送给web服务器,http://localhost:8080/web应用/action,web服务器首先解析主机à然后解析web应用的名称à在解析出资源名à转发给总司令ActionServlet(该类由struts框架提供给我们的无需编写,只需配置)àActionServlet有一个文件struts-config.xml,该文件配置了表单actionForm(军火库),还配置了action,以及他们之间的对应关系,当ActionServlet拿到命令后它会查询struts-config.xml文件去填充数据,把用户的数据填充到表单里边,à下个动作就是去调用指定的action(小队长),action去从表单中读取数据,à调用某个model(士兵,如service)完成任务,à完成任务把结果返回给ActionServlet总司令(返回一个执行的结果),–>总司令又去查询struts-config.xml文件,决定跳转到哪个jsp页面,à返回一个执行结果(形成静态html文件)à直接返回给web服务器à服务器再把静态页面以http响应给浏览器。
下面我们着手来写一个struts的登陆小项目。
登录小项目过程步骤: 新建web工程—>导入struts包—>编写login.jsp—>编写actionForm和action—>配置struts-config.xml—>编写ok.jsp和err.jsp —>配置web.xml —>测试
Struts.config.xml中的<action>中的scope指的是actionform的生命周期范围 struts中<action>的scope默认是session.
一、导入struts包。
我们把struts的jar文件拷贝到WEB-INF的lib文件夹下面,完成自动导入。
二、编写login.jsp文件。
在index.jsp里面添加:
<jsp:forward page=”/WEB-INF/login.jsp”></jsp:include>
在WEB-INF文件夹下面新建login.jsp文件。写入如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'login.jsp' starting page</title> </head> <body> <form action="/strutslogin/login.do" method="post"> U:<input type="text" name="username"/><br/> P:<input type="password" name="password"/> <input type="submit" value="login"/> </form> </body> </html> |
三、编写我们的ActionForm。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package com.lpq.forms; //这是一个用户表单,用于填充数据的 import org.apache.struts.action.ActionForm; public class UserForm extends ActionForm{ //定义属性【这里有个规范,就是我们定义属性名字的时候,应该和jsp页面的控件名称一样】 //实际上是和set方法/get方法保持一致。 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; } } |
四、编写我们的Action。单例的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package com.lpq.actions; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; 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 com.lpq.forms.UserForm; public class LoginAction extends Action{ //我们需要重写一个方法 //execute会被自动调用,有点类似servlet/service @Override public ActionForward execute(ActionMapping mapping, ActionForm form, ServletRequest arg2, ServletResponse arg3) throws Exception { UserForm userForm = (UserForm)form; // System.out.println("用户名="+userForm.getUsername()); if("123".equals(userForm.getPassword())){ return mapping.findForward("ok"); }else{ return mapping.findForward("err"); } } } |
五、配置struts-config.xml。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?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> <!-- name是表单名字,可以随意写,但是我们建议取名规范,表单类名小写 --> <!-- type用于指定表单类全路径 --> <form-bean name="userForm" type="com.lpq.forms.UserForm"/> </form-beans> <action-mappings> <!-- 配置具体的一个action path:表示将来访问该action的资源名 --> <!-- name:用于关联某个表单 --> <!-- path:用于指定该action类的全路径 --> <!-- scope 默认session session.setAttribute('userForm',userForm) --> <action path="/login" name="userForm" type="com.lpq.actions.LoginAction"> <!-- 这里配置跳转关系 --> <!-- name 表示结果名称path:转发到哪个页面 --> <forward name="ok" path="/WEB-INF/wel.jsp"/> <forward name="err" path="/WEB-INF/err.jsp"/> </action> </action-mappings> </struts-config> |
六、编写ok.jsp和err.jsp 。
略
七、配置web.xml 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <display-name /> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> |
除非注明,Coder文章均为原创,转载请以链接形式标明本文地址