Struts学习总结

Struts学习总结:

 

1.struts:是一个框架(frameset),是基于mvcweb框架。

2struts的运行原理:

3.struts的开发步骤:

①:开发sttuts所需要的包。Struts 1.3.10

antlr-2.7.2.jar

bsf-2.3.0.jar

commons-beanutils-1.8.0.jar

commons-chain-1.2.jar

commons-digester-1.8.jar

commons-fileupload-1.1.1.jar

commons-io-1.1.jar

commons-logging-1.0.4.jar

commons-validator-1.3.1.jar

jstl-1.0.2.jar

oro-2.0.8.jar

standard-1.0.6.jar

struts-core-1.3.10.jar

struts-el-1.3.10.jar

struts-extras-1.3.10.jar

struts-faces-1.3.10.jar

struts-mailreader-dao-1.3.10.jar

struts-scripting-1.3.10.jar

struts-taglib-1.3.10.jar

struts-tiles-1.3.10.jar

②:先写出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=utf-8">

<title>Insert title here</title>

</head>

<body>

<form action="/strutsLogin/login.do" method="post">

用户名:<input type="text" name="username" />

<br />

密码:<input type="password" name="userpass">

<br>

<input type="submit" value="登录" />

</form>

</body>

</html>

③:编写ActionFormAction

package com.forms;

import org.apache.struts.action.ActionForm;

//这是一个用户表单,用来填充数据的

public class UserForm extends ActionForm {

//在这里定义属性的时候有一个规范,就是属性的名称一般和jsp页面的表单控件的名称一致。

//当然名称可以不一致,但是setXxxgetXxxXxx表示jsp控件名,必须一致。

private String username;

private String userpass;

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getUserpass() {

return userpass;

}

public void setUserpass(String userpass) {

this.userpass = userpass;

}

}

 

 

 

package com.actions;

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 com.forms.UserForm;

//这是一个action

public class LoginAction extends Action {

//重写execute方法:execute会被自动调用

@Override

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

//form转化成对应的UserForm对象

UserForm userForm=(UserForm) form;

System.out.println("用户名:"+userForm.getUsername());

System.out.println("密码:"+userForm.getUserpass());

//对数据进行简单校验

if("123".equals(userForm.getUserpass())){

return mapping.findForward("ok");

}else{

return mapping.findForward("error");

}

}

}

 

 

④:配置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>

  <!-- 在这里,name表示表单名,type表示表单的全路径 -->

  <form-bean name="UserForm" type="com.forms.UserForm"/>

  </form-beans>

  <!-- 配置action -->

  <action-mappings>

  <!-- path表示将来访问action的资源名 -->

  <!--  type:用于表示action的全路径-->

  <!--  name:用于关联某个表单-->

  <action path="/login" name="UserForm" type="com.actions.LoginAction">

  <!-- 在这里配置forward 跳转关系-->

  <!-- name:表示结果名称,path:表示跳转到那个页面 -->

  <forward name="ok" path="/ok.jsp"></forward>

  <forward name="error" path="/error.jsp"></forward>

  </action>

  </action-mappings>

 </struts-config>         

⑤:写出welcome.jsp

⑥:在web.xml中配置ActionServlet

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>strutsLogin</display-name>

  <welcome-file-list>

    <welcome-file>login.jsp</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  

  <servlet>

   <servlet-name>action</servlet-name>

   <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

   <!-- 配置struts -->

   <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>

</web-app>

⑦:开始使用我们的struts

⑧:struts中的乱码问题->过滤器。

package com.filters;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.annotation.WebFilter;

 

/**

 * Servlet Filter implementation class characterFilter

 */

@WebFilter("/characterFilter")

public class characterFilter implements Filter {

 

    /**

     * Default constructor. 

     */

    public characterFilter() {

        // TODO Auto-generated constructor stub

    }

 

/**

 * @see Filter#destroy()

 */

public void destroy() {

// TODO Auto-generated method stub

}

 

/**

 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)

 */

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

request.setCharacterEncoding("utf-8");

chain.doFilter(request, response);

response.setCharacterEncoding("utf-8");

}

 

/**

 * @see Filter#init(FilterConfig)

 */

public void init(FilterConfig fConfig) throws ServletException {

// TODO Auto-generated method stub

}

}

 

web.xml中配置过滤器:

<filter>

   <filter-name>characterFilter</filter-name>

   <filter-class>com.filters.characterFilter</filter-class>

  </filter>

  <filter-mapping>

   <filter-name>characterFilter</filter-name>

   <url-pattern>/*</url-pattern>

  </filter-mapping>

4.struts配置的一些细节:

①:在表单中,当发送一个请求时:

<form action=”http://loachost:8080/strutsLogin2/login.do”>,会自动添加协议,得到login.do,login.do去找到ActionServlet,ActionServlet去在config中找到资源,(反射机制)

②:

注意actionForm中的getset方法的命名:

③:struts-config.xml约定俗成的放在WEB-INF文件夹下,但可以根据自己的实际自己放置。

④:每个action都是单态,包括actionservlet

单态:在程序运行的整个过程中,始终是一个对象。

⑤:一个项目中可以有多个struts-config.xml,但里面的资源不能再相同,在web.xml中配置的时候:在第一个后面加逗号,再写上第二个配置文件

<servlet>

   <servlet-name>action</servlet-name>

   <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

   <!-- 配置struts -->

   <init-param>

   <param-name>config</param-name>

   <param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config2.xml</param-value>

   </init-param>

  </servlet>

  <servlet-mapping>

   <servlet-name>action</servlet-name>

   <url-pattern>*.do</url-pattern>

  </servlet-mapping>

 

5.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值