struts1快速入门案例和细节说明
2013-12-12 13:06
429 查看
Struts 百度百科:是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于Java
EEWeb应用MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
为什么有Structs?
因为我们对mvc的理解不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和扩展。
struts运行原理图:
快速入门小案例,用struts实现用户登录
步骤如下:
1.需要structs1开发包
2.写出login.jsp
3.编写ActionFrom(用户表单)和Action(小队长----登录小队长)
4.配置structs-config.xml文件
5.写出welcome.jsp和error.jsp页面
6.在web.xml中配置ActionServlet
7.开始使用我们的structs
8.structs中文乱码问题>过滤器
第一步:新建一个web项目
第二步:写出login.jsp、err.jsp、ok.jsp三个页面
login页面的表单代码如下
第三步:创建两个包actions和forms,和分控制器servlet、FormBean
第四步:编写FormBean和LoginAction的代码
第五步:配置struts-config.xml文件
第五步:配置WEB-INF目录下的web.xml文件
这样就写完了一个struts版本的登录,但是存在一个中文乱码问题,在action中用request.setCharactEncoding("utf-8");不管用,因为先把数据填充到表单bean后才来调用action,要在填充的时候防乱码处理,所以这时候需要用到过滤器。
接下来示范如何配置一个过滤器
1.创建一个包然后新建一个过滤器Servlet
2.实现javax.servlet.Filter接口,重写接口的方法
3.配置web.xml文件
这样配置好了过滤器以后每一次请求servlet都会经过过滤器转换成中文,在填充FormBean前解决了中文乱码问题。
接下来是Servlet的一些细节:
疑问:表单bean的属性名是不是一定和控件名一样?
答:不一定,属性名不一样也能通过,但是get和set方法名字要和控件名对得上。get和set名首字母大写。
分控制器action和表单bean有对应关系,需要我们自己维护,要到structs-config.xml文件中配置action和actionForm和对应关系,跳转位置,一般放在web-inf目录下
mapping.findForward("")是转发,所以存到request中的属性能够在jsp页面得到
struts1的缺点:每个action都是单态,高并发时压力大,2.0会改进。 单态是指:在整个程序运行过程中,始终是一个对象。
struts-config文件路径:不一定非要放在web-inf,可以自己放置
问答题:在一个项目中,可不可以有多个struts-config配置文件呢?
答:可以有多个struts-config.xml文件,在web.xml中的配置如下:
多个路径参数值用逗号隔开。
EEWeb应用MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
为什么有Structs?
因为我们对mvc的理解不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和扩展。
struts运行原理图:
快速入门小案例,用struts实现用户登录
步骤如下:
1.需要structs1开发包
2.写出login.jsp
3.编写ActionFrom(用户表单)和Action(小队长----登录小队长)
4.配置structs-config.xml文件
5.写出welcome.jsp和error.jsp页面
6.在web.xml中配置ActionServlet
7.开始使用我们的structs
8.structs中文乱码问题>过滤器
第一步:新建一个web项目
第二步:写出login.jsp、err.jsp、ok.jsp三个页面
login页面的表单代码如下
第三步:创建两个包actions和forms,和分控制器servlet、FormBean
第四步:编写FormBean和LoginAction的代码
package com.zjj.forms; import org.apache.struts.action.ActionForm; /** * 用户表单,用于action填充数据 * @author * */ public class UserForm extends ActionForm{ //属性名有一个规范,属性名要和jsp页面的控件名一样 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; } }
package com.zjj.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.zjj.forms.UserForm; /** * 登录action分控制器 * @author * */ public class LoginAction extends Action{ //重写一个方法 //execute会被自动调用,类似于Servlet中的service()方法 @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //把form转换成对应的UserForm对象 UserForm userForm=(UserForm)form; request.setAttribute("userName", userForm.getUserName()); System.out.println("用户名:"+userForm.getUserName()); if("123".equals(userForm.getPassword())){ return mapping.findForward("ok"); }else{ return mapping.findForward("err"); } } }
第五步:配置struts-config.xml文件
第五步:配置WEB-INF目录下的web.xml文件
这样就写完了一个struts版本的登录,但是存在一个中文乱码问题,在action中用request.setCharactEncoding("utf-8");不管用,因为先把数据填充到表单bean后才来调用action,要在填充的时候防乱码处理,所以这时候需要用到过滤器。
接下来示范如何配置一个过滤器
1.创建一个包然后新建一个过滤器Servlet
2.实现javax.servlet.Filter接口,重写接口的方法
package com.zjj.filters; import java.io.IOException; import java.io.PrintWriter; 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.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class EncodingFilter extends HttpServlet implements Filter { public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub arg0.setCharacterEncoding("utf-8"); //设置编码方式 //arg1.setContentType("") arg2.doFilter(arg0, arg1); //继续前进 } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }
3.配置web.xml文件
这样配置好了过滤器以后每一次请求servlet都会经过过滤器转换成中文,在填充FormBean前解决了中文乱码问题。
接下来是Servlet的一些细节:
疑问:表单bean的属性名是不是一定和控件名一样?
答:不一定,属性名不一样也能通过,但是get和set方法名字要和控件名对得上。get和set名首字母大写。
分控制器action和表单bean有对应关系,需要我们自己维护,要到structs-config.xml文件中配置action和actionForm和对应关系,跳转位置,一般放在web-inf目录下
mapping.findForward("")是转发,所以存到request中的属性能够在jsp页面得到
struts1的缺点:每个action都是单态,高并发时压力大,2.0会改进。 单态是指:在整个程序运行过程中,始终是一个对象。
struts-config文件路径:不一定非要放在web-inf,可以自己放置
问答题:在一个项目中,可不可以有多个struts-config配置文件呢?
答:可以有多个struts-config.xml文件,在web.xml中的配置如下:
多个路径参数值用逗号隔开。
相关文章推荐
- Struts2系列:(24) 国际化(二)案例-快速入门
- Elasticsearch学习之快速入门案例
- Javaweb-AJAX快速入门及案例实战
- Hibernate01-快速入门案例
- Spring Boot 入门案例与配置说明
- Hbase 快速入门之 --案例讲解与表结构设计
- 快速入门GreenDao框架并实现增删改查案例
- Netty 快速入门系列 - Chapter 3 Netty5.x【第六讲】 -Netty5 案例
- 通过angularJS官方案例快速入门
- Gradle 教程说明 用户指南 第7章 构建Java工程----快速入门
- kafka快速入门,生产者与消费者案例
- Spring第二篇【Core模块之快速入门、bean创建细节、创建对象】
- 02SpringMvc_springmvc快速入门小案例(XML版本)
- 快速入门GreenDao框架并实现增删改查案例
- phantomjs快速入门和使用说明
- 表单验证插件jQuery.validate 介绍+快速入门案例
- reStructuredText(rst)快速入门语法说明
- Struts(2)Struts快速入门案例和使用filter配合Struts,解决中文乱码问题
- 百度上传组件web uploader介绍+快速入门案例