Struts1入门级程序hello world(解决struts1中文乱码)

Struts1入门之hello world

    这是我最近学习struts1后,做的一个小demo,在此整理和总结一下。

IDE工具:eclipse

准备工作:

建项目:新建 Dynamic Web Project

导包:引入struts1对应的jar包到lib目录下

创建package:action 和 form

创建class:在action包下创建HelloWorldAction 和 在form包下创建HelloWorldForm

创建xml配置文件:在WEB-INF下创建struts-config.xml 和web.xml

创建jsp:在WebContent下创建index.jsp 和 helloWorld.jsp

如图所示:


代码如下:

HelloWorldAction:

package action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import form.HelloWorldForm;

public class HelloWorldAction extends DispatchAction{
    
    public ActionForward toHello(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        HelloWorldForm hf = (HelloWorldForm)form;
        String m = hf.getMsg();
        request.setAttribute("msg", m);
        return mapping.findForward("hello");
    }
}

HelloWorldForm:

package form;

import org.apache.struts.action.ActionForm;

public class HelloWorldForm extends ActionForm{
    
    private String msg;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
    
}
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
  	<form-beans>
        <form-bean name="helloWorldForm" type="form.HelloWorldForm" />
    </form-beans>
    <action-mappings>
       <action  path="/helloWorld" name="helloWorldForm"  type="action.HelloWorldAction" scope="request" 
       parameter="method">
         <forward name="hello" path="/helloWorld.jsp" />
       </action>
    </action-mappings>
</struts-config>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" 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">
<display-name>helloworld</display-name>
  <welcome-file-list>
    <welcome-file>index.html</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>
	    <init-param>
	        <param-name>config</param-name>
	        <param-value>/WEB-INF/struts-config.xml</param-value>
	    </init-param>
	    <load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
	    <servlet-name>action</servlet-name>
	    <url-pattern>*.do</url-pattern>
	</servlet-mapping>
</web-app>

index.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>
<h1>调用action方法跳转到helloWorld.jsp</h1>
    <form action="helloWorld.do?method=toHello" method="post">
        输入传递信息:<input type="text" name="msg"/>
        <input type="submit" value="发送"/>
    </form>
</body>
</html>

helloWorld.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">
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>hello world</h1>
    <!-- 使用bean标签输出上个页面传过来的name属性的值 -->
    <h5>bean标签输出:<bean:write name="helloWorldForm" property="msg"/></h5>
    
    <!-- 也可以直接用${msg}输出 -->
    <h5>EL表达式输出:${msg}</h5>
</body>
</html>

到此时struts1的hello world小demo就完成了。

不过传值的时候会发生中文乱码,解决方法就是创建一个过滤器拦截,并设置编码格式为UTF-8即可。

修改web.xml:在其中添加一个过滤器,放在<web-app></web-app>标签中间

<!-- 设置过滤器解决中文乱码 -->
	<filter>
	<filter-name>encoding</filter-name>
	<filter-class>filter.EncodingFilter</filter-class>
	</filter>
	<filter-mapping>
	<filter-name>encoding</filter-name>
	<url-pattern>/*</url-pattern>
	</filter-mapping>

创建一个filter包,其中新建EncodingFilter类:

package filter;

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;

public class EncodingFilter implements Filter{

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
		arg0.setCharacterEncoding("UTF-8");
		arg2.doFilter(arg0, arg1);
		
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

}


成功运行此demo时,说明你已经入门了struts1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值